pears.GetPersonAvailPercentage
Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
Original SQL
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