pears.NetClientAddShifts

Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.

Original SQL

CREATE PROCEDURE "pears"."NetClientAddShifts"( IN "pWebUserID" CHAR(20),IN "pvacancyid" CHAR(20),IN "pshifttemplateid" CHAR(20),IN "pshiftdate" CHAR(25),
  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 "pquantity" CHAR(25) DEFAULT '1',
  IN "pTitle" CHAR(100) DEFAULT NULL ) 
RESULT( "pResult" CHAR(250) ) 
BEGIN
  DECLARE "swebusername" CHAR(50);
  DECLARE "sid" CHAR(20);
  DECLARE "cnt" INTEGER;
  DECLARE "ddate" 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 "cnt" = "iqxnetstringtointeger"("pquantity");
  IF "cnt" IS NULL OR "cnt" = 0 THEN
    SELECT '450:~Invalid quantity';
    RETURN
  END IF;
  SET "ddate" = "iqxnetstringtodate"("pshiftdate");
  IF "ddate" IS NULL THEN
    SELECT '500:~Invalid shift date';
    RETURN
  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');
  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" ) 
      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"
        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;
  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"."NetClientAddShifts" IS 
{CREATE PROCEDURE pears."NetClientAddShifts"( IN "pWebUserID" CHAR(20),IN "pvacancyid" CHAR(20),IN "pshifttemplateid" CHAR(20),IN "pshiftdate" CHAR(25),
  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 "pquantity" CHAR(25) DEFAULT '1',
  IN "pTitle" CHAR(100) DEFAULT NULL ) 
RESULT( "pResult" CHAR(250) ) 
BEGIN
  DECLARE "swebusername" CHAR(50);
  DECLARE "sid" CHAR(20);
  DECLARE "cnt" INTEGER;
  DECLARE "ddate" 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 "cnt" = "iqxnetstringtointeger"("pquantity");
  IF "cnt" IS NULL OR "cnt" = 0 THEN
    SELECT '450:~Invalid quantity';
    RETURN
  END IF;
  SET "ddate" = "iqxnetstringtodate"("pshiftdate");
  IF "ddate" IS NULL THEN
    SELECT '500:~Invalid shift date';
    RETURN
  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');
  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" ) 
      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"
        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;
  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
}