====== pears.NetClientAddSingleShift ====== Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace. ===== Original SQL ===== create procedure "pears"."NetClientAddSingleShift"( in "pWebUserID" char(20),in "pvacancyid" char(20),in "pshifttemplateid" char(20),in "pdate" date, 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 "pLocation" char(50) default null,in "pPONumber" char(50) default null,in "pNote" char(50) default null,in "pQty" char(20) default null, in "pOrderReason" char(50) default null,in "pSkills" char(100) default null,in "pGrade" char(50) default null,in "pCanAuthorise" smallint default 0 ) result( "pResult" char(255) ) // IQXWeb begin declare "sid" char(20); declare "cnt" integer; declare "tfrom" time; declare "tto" time; declare "ibreak" integer; declare "isReasonCompulsory" integer; declare "RefNote" char(50); declare "WebUser" char(60); declare "TempShiftTemplateID" char(20); declare "NewState" char(5); if "pTheirRef" <> '' then set "RefNote" = "ucase"("pTheirRef") else set "RefNote" = "pPONumber" end if; if "isnull"("pNote",'') = '' then set "pNote" = "pLocation" end if; if "pdate" is null then select '101:~pDate is null'; return end if; set "cnt" = "isnull"("iqxnetstringtointeger"("pqty"),0); if "cnt" <= 0 then select '102:~Quantity is 0'; return end if; set "tfrom" = "iqxnetstringtotime"("ptimefrom"); set "tto" = "iqxnetstringtotime"("ptimeto"); set "ibreak" = "iqxnetstringtointeger"("pbreak"); -- If times and break not supplied they will come from the template set "WebUser" = (select top 1 "name" from "iqxnetuser" where "iqxnetuserid" = "pWebUserID"); set "NewState" = 'C'; while "cnt" > 0 loop set "sid" = "uniquekey"("cnt"*"rand"()*10); set "isReasonCompulsory" = (select first "ShiftOrderReasonRequired" from "TempShiftTemplate" where "TempShiftTemplateID" = "pshifttemplateid"); if "pOrderReason" = '' and "isReasonCompulsory" = 1 then select '105~Reason is compulsory'; return end if; insert into "tempshiftplan"( "TempShiftPlanID","VacancyID","TimeFrom","TimeTo","BreakMinutes","ShiftDate","Moveable","Description","ClientNote", "EssentialSkill","EssentialSkillChoiceList","EssentialSkillGradeID", "ReferenceCode","ReferenceRequired", "ClientMustConfirm","TempMustConfirm","OrderedBy","TempShiftTypeID","AnalysisCode","RecoveryHours","TempShiftOrderReasonID","TempShiftTemplateID" ) select top 1 "sid","pvacancyid","isnull"("tfrom","timefrom"),"isnull"("tto","timeto"),"isnull"("ibreak","breakminutes"),"pdate","Moveable","Description","pNote", "string"("taglocation",';',"tagid",';',"tagchoiceid",';',"gradetagid"),"replace"("pskills","char"(9),';'),"isnull"("pgrade","EssentialSkillGradeID"), "RefNote","ReferenceRequired", "ClientMustConfirm","TempMustConfirm","WebUser","TempShiftTypeID","AnalysisCode","RecoveryHours","nullif"("pOrderReason",''),"pShiftTemplateID" from "tempshifttemplate" where "tempshifttemplateid" = "pshifttemplateid"; call "NetSetShiftPlanCascade"("sid"); -- retain the section below until definitely not required -- if "pCanAuthorise" = 0 then -- insert into "tempshift"( "tempshiftid","vacancyid","shiftdate","timefrom","timeto","breakminutes","state","tempshiftplanid","cancelreason",ConfirmedWith,"TempshiftTemplateID" ) -- select "sid","pvacancyid","pdate","isnull"("tfrom","timefrom"),"isnull"("tto","timeto"),"isnull"("ibreak","breakminutes"),NewState,"sid",'~',WebUser,"pShiftTemplateID" -- from "tempshifttemplate" where "tempshifttemplateid" = "pshifttemplateid"; -- end if; set "cnt" = "cnt"-1 end loop; select '0:~Success' end /* DOC 20161025 IW-69 PC modified NetClientAddShiftsOneDay, but removing pLog and other things, which was causing a return error. use in conjunction with NetClientAddMultipleShifts 2018-08-22 PC improve error handling tests: invalid pwebuserid valid pwebuserid but invalid pvacancyid valid pwebuserid, valid pvacancyid but invalid ptempshifttemplateid valid pwebuserid, pvacancyid, ptempshifttemplateid but invalid date valid pwebuserid, pvacancyid, ptempshifttemplateid, date but invalid timefrom valid pwebuserid, pvacancyid, ptempshifttemplateid, date, timefrom but invalid quantity valid pwebuserid, pvacancyid, ptempshifttemplateid, date, timefrom, quantity */ /* TEST call NetTestSetup(''); delete from tempshiftplan where vacancyid='TEST'; select replace(pResult,' ','!') as A from NetClientAddSingleShift(null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,0 ); expect A=101*; select replace(pResult,' ','!') as A from NetClientAddSingleShift('test.client',null,null,null,null,null,null,null,null,null,null,null,null,null,null,0 ); expect A=101*; select replace(pResult,' ','!') as A from NetClientAddSingleShift('test.client','TEST',null,null,null,null,null,null,null,null,null,null,null,null,null,0 ); expect A=101*; select replace(pResult,' ','!') as A from NetClientAddSingleShift('test.client','TEST','TEST',null,null,null,null,null,null,null,null,null,null,null,null,0 ); expect A=101*; select replace(pResult,' ','!') as A from NetClientAddSingleShift('test.client','TEST','TEST',today(),null,null,null,null,null,null,null,0,null,null,null,0 ); expect A=102*; select replace(pResult,' ','!') as A from NetClientAddSingleShift('test.client','TEST','TEST',today(),null,null,null,null,null,null,null,1,null,null,null,0 ); expect A=0:~Success; select top 1 * from tempshiftplan order by whenentered desc; expect VacancyID=TEST,Description=test,TimeFrom=08:00*,TimeTo=16:00*; delete from tempshiftplan where vacancyid='TEST'; */ go COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetClientAddSingleShift" IS {create PROCEDURE pears."NetClientAddSingleShift"( in "pWebUserID" char(20),in "pvacancyid" char(20),in "pshifttemplateid" char(20),in "pdate" date, 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 "pLocation" char(50) default null,in "pPONumber" char(50) default null,in "pNote" char(50) default null,in "pQty" char(20) default null, in "pOrderReason" char(50) default null,in "pSkills" char(100) default null,in "pGrade" char(50) default null,in "pCanAuthorise" smallint default 0 ) result (pResult char(255)) // IQXWeb begin declare "sid" char(20); declare "cnt" integer; declare "tfrom" time; declare "tto" time; declare "ibreak" integer; declare "isReasonCompulsory" integer; declare "RefNote" char(50); declare WebUser char(60); declare TempShiftTemplateID char(20); declare NewState char(5); if "pTheirRef" <> '' then set "RefNote" = "ucase"("pTheirRef") else set "RefNote" = "pPONumber" end if; if "isnull"("pNote",'') = '' then set "pNote" = "pLocation" end if; if "pdate" is null then select '101:~pDate is null'; return end if; set "cnt" = "isnull"("iqxnetstringtointeger"("pqty"),0); if "cnt" <= 0 then select '102:~Quantity is 0'; return end if; set "tfrom" = "iqxnetstringtotime"("ptimefrom"); set "tto" = "iqxnetstringtotime"("ptimeto"); set "ibreak" = "iqxnetstringtointeger"("pbreak"); -- If times and break not supplied they will come from the template set WebUser=(select top 1 name from iqxnetuser where iqxnetuserid=pWebUserID); set NewState='C'; while "cnt" > 0 loop set "sid" = "uniquekey"("cnt" * rand()*10); set "isReasonCompulsory" = (select first "ShiftOrderReasonRequired" from "TempShiftTemplate" where "TempShiftTemplateID" = "pshifttemplateid"); if "pOrderReason" = '' and "isReasonCompulsory" = 1 then select '105~Reason is compulsory'; return end if; insert into "tempshiftplan"( "TempShiftPlanID","VacancyID","TimeFrom","TimeTo","BreakMinutes","ShiftDate","Moveable","Description","ClientNote", "EssentialSkill","EssentialSkillChoiceList","EssentialSkillGradeID", "ReferenceCode","ReferenceRequired", "ClientMustConfirm","TempMustConfirm","OrderedBy","TempShiftTypeID","AnalysisCode","RecoveryHours","TempShiftOrderReasonID","TempShiftTemplateID" ) select top 1 "sid","pvacancyid","isnull"("tfrom","timefrom"),"isnull"("tto","timeto"),"isnull"("ibreak","breakminutes"),"pdate","Moveable","Description","pNote", "string"("taglocation",';',"tagid",';',"tagchoiceid",';',"gradetagid"),"replace"("pskills","char"(9),';'),isnull("pgrade",EssentialSkillGradeID), "RefNote","ReferenceRequired", "ClientMustConfirm","TempMustConfirm","WebUser","TempShiftTypeID","AnalysisCode","RecoveryHours","nullif"("pOrderReason",''),"pShiftTemplateID" from "tempshifttemplate" where "tempshifttemplateid" = "pshifttemplateid"; call "NetSetShiftPlanCascade"("sid"); -- retain the section below until definitely not required -- if "pCanAuthorise" = 0 then -- insert into "tempshift"( "tempshiftid","vacancyid","shiftdate","timefrom","timeto","breakminutes","state","tempshiftplanid","cancelreason",ConfirmedWith,"TempshiftTemplateID" ) -- select "sid","pvacancyid","pdate","isnull"("tfrom","timefrom"),"isnull"("tto","timeto"),"isnull"("ibreak","breakminutes"),NewState,"sid",'~',WebUser,"pShiftTemplateID" -- from "tempshifttemplate" where "tempshifttemplateid" = "pshifttemplateid"; -- end if; set "cnt" = "cnt"-1; end loop; select '0:~Success'; end /* DOC 20161025 IW-69 PC modified NetClientAddShiftsOneDay, but removing pLog and other things, which was causing a return error. use in conjunction with NetClientAddMultipleShifts 2018-08-22 PC improve error handling tests: invalid pwebuserid valid pwebuserid but invalid pvacancyid valid pwebuserid, valid pvacancyid but invalid ptempshifttemplateid valid pwebuserid, pvacancyid, ptempshifttemplateid but invalid date valid pwebuserid, pvacancyid, ptempshifttemplateid, date but invalid timefrom valid pwebuserid, pvacancyid, ptempshifttemplateid, date, timefrom but invalid quantity valid pwebuserid, pvacancyid, ptempshifttemplateid, date, timefrom, quantity */ /* TEST call NetTestSetup(''); delete from tempshiftplan where vacancyid='TEST'; select replace(pResult,' ','!') as A from NetClientAddSingleShift(null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,0 ); expect A=101*; select replace(pResult,' ','!') as A from NetClientAddSingleShift('test.client',null,null,null,null,null,null,null,null,null,null,null,null,null,null,0 ); expect A=101*; select replace(pResult,' ','!') as A from NetClientAddSingleShift('test.client','TEST',null,null,null,null,null,null,null,null,null,null,null,null,null,0 ); expect A=101*; select replace(pResult,' ','!') as A from NetClientAddSingleShift('test.client','TEST','TEST',null,null,null,null,null,null,null,null,null,null,null,null,0 ); expect A=101*; select replace(pResult,' ','!') as A from NetClientAddSingleShift('test.client','TEST','TEST',today(),null,null,null,null,null,null,null,0,null,null,null,0 ); expect A=102*; select replace(pResult,' ','!') as A from NetClientAddSingleShift('test.client','TEST','TEST',today(),null,null,null,null,null,null,null,1,null,null,null,0 ); expect A=0:~Success; select top 1 * from tempshiftplan order by whenentered desc; expect VacancyID=TEST,Description=test,TimeFrom=08:00*,TimeTo=16:00*; delete from tempshiftplan where vacancyid='TEST'; */ }