pears.GetPersonAvailPercentage

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

CREATE FUNCTION "pears"."GetPersonAvailPercentage"( 
  /* Application Maintained Function / Procedure - DO NOT EDIT*/
  IN "sid" CHAR(20),IN "frdate" DATE,IN "todate" DATE ) 
RETURNS DOUBLE
BEGIN
  DECLARE "rv" DOUBLE;
  DECLARE "bonly" SMALLINT;
  DECLARE "cavail" CHAR(1);
  DECLARE "ndays" DOUBLE;
  DECLARE "navail" DOUBLE;
  SET "rv" = 0;
  IF "frdate" IS NULL THEN
    RETURN NULL
  END IF;
  IF "todate" IS NULL THEN
    SET "todate" = "dateadd"("day",30,"frdate")
  END IF;
  IF "frdate" > "todate" THEN
    RETURN 100
  END IF;
  SET "ndays" = 0;
  SET "navail" = 0;
  SELECT FIRST "onlymatchifknownavailable" INTO "bonly" FROM "person" WHERE "personid" = "sid";
  SET "bonly" = "isnull"("bonly",0);
  while "frdate" <= "todate" loop
    SET "ndays" = "ndays"+1;
    SELECT FIRST "getpersonavailstate"("sid","frdate") INTO "cavail";
    IF "cavail" = 'A' OR("cavail" IS NULL AND "bonly" = 0) THEN
      SET "navail" = "navail"+1
    END IF;
    SET "frdate" = "dateadd"("day",1,"frdate")
  END loop;
  RETURN("navail"/"ndays")*100
END
  • database/functions/pears_getpersonavailpercentage.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1