pears.GetPersonAvailState

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

CREATE FUNCTION "pears"."GetPersonAvailState"( 
  /* Application Maintained Function / Procedure - DO NOT EDIT*/
  IN "sid" CHAR(20),IN "ddate" DATE ) 
RETURNS CHAR(1)
BEGIN
  DECLARE "rv" CHAR(1);
  DECLARE "empid" CHAR(20);
  DECLARE "so" SMALLINT;
  DECLARE "dw" SMALLINT;
  DECLARE "Temp" tinyint;
  DECLARE "Wsun" tinyint;
  DECLARE "WMon" tinyint;
  DECLARE "WTue" tinyint;
  DECLARE "WWed" tinyint;
  DECLARE "WThu" tinyint;
  DECLARE "WFri" tinyint;
  DECLARE "WSat" tinyint;
  SET "rv" = NULL;
  SELECT FIRST "state",
    (CASE "state" WHEN 'P' THEN
      0
    WHEN 'B' THEN 2 WHEN 'W' THEN 3 WHEN 'H' THEN 4 WHEN 'U' THEN 5 ELSE 6 END) AS "sortorder" INTO "rv","so" FROM "tempshift"
    WHERE "personid" = "sid" AND "shiftdate" = "ddate" AND "state" <> 'C'
    ORDER BY "sortorder" ASC;
  IF "rv" IS NULL OR "rv" = 'A' THEN
    SET "empid" = NULL;
    SET "dw" = "dow"("ddate");
    SELECT FIRST "employmentid","Temp" INTO "empid","temp" FROM "employment" WHERE "isnull"("concurrent",0) = 0 AND "personid" = "sid" AND "startdate" <= "ddate" AND("leavedate" IS NULL OR "leavedate" >= "ddate");
    IF "empid" IS NOT NULL THEN
      IF "temp" = 0 THEN
        RETURN 'W'
      END IF;
      SELECT "isnull"("WorkSunday",0),"isnull"("WorkMonday",0),"isnull"("WorkTuesday",0),"isnull"("WorkWednesday",0),
        "isnull"("WorkThursday",0),"isnull"("WorkFriday",0),"isnull"("WorkSaturday",0) INTO "wSun","WMon","WTue","WWed","WThu","WFri","WSat"
        FROM "employment" KEY JOIN "placement" WHERE "placement"."employmentid" = "empid";
      IF("wsun" IS NULL) OR(("wsun"+"wmon"+"wTue"+"wWed"+"wThu"+"wFri"+"wSat") = 0) OR(("wsun" = 1 AND "dw" = 1)
        OR("wMon" = 1 AND "dw" = 2) OR("wTue" = 1 AND "dw" = 3) OR("wWed" = 1 AND "dw" = 4) OR("wThu" = 1 AND "dw" = 5)
        OR("wFri" = 1 AND "dw" = 6) OR("wsat" = 1 AND "dw" = 7)) THEN RETURN 'W'
      END IF
    END IF END IF;
  RETURN "rv"
END
  • database/functions/pears_getpersonavailstate.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1