====== pears.AWRGap ======
Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
===== Original SQL =====
create function "pears"."AWRGap"(
/* Application Maintained Function / Procedure - DO NOT EDIT*/
in "jobmasterid" char(20),in "WeekNo" integer,in "VacID" char(20),in "PersID" char(20),in "PlacID" char(20),in "ShiftID" char(20) )
returns integer
begin
declare "rv" integer;
declare "AWRStat" integer;
declare "AWRLink" char(20);
declare "LastRec" integer;
declare "LastWork" integer;
declare "pid" char(20);
set "rv" = 0;
-- check role qualified
-- check temp directly employed
if "nullif"("jobmasterid",'') is not null then
select "AWRStatus","AWRLinkCode","personid" into "AWRStat",
"AWRLink","pid" from "AWRJobMaster" where "AWRJobMasterID" = "jobmasterID";
if "AWRStat" = 3 then
return "rv"
end if;
if exists(select * from "person" where "personid" = "pid" and "isnull"("directlyemployed",0) >= 1) then
return "rv"
end if;
-- find most recent work
with
"V"( "Rec" ) as(select "max"("period") from "AWRWeeklyDetail" where "AWRJobMasterID" = any(select "AWRJobMasterID" from "AWRJobMaster" where "AWRLinkCode" = "AWRLink") and "qualtype" = 2 and "isnull"("disregard",0) = 0 and "period" <= "WeekNo" union all
select "max"("period") from "AWRWeeklyDetail" where "personid" = "pid" and "isnull"("disregard",0) = 0 and "period" <= "WeekNo" and "QualType" = 2)
select "max"("Rec") into "LastWork" from "V";
if "LastWork" is not null then
if "truncnum"("LastWork",-2)/100 = "truncnum"("WeekNo",-2)/100 then
set "rv" = "WeekNo"-"LastWork" //same year
else set "rv" = "datediff"("week","weekmonthenddate"("LastWork",'W'),"weekmonthenddate"("WeekNo",'W')) //different year
end if
end if;
-- subtract pauses since
select "count"(distinct "period") into "LastRec" from "AWRWeeklyDetail" where(("personid" = "pid") or("companyid" = any(select "companyid" from "AWRJobMaster" key join "vacancy" key join "employment" where "AWRLinkCode"
= "AWRLink"))) and "QualType" = 1 and "isnull"("disregard",0) = 0 and "period" <= "WeekNo" and "period" > "LastWork";
set "rv" = "rv"-"LastRec"
end if;
return "rv"
end