====== pears.GetShiftStateDescription ======
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"."GetShiftStateDescription" IS
{create function GetShiftStateDescription
/* Application Maintained Function / Procedure - DO NOT EDIT*/
( in sid char(20),in ddate date,in bperson smallint )
returns char(70)
begin
declare rv char(70);
declare t char(70);
declare tt char(70);
declare s char(20);
declare s1 char(1);
-- bperson=2 means same as 1 but full description for Available and Unavailable
if bperson = -1 then
return getshiftstatedescriptionPlus(sid,ddate)
else if bperson >= 1 then
set rv = getkeyshiftstate(sid,ddate,1)
else
set rv = getkeyshiftplanstate(sid,ddate,bperson)
end if end if;
set s1 = left(rv,1);
if length(rv) > 1 and s1 in( 'P','B','W','E','X','Y' ) then
set s = stuff(rv,1,1,null);
set t = null;
if bperson >= 1 then
if s1 = 'E' then -- Employment NOT Shift record
select company.name into t from employment key join company where employment.employmentid = s
else
if s1 in( 'X','Y' ) then -- Plan - Y indicates cascaded
select isnull(person.name,company.name) into t from tempshiftplan key join vacancy key join employment key join company,vacancy key left outer join person where tempshiftplan.tempshiftplanid = s
else
select isnull(person.name,company.name) into t from tempshift key join vacancy key join employment key join company,vacancy key left outer join person where tempshift.tempshiftid = s
end if
end if
else if s1 not in( 'X','Y' ) then
select gettempname(tempshift.personid) into t from tempshift where tempshift.tempshiftid = s
end if end if;
set rv = string(s1,t)
end if;
if s1 in( 'A','U' ) and bperson >= 1 then
set s = nullif(stuff(rv,1,1,null),'');
if s1 = 'A' then
select string('Available ',a.availtemplateid),string('A: ',a.name,' ',dateformat(a.timefrom,'hh:nn'),'-',dateformat(a.timeto,'hh:nn'))
into t,tt from tempshift as sh key join availabilitytemplate as a where sh.tempshiftid = s;
set t = isnull(t,'Available')
else
set t = 'Unavailable';
select string('U: ',u.name) into tt from tempshift as sh key join tempshiftunavailablereason as u where bperson = 2 and sh.tempshiftid = s
end if;
if bperson = 2 and tt is not null then
set rv = tt
else
set rv = t
end if
end if;
return rv
end
}