====== pears.NetClientAddShiftsWeek ======
Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
===== Original SQL =====
create procedure "pears"."NetClientAddShiftsWeek"( in "pWebUserID" char(20),in "pvacancyid" char(20),in "pshifttemplateid" char(20),in "pstartdate" char(25),in "penddate" char(25) default '',
in "ptimefrom" char(25) default null,in "ptimeto" char(25) default null,in "pBreak" char(20) default null,in "pTheirRef" char(50) default null,
in "pDescription" long varchar default null,in "pSkills" char(100) default null,in "pGrade" char(50) default null,in "pNote" char(50) default null,
in "pTitle" char(100) default null,in "pMonday" char(10) default null,in "pTuesday" char(10) default null,in "pWednesday" char(10) default null,in "pThursday" char(10) default null,
in "pFriday" char(10) default null,in "pSaturday" char(10) default null,in "pSunday" char(10) default null,
in "pOrderReason" char(50) default null )
result( "pResult" char(250) )
begin
declare "swebusername" char(50);
declare "sid" char(20);
declare "cnt" integer;
declare "idow" integer;
declare "ddate" date;
declare "dstart" date;
declare "dend" date;
declare "tfrom" time;
declare "tto" time;
declare "ibreak" integer;
declare "CanAuthorise" smallint;
declare local temporary table "IDs"(
"ID" char(20) null,
) not transactional;
insert into "IDs"( "ID" )
select distinct "e"."companyid" from "iqxnetuserlink" as "l" key join "employment" as "e" where "l"."iqxnetuserid" = "pWebUserID";
if not "pvacancyid" = any(select "v"."vacancyid" from "vacancy" as "v" key join "employment" as "e" join "IDs" on "e"."companyid" = "IDs"."ID") then
select '99:~Permission denied';
return
end if;
if "IQXNetHasPermission"("pWebUserID",'ORDERJOBS') = 0 then
select '99:~Permission denied';
return
end if;
set "swebusername" = (select "name" from "iqxnetuser" where "iqxnetuserid" = "pwebuserid");
set "dstart" = "iqxnetstringtodate"("pstartdate");
if "dstart" is null then
select '500:~Invalid start date';
return
end if;
set "dend" = "iqxnetstringtodate"("penddate");
if "dend" is null then
set "dend" = "dstart"+6
end if;
set "tfrom" = "iqxnetstringtotime"("ptimefrom");
if "tfrom" is null then
select '500:~Invalid start time';
return
end if;
set "tto" = "iqxnetstringtotime"("ptimeto");
if "tto" is null then
select '500:~Invalid end time';
return
end if;
set "ibreak" = "isnull"("iqxnetstringtointeger"("pbreak"),0);
set "CanAuthorise" = "IQXNetHasPermission"("pWebUserID",'AUTHORISEJOBS');
set "ddate" = "dstart";
while "ddate" <= "dend" loop
set "idow" = "dow"("ddate");
case "idow"
when 1 then set "cnt" = "isnull"("iqxnetstringtointeger"("psunday"),0)
when 2 then set "cnt" = "isnull"("iqxnetstringtointeger"("pmonday"),0)
when 3 then set "cnt" = "isnull"("iqxnetstringtointeger"("ptuesday"),0)
when 4 then set "cnt" = "isnull"("iqxnetstringtointeger"("pwednesday"),0)
when 5 then set "cnt" = "isnull"("iqxnetstringtointeger"("pthursday"),0)
when 6 then set "cnt" = "isnull"("iqxnetstringtointeger"("pfriday"),0)
when 7 then set "cnt" = "isnull"("iqxnetstringtointeger"("psaturday"),0)
end case;
while "cnt" > 0 loop
set "sid" = "uniquekey"("cnt");
insert into "tempshiftplan"( "TempShiftPlanID","VacancyID","TimeFrom","TimeTo","BreakMinutes","ShiftDate","Moveable","Description","ClientNote","EssentialSkill","EssentialSkillChoiceList","EssentialSkillGradeID","ReferenceCode","ReferenceRequired","ClientMustConfirm","TempMustConfirm","OrderedBy","TempShiftTypeID","AnalysisCode","RecoveryHours","TempShiftOrderReasonID" )
select "sid","pvacancyid","tfrom","tto","ibreak","ddate","Moveable","pDescription","pNote","string"("taglocation",';',"tagid",';',"tagchoiceid",';',"gradetagid"),"replace"("pskills","char"(9),';'),"pgrade","ucase"("pTheirRef"),"ReferenceRequired","ClientMustConfirm","TempMustConfirm","sWebUserName","TempShiftTypeID","AnalysisCode","RecoveryHours","nullif"("pOrderReason",'')
from "tempshifttemplate" where "tempshifttemplateid" = "pshifttemplateid";
call "NetSetShiftPlanCascade"("sid");
if "CanAuthorise" = 0 then
insert into "tempshift"( "tempshiftid","vacancyid","shiftdate","timefrom","timeto","state","tempshiftplanid","cancelreason" ) values
( "sid","pvacancyid","ddate","tfrom","tto",'C',"sid",'~' )
end if;
set "cnt" = "cnt"-1
end loop;
set "ddate" = "dateadd"("day",1,"ddate")
end loop;
if "CanAuthorise" = 1 then
call "IQXNetPopup"("pWebUserID",null,null,"pvacancyid",null,null,'ADDSHIFTS','New shift requirement(s) added',null)
end if;
select '0:~Success'
end
go
COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetClientAddShiftsWeek" IS
{create procedure pears."NetClientAddShiftsWeek"( in "pWebUserID" char(20),in "pvacancyid" char(20),in "pshifttemplateid" char(20),in "pstartdate" char(25),in "penddate" char(25) default '',
in "ptimefrom" char(25) default null,in "ptimeto" char(25) default null,in "pBreak" char(20) default null,in "pTheirRef" char(50) default null,
in "pDescription" long varchar default null,in "pSkills" char(100) default null,in "pGrade" char(50) default null,in "pNote" char(50) default null,
in "pTitle" char(100) default null,in "pMonday" char(10) default null,in "pTuesday" char(10) default null,in "pWednesday" char(10) default null,in "pThursday" char(10) default null,
in "pFriday" char(10) default null,in "pSaturday" char(10) default null,in "pSunday" char(10) default null,
in "pOrderReason" char(50) default null )
result( "pResult" char(250) )
begin
declare "swebusername" char(50);
declare "sid" char(20);
declare "cnt" integer;
declare "idow" integer;
declare "ddate" date;
declare "dstart" date;
declare "dend" date;
declare "tfrom" time;
declare "tto" time;
declare "ibreak" integer;
declare "CanAuthorise" smallint;
declare local temporary table "IDs"(
"ID" char(20) null,
) not transactional;
insert into "IDs"( "ID" )
select distinct "e"."companyid" from "iqxnetuserlink" as "l" key join "employment" as "e" where "l"."iqxnetuserid" = "pWebUserID";
if not "pvacancyid" = any(select "v"."vacancyid" from "vacancy" as "v" key join "employment" as "e" join "IDs" on "e"."companyid" = "IDs"."ID") then
select '99:~Permission denied';
return
end if;
if "IQXNetHasPermission"("pWebUserID",'ORDERJOBS') = 0 then
select '99:~Permission denied';
return
end if;
set "swebusername" = (select "name" from "iqxnetuser" where "iqxnetuserid" = "pwebuserid");
set "dstart" = "iqxnetstringtodate"("pstartdate");
if "dstart" is null then
select '500:~Invalid start date';
return
end if;
set "dend" = "iqxnetstringtodate"("penddate");
if "dend" is null then
set "dend" = "dstart"+6
end if;
set "tfrom" = "iqxnetstringtotime"("ptimefrom");
if "tfrom" is null then
select '500:~Invalid start time';
return
end if;
set "tto" = "iqxnetstringtotime"("ptimeto");
if "tto" is null then
select '500:~Invalid end time';
return
end if;
set "ibreak" = "isnull"("iqxnetstringtointeger"("pbreak"),0);
set "CanAuthorise" = "IQXNetHasPermission"("pWebUserID",'AUTHORISEJOBS');
set "ddate" = "dstart";
while "ddate" <= "dend" loop
set "idow" = "dow"("ddate");
case "idow"
when 1 then set "cnt" = "isnull"("iqxnetstringtointeger"("psunday"),0)
when 2 then set "cnt" = "isnull"("iqxnetstringtointeger"("pmonday"),0)
when 3 then set "cnt" = "isnull"("iqxnetstringtointeger"("ptuesday"),0)
when 4 then set "cnt" = "isnull"("iqxnetstringtointeger"("pwednesday"),0)
when 5 then set "cnt" = "isnull"("iqxnetstringtointeger"("pthursday"),0)
when 6 then set "cnt" = "isnull"("iqxnetstringtointeger"("pfriday"),0)
when 7 then set "cnt" = "isnull"("iqxnetstringtointeger"("psaturday"),0)
end case;
while "cnt" > 0 loop
set "sid" = "uniquekey"("cnt");
insert into "tempshiftplan"( "TempShiftPlanID","VacancyID","TimeFrom","TimeTo","BreakMinutes","ShiftDate","Moveable","Description","ClientNote","EssentialSkill","EssentialSkillChoiceList","EssentialSkillGradeID","ReferenceCode","ReferenceRequired","ClientMustConfirm","TempMustConfirm","OrderedBy","TempShiftTypeID","AnalysisCode","RecoveryHours","TempShiftOrderReasonID" )
select "sid","pvacancyid","tfrom","tto","ibreak","ddate","Moveable","pDescription","pNote","string"("taglocation",';',"tagid",';',"tagchoiceid",';',"gradetagid"),"replace"("pskills","char"(9),';'),"pgrade","ucase"("pTheirRef"),"ReferenceRequired","ClientMustConfirm","TempMustConfirm","sWebUserName","TempShiftTypeID","AnalysisCode","RecoveryHours","nullif"("pOrderReason",'')
from "tempshifttemplate" where "tempshifttemplateid" = "pshifttemplateid";
call "NetSetShiftPlanCascade"("sid");
if "CanAuthorise" = 0 then
insert into "tempshift"( "tempshiftid","vacancyid","shiftdate","timefrom","timeto","state","tempshiftplanid","cancelreason" ) values
( "sid","pvacancyid","ddate","tfrom","tto",'C',"sid",'~' )
end if;
set "cnt" = "cnt"-1
end loop;
set "ddate" = "dateadd"("day",1,"ddate")
end loop;
if "CanAuthorise" = 1 then
call "IQXNetPopup"("pWebUserID",null,null,"pvacancyid",null,null,'ADDSHIFTS','New shift requirement(s) added',null)
end if;
select '0:~Success'
end
}