====== pears.TimesheetDayHours ====== Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace. ===== Original SQL ===== create function "pears"."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