====== pears.GetPersonAvailState ====== Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace. ===== Original SQL ===== COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."GetPersonAvailState" IS {create function GetPersonAvailState /* Application Maintained Function / Procedure - DO NOT EDIT*/ (in sid char(20),in ddate date) returns char(1) begin declare rv char(1); declare empid char(20); declare so smallint; declare dw SmallInt; declare Temp TinyInt; declare Wsun TinyInt; declare WMon TinyInt; declare WTue TinyInt; declare WWed TinyInt; declare WThu TinyInt; declare WFri TinyInt; declare WSat TinyInt; set rv=null; select first state, (case state when 'P' then 0 when 'B' then 2 when 'W' then 3 when 'H' then 4 when 'U' then 5 else 6 end) as sortorder into rv,so from tempshift where personid = sid and shiftdate = ddate and state <> 'C' order by sortorder asc; if rv is null or rv = 'A' then set empid=null; set dw = dow (ddate); select first employmentid, Temp into empid , temp from employment where isnull(concurrent,0) = 0 and personid = sid and startdate <= ddate and(leavedate is null or leavedate >= ddate); if empid is not null then if temp=0 then return 'W' end if; select isnull(WorkSunday,0), isnull(WorkMonday,0), isnull(WorkTuesday,0), isnull(WorkWednesday,0), isnull(WorkThursday,0), isnull(WorkFriday,0), isnull(WorkSaturday,0) into wSun, WMon, WTue, WWed, WThu, WFri, WSat from employment key join placement where placement.employmentid =empid; IF (wsun is null) or ((wsun+wmon+wTue+wWed+wThu+wFri+wSat)=0) or ( (wsun=1 and dw=1) or (wMon=1 and dw=2) or (wTue=1 and dw=3) or (wWed=1 and dw=4) or (wThu=1 and dw=5) or (wFri=1 and dw=6) or (wsat=1 and dw=7)) then return 'W' end if; end if end if; return rv; end }