pears.TimesheetDayHours

Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.

COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."TimesheetDayHours" IS 
{CREATE FUNCTION TimesheetDayHours 
 
/* Application Maintained Function / Procedure - DO NOT EDIT*/
 
(IN bprocess tinyint,IN bprovisional tinyint,IN tsid CHAR(20),IN pdate DATE)
RETURNS DOUBLE
BEGIN
  DECLARE rv DOUBLE;
  DECLARE placid CHAR(20);
  DECLARE vacid CHAR(20);
  DECLARE persid CHAR(20);
  DECLARE desktype CHAR(1);
  DECLARE b tinyint;
  DECLARE d SMALLINT;
  DECLARE d1 DATE;
  DECLARE d2 DATE;
  IF isnull(bprocess,0) = 0 OR isnull(bprovisional,0) = 0 THEN -- only do provisionals at present
    RETURN NULL
  END IF;
  SELECT FIRST t.placementid,t.vacancyid,t.personid,d.desktype INTO placid,vacid,persid,desktype FROM tempprovtimesheet AS t KEY JOIN tempdesk AS d WHERE t.tempprovtimesheetid = tsid;
  IF desktype = 'M' THEN
    RETURN NULL
  END IF;
  IF desktype = 'S' THEN
    SELECT SUM(getshiftlength(timefrom,timeto,breakminutes)) INTO rv FROM tempshift WHERE state IN( 'P','B') AND shiftdate = pdate AND personid = persid AND vacancyid = vacid
     AND  (( isnull( placementid, '') = isnull(placid, '') ) OR ( isnull(placementid, '')='' ));
    RETURN rv
  ELSE
    SELECT FIRST e.startdate,e.leavedate INTO d1,d2 FROM placement AS p KEY JOIN employment AS e WHERE p.placementid = placid;
    IF pdate < d1 THEN
      RETURN NULL
    END IF;
    IF pdate > d2 THEN
      RETURN NULL
    END IF;
    SELECT FIRST v.WorkCancelled,v.WorkHours INTO b,rv FROM PlacementDayVariation AS v WHERE v.placementid = placid AND v.VariationDate = pdate;
    IF b = 1 THEN
      RETURN NULL
    END IF;
    IF rv IS NOT NULL THEN
      RETURN rv
    END IF;
    SET d=dow(pdate)-1;
    SELECT(CASE d WHEN 0 THEN worksunday WHEN 1 THEN workmonday WHEN 2 THEN worktuesday WHEN 3 THEN workwednesday WHEN 4 THEN workthursday WHEN 5 THEN workfriday WHEN 6 THEN worksaturday END),
      worknormalhours INTO b,rv FROM placement WHERE placementid = placid;
    IF b = 1 THEN
      RETURN rv
    END IF
  END IF;
  RETURN NULL
END
}
  • database/procedures/pears_timesheetdayhours.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1