pears.NetClientAddShiftsMultiWeek
Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
Original SQL
CREATE PROCEDURE "pears"."NetClientAddShiftsMultiWeek"( IN "pWebUserID" CHAR(20),IN "pvacancyid" CHAR(20),IN "pstartdate" CHAR(25), IN "pExtraWeeks" CHAR(20) DEFAULT NULL,IN "pTheirRef" CHAR(50) DEFAULT NULL,IN "pOrderReason" CHAR(50) DEFAULT NULL,IN "pMonday" CHAR(20), IN "pMondayFrom" CHAR(25) DEFAULT NULL,IN "pMondayTo" CHAR(25) DEFAULT NULL,IN "pMondayBrk" CHAR(20) DEFAULT NULL,IN "pMondayQty" CHAR(20) DEFAULT NULL,IN "pMondayNote" CHAR(50) DEFAULT NULL,IN "pTuesday" CHAR(20), IN "pTuesdayFrom" CHAR(25) DEFAULT NULL,IN "pTuesdayTo" CHAR(25) DEFAULT NULL,IN "pTuesdayBrk" CHAR(20) DEFAULT NULL,IN "pTuesdayQty" CHAR(20) DEFAULT NULL,IN "pTuesdayNote" CHAR(50) DEFAULT NULL,IN "pWednesday" CHAR(20), IN "pWednesdayFrom" CHAR(25) DEFAULT NULL,IN "pWednesdayTo" CHAR(25) DEFAULT NULL,IN "pWednesdayBrk" CHAR(20) DEFAULT NULL,IN "pWednesdayQty" CHAR(20) DEFAULT NULL,IN "pWednesdayNote" CHAR(50) DEFAULT NULL,IN "pThursday" CHAR(20), IN "pThursdayFrom" CHAR(25) DEFAULT NULL,IN "pThursdayTo" CHAR(25) DEFAULT NULL,IN "pThursdayBrk" CHAR(20) DEFAULT NULL,IN "pThursdayQty" CHAR(20) DEFAULT NULL,IN "pThursdayNote" CHAR(50) DEFAULT NULL,IN "pFriday" CHAR(20), IN "pFridayFrom" CHAR(25) DEFAULT NULL,IN "pFridayTo" CHAR(25) DEFAULT NULL,IN "pFridayBrk" CHAR(20) DEFAULT NULL,IN "pFridayQty" CHAR(20) DEFAULT NULL,IN "pFridayNote" CHAR(50) DEFAULT NULL,IN "pSaturday" CHAR(20), IN "pSaturdayFrom" CHAR(25) DEFAULT NULL,IN "pSaturdayTo" CHAR(25) DEFAULT NULL,IN "pSaturdayBrk" CHAR(20) DEFAULT NULL,IN "pSaturdayQty" CHAR(20) DEFAULT NULL,IN "pSaturdayNote" CHAR(50) DEFAULT NULL,IN "pSunday" CHAR(20), IN "pSundayFrom" CHAR(25) DEFAULT NULL,IN "pSundayTo" CHAR(25) DEFAULT NULL,IN "pSundayBrk" CHAR(20) DEFAULT NULL,IN "pSundayQty" CHAR(20) DEFAULT NULL,IN "pSundayNote" CHAR(50) DEFAULT NULL ) RESULT( "pResult" CHAR(250) ) BEGIN DECLARE "swebusername" CHAR(50); DECLARE "ddate" DATE; DECLARE "dstart" DATE; DECLARE "dend" DATE; DECLARE "idow" INTEGER; DECLARE "CanAuthorise" SMALLINT; DECLARE "thelog" long VARCHAR; 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 "CanAuthorise" = "IQXNetHasPermission"("pWebUserID",'AUTHORISEJOBS'); SET "ddate" = "dstart"; SET "dend" = "dateadd"("day",6+(7*"isnull"("iqxnetstringtointeger"("pextraweeks"),0)),"dstart"); while "ddate" <= "dend" loop SET "idow" = "dow"("ddate"); CASE "idow" WHEN 1 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "psunday","ptimefrom" = "psundayfrom","ptimeto" = "psundayto","pbreak" = "psundaybrk","pnote" = "psundaynote","pqty" = "psundayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") WHEN 2 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "pmonday","ptimefrom" = "pmondayfrom","ptimeto" = "pmondayto","pbreak" = "pmondaybrk","pnote" = "pmondaynote","pqty" = "pmondayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") WHEN 3 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "ptuesday","ptimefrom" = "ptuesdayfrom","ptimeto" = "ptuesdayto","pbreak" = "ptuesdaybrk","pnote" = "ptuesdaynote","pqty" = "ptuesdayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") WHEN 4 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "pwednesday","ptimefrom" = "pwednesdayfrom","ptimeto" = "pwednesdayto","pbreak" = "pwednesdaybrk","pnote" = "pwednesdaynote","pqty" = "pwednesdayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") WHEN 5 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "pthursday","ptimefrom" = "pthursdayfrom","ptimeto" = "pthursdayto","pbreak" = "pthursdaybrk","pnote" = "pthursdaynote","pqty" = "pthursdayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") WHEN 6 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "pfriday","ptimefrom" = "pfridayfrom","ptimeto" = "pfridayto","pbreak" = "pfridaybrk","pnote" = "pfridaynote","pqty" = "pfridayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") WHEN 7 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "psaturday","ptimefrom" = "psaturdayfrom","ptimeto" = "psaturdayto","pbreak" = "psaturdaybrk","pnote" = "psaturdaynote","pqty" = "psaturdayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") END CASE; 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',"thelog") END IF; SELECT '0:~Success' END GO COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetClientAddShiftsMultiWeek" IS {CREATE PROCEDURE pears."NetClientAddShiftsMultiWeek"( IN "pWebUserID" CHAR(20),IN "pvacancyid" CHAR(20),IN "pstartdate" CHAR(25), IN "pExtraWeeks" CHAR(20) DEFAULT NULL,IN "pTheirRef" CHAR(50) DEFAULT NULL,IN "pOrderReason" CHAR(50) DEFAULT NULL,IN "pMonday" CHAR(20), IN "pMondayFrom" CHAR(25) DEFAULT NULL,IN "pMondayTo" CHAR(25) DEFAULT NULL,IN "pMondayBrk" CHAR(20) DEFAULT NULL,IN "pMondayQty" CHAR(20) DEFAULT NULL,IN "pMondayNote" CHAR(50) DEFAULT NULL,IN "pTuesday" CHAR(20), IN "pTuesdayFrom" CHAR(25) DEFAULT NULL,IN "pTuesdayTo" CHAR(25) DEFAULT NULL,IN "pTuesdayBrk" CHAR(20) DEFAULT NULL,IN "pTuesdayQty" CHAR(20) DEFAULT NULL,IN "pTuesdayNote" CHAR(50) DEFAULT NULL,IN "pWednesday" CHAR(20), IN "pWednesdayFrom" CHAR(25) DEFAULT NULL,IN "pWednesdayTo" CHAR(25) DEFAULT NULL,IN "pWednesdayBrk" CHAR(20) DEFAULT NULL,IN "pWednesdayQty" CHAR(20) DEFAULT NULL,IN "pWednesdayNote" CHAR(50) DEFAULT NULL,IN "pThursday" CHAR(20), IN "pThursdayFrom" CHAR(25) DEFAULT NULL,IN "pThursdayTo" CHAR(25) DEFAULT NULL,IN "pThursdayBrk" CHAR(20) DEFAULT NULL,IN "pThursdayQty" CHAR(20) DEFAULT NULL,IN "pThursdayNote" CHAR(50) DEFAULT NULL,IN "pFriday" CHAR(20), IN "pFridayFrom" CHAR(25) DEFAULT NULL,IN "pFridayTo" CHAR(25) DEFAULT NULL,IN "pFridayBrk" CHAR(20) DEFAULT NULL,IN "pFridayQty" CHAR(20) DEFAULT NULL,IN "pFridayNote" CHAR(50) DEFAULT NULL,IN "pSaturday" CHAR(20), IN "pSaturdayFrom" CHAR(25) DEFAULT NULL,IN "pSaturdayTo" CHAR(25) DEFAULT NULL,IN "pSaturdayBrk" CHAR(20) DEFAULT NULL,IN "pSaturdayQty" CHAR(20) DEFAULT NULL,IN "pSaturdayNote" CHAR(50) DEFAULT NULL,IN "pSunday" CHAR(20), IN "pSundayFrom" CHAR(25) DEFAULT NULL,IN "pSundayTo" CHAR(25) DEFAULT NULL,IN "pSundayBrk" CHAR(20) DEFAULT NULL,IN "pSundayQty" CHAR(20) DEFAULT NULL,IN "pSundayNote" CHAR(50) DEFAULT NULL ) RESULT( "pResult" CHAR(250) ) BEGIN DECLARE "swebusername" CHAR(50); DECLARE "ddate" DATE; DECLARE "dstart" DATE; DECLARE "dend" DATE; DECLARE "idow" INTEGER; DECLARE "CanAuthorise" SMALLINT; DECLARE "thelog" long VARCHAR; 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 "CanAuthorise" = "IQXNetHasPermission"("pWebUserID",'AUTHORISEJOBS'); SET "ddate" = "dstart"; SET "dend" = "dateadd"("day",6+(7*"isnull"("iqxnetstringtointeger"("pextraweeks"),0)),"dstart"); while "ddate" <= "dend" loop SET "idow" = "dow"("ddate"); CASE "idow" WHEN 1 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "psunday","ptimefrom" = "psundayfrom","ptimeto" = "psundayto","pbreak" = "psundaybrk","pnote" = "psundaynote","pqty" = "psundayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") WHEN 2 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "pmonday","ptimefrom" = "pmondayfrom","ptimeto" = "pmondayto","pbreak" = "pmondaybrk","pnote" = "pmondaynote","pqty" = "pmondayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") WHEN 3 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "ptuesday","ptimefrom" = "ptuesdayfrom","ptimeto" = "ptuesdayto","pbreak" = "ptuesdaybrk","pnote" = "ptuesdaynote","pqty" = "ptuesdayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") WHEN 4 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "pwednesday","ptimefrom" = "pwednesdayfrom","ptimeto" = "pwednesdayto","pbreak" = "pwednesdaybrk","pnote" = "pwednesdaynote","pqty" = "pwednesdayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") WHEN 5 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "pthursday","ptimefrom" = "pthursdayfrom","ptimeto" = "pthursdayto","pbreak" = "pthursdaybrk","pnote" = "pthursdaynote","pqty" = "pthursdayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") WHEN 6 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "pfriday","ptimefrom" = "pfridayfrom","ptimeto" = "pfridayto","pbreak" = "pfridaybrk","pnote" = "pfridaynote","pqty" = "pfridayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") WHEN 7 THEN CALL "NetClientAddShiftsOneDay"("pshifttemplateid" = "psaturday","ptimefrom" = "psaturdayfrom","ptimeto" = "psaturdayto","pbreak" = "psaturdaybrk","pnote" = "psaturdaynote","pqty" = "psaturdayqty","pwebuserid" = "pwebuserid","pvacancyid" = "pvacancyid","pcanauthorise" = "canauthorise","pdate" = "ddate","ptheirref" = "ptheirref","porderreason" = "porderreason","pwebusername" = "swebusername","plog" = "thelog") END CASE; 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',"thelog") END IF; SELECT '0:~Success' END }