pears.GetShiftStateDescriptionPlus

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

Original SQL

CREATE FUNCTION "pears"."GetShiftStateDescriptionPlus"( 
  /* Application Maintained Function / Procedure - DO NOT EDIT*/
  IN "sid" CHAR(20),IN "ddate" DATE ) 
RETURNS CHAR(70)
BEGIN
  DECLARE "rv" CHAR(70);
  DECLARE "s1" CHAR(1);
  DECLARE "p1" SMALLINT;
  DECLARE "px" SMALLINT;
  DECLARE "punf" SMALLINT;
  DECLARE "pprov" SMALLINT;
  DECLARE "pbkd" SMALLINT;
  DECLARE "pcanc" SMALLINT;
  DECLARE "pwkd" SMALLINT;
  SET "punf" = 0;
  SET "pprov" = 0;
  SET "pbkd" = 0;
  SET "pcanc" = 0;
  SET "pwkd" = 0;
  SET "s1" = ' ';
  SET "p1" = 0;
  FOR "fetchfor" AS "fetchcursor" no scroll cursor FOR
    SELECT "s"."state" AS "shiftstatus","isnull"("s"."clientconfirmed",0) AS "cliconf","isnull"("s"."tempconfirmed",0) AS "tempconf" FROM "tempshift" AS "s" WHERE "s"."vacancyid" = "sid" AND "s"."shiftdate" = "ddate" UNION ALL
    SELECT(IF "p"."cascadelevel" > 0 THEN 'Y' ELSE 'X' endif) AS "shiftstatus",0 AS "cliconf",0 AS "tempconf" FROM "tempshiftplan" AS "p" WHERE "p"."vacancyid" = "sid" AND "p"."shiftdate" = "ddate"
      AND NOT "p"."tempshiftplanid" = any(SELECT "tempshiftplanid" FROM "tempshift" WHERE "vacancyid" = "sid"
        AND "shiftdate" = "ddate" AND(NOT("state" = 'C' AND "crefill" = 1)) AND "tempshiftplanid" IS NOT NULL) FOR READ ONLY do
    SET "px" = 0;
    CASE "shiftstatus" WHEN 'X' THEN
      SET "px" = 10;
      SET "punf" = "punf"+1 WHEN 'Y' THEN
      SET "px" = 9;
      SET "punf" = "punf"+1 WHEN 'P' THEN
      SET "px" = 8;
      SET "pprov" = "pprov"+1 WHEN 'C' THEN
      IF("cliconf" = 0) OR("tempconf" = 0) THEN
        SET "px" = 7;
        SET "pcanc" = "pcanc"+1
      END IF WHEN 'B' THEN
      SET "px" = 6;
      SET "pbkd" = "pbkd"+1 WHEN 'W' THEN
      SET "px" = 5;
      SET "pwkd" = "pwkd"+1
    END CASE;
    IF "px" > "p1" THEN
      SET "s1" = "shiftstatus";
      SET "p1" = "px"
    END IF END FOR;
  SET "rv" = "s1";
  IF "punf" > 0 THEN
    SET "rv" = "rv"+"trim"("str"("punf"))+'U '
  END IF;
  IF "pprov" > 0 THEN
    SET "rv" = "rv"+"trim"("str"("pprov"))+'P '
  END IF;
  IF "pbkd" > 0 THEN
    SET "rv" = "rv"+"trim"("str"("pbkd"))+'B '
  END IF;
  IF "pwkd" > 0 THEN
    SET "rv" = "rv"+"trim"("str"("pwkd"))+'W '
  END IF;
  IF "pcanc" > 0 THEN
    SET "rv" = "rv"+"trim"("str"("pcanc"))+'C '
  END IF;
  SET "rv" = "rv"+'   '; -- Extra spaces to stop ellipsis malfunction on grid display
  RETURN "rv"
END