pears.NetClientRequirementShortListPlaced
Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
Original SQL
CREATE PROCEDURE "pears"."NetClientRequirementShortListPlaced"( IN "pWebUserID" CHAR(20),IN "pRowID" CHAR(20),IN "IsShift" CHAR(1),IN "IsCurrent" CHAR(1) ) RESULT( "PersonName" CHAR(60),"PersonID" CHAR(20),"PersonStatus" CHAR(20),"StartDate" CHAR(20),"LeaveDate" CHAR(20),"CurrentLeave" DATE ) // IQXWeb BEGIN DECLARE "VacID" CHAR(20); SET "VacID" = "pRowID"; IF "IsShift" = 1 THEN SET "VacID" = (SELECT "VacancyID" FROM "TempShiftPlan" WHERE "tempshiftplanid" = "pRowID") END IF; IF NOT EXISTS(SELECT * FROM "placement" AS "p" KEY JOIN "employment" KEY JOIN "person" WHERE "p"."vacancyid" = "VacID") AND NOT EXISTS(SELECT * FROM "tempshift" AS "s" KEY JOIN "person" AS "pe" WHERE "s"."vacancyid" = "VacID" AND "s"."state" IN( 'W','B','P' ) ) THEN SELECT '','','','','',NULL; RETURN END IF; IF "isCurrent" = 'Y' THEN IF "IsShift" = 1 THEN SELECT "pe"."name", "pe"."personid", (CASE "S"."state" WHEN 'B' THEN 'Confirmed' WHEN 'W' THEN 'Worked' WHEN 'P' THEN 'Pending' END) AS "PersonStatus", "s"."shiftdate" AS "StartDate", "s"."shiftdate" AS "LeaveDate", "isnull"("s"."shiftdate",CURRENT DATE) AS "currentleave" FROM "tempshift" AS "s" KEY JOIN "person" AS "pe" WHERE "s"."tempshiftplanid" = "pRowID" AND "s"."state" IN( 'W','B','P' ) ORDER BY "currentleave" DESC ELSE SELECT "pe"."name" AS "PersonName", "pe"."personid", 'Placed' AS "PersonStatus", "e"."startdate" AS "StartDate", "e"."leavedate" AS "LeaveDate", "isnull"("e"."leavedate",CURRENT DATE) AS "currentleave" FROM "placement" AS "p" KEY JOIN "employment" AS "e" KEY JOIN "person" AS "pe" WHERE "p"."vacancyid" = "VacID" AND "currentleave" >= CURRENT DATE ORDER BY "currentleave" DESC,"PersonName" ASC END IF ELSE IF "IsShift" = 1 THEN SELECT DISTINCT "pe"."name", "pe"."personid", '' AS "PersonStatus", (SELECT "min"("sm"."shiftdate") FROM "tempshift" AS "sm" WHERE "sm"."vacancyid" = "s"."vacancyid" AND "sm"."personid" = "pe"."personid" AND "sm"."state" IN( 'W','B','P' ) AND "isnull"("s"."shiftdate",CURRENT DATE) < CURRENT DATE AND "sm"."state" IN( 'W','B','P' ) ), (SELECT "max"("sm"."shiftdate") FROM "tempshift" AS "sm" WHERE "sm"."vacancyid" = "s"."vacancyid" AND "sm"."personid" = "pe"."personid" AND "sm"."state" IN( 'W','B','P' ) AND "isnull"("s"."shiftdate",CURRENT DATE) < CURRENT DATE AND "sm"."state" IN( 'W','B','P' ) ), NULL AS "currentleave" FROM "tempshift" AS "s" KEY JOIN "person" AS "pe" WHERE "s"."vacancyid" = "VacID" AND "s"."state" IN( 'W','B','P' ) AND "isnull"("s"."shiftdate",CURRENT DATE) < CURRENT DATE ELSE SELECT "pe"."name" AS "PersonName", "pe"."personid", 'Placed' AS "PersonStatus", "e"."startdate" AS "StartDate", "e"."leavedate" AS "LeaveDate", "isnull"("e"."leavedate",CURRENT DATE) AS "currentleave" FROM "placement" AS "p" KEY JOIN "employment" AS "e" KEY JOIN "person" AS "pe" WHERE "p"."vacancyid" = "VacID" AND "currentleave" < CURRENT DATE ORDER BY "currentleave" DESC,"PersonName" ASC END IF END IF END /* DOC 2016-11-30 PC add doc and test 2017-10-17 PC add employment dates 2018-03-23 JB IW-408 2018-05-02 PC,VS IW-408 revise to key on shiftid 2018-05-31 PC IW-565 condense rows into one with max and min dates 2019-01-10 PC resolve schema mismatch 2019-02-18 PC/ET IW-817 removed "no Data" Tests: valid pWebUserID, Rowid, IsShift=0 valid pWebUserID, Rowid, IsShift=1 */ GO COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetClientRequirementShortListPlaced" IS {CREATE PROCEDURE pears."NetClientRequirementShortListPlaced"(IN pWebUserID CHAR(20),IN pRowID CHAR(20),IN IsShift CHAR(1),IN IsCurrent CHAR(1)) RESULT(PersonName CHAR(60),PersonID CHAR(20),PersonStatus CHAR(20),StartDate CHAR(20),LeaveDate CHAR(20),CurrentLeave DATE) // IQXWeb BEGIN DECLARE VacID CHAR(20); SET VacID=pRowID; IF IsShift=1 THEN SET "VacID" = (SELECT VacancyID FROM "TempShiftPlan" WHERE "tempshiftplanid" = pRowID); END IF; IF NOT EXISTS( SELECT * FROM placement p KEY JOIN employment KEY JOIN person WHERE p.vacancyid=VacID) AND NOT EXISTS(SELECT * FROM tempshift s KEY JOIN person pe WHERE s.vacancyid=VacID AND s.state IN ('W','B','P')) THEN SELECT '','','','','',NULL; RETURN; END IF; IF isCurrent='Y' THEN IF IsShift=1 THEN SELECT pe.name, pe.personid, (CASE S."state" WHEN 'B' THEN 'Confirmed' WHEN 'W' THEN 'Worked' WHEN 'P' THEN 'Pending' END CASE) AS PersonStatus, s.shiftdate AS "StartDate", s.shiftdate AS "LeaveDate", isnull(s.shiftdate, CURRENT DATE) AS currentleave FROM tempshift s KEY JOIN person pe WHERE s.tempshiftplanid=pRowID AND s.state IN ('W','B','P') ORDER BY currentleave DESC ELSE SELECT pe.name AS PersonName, pe.personid, 'Placed' AS PersonStatus, e.startdate AS "StartDate", e.leavedate AS "LeaveDate", isnull(e.leavedate, CURRENT DATE) AS currentleave FROM placement p KEY JOIN employment e KEY JOIN person pe WHERE p.vacancyid=VacID AND currentleave >= CURRENT DATE ORDER BY currentleave DESC, PersonName ASC END IF; ELSE IF IsShift=1 THEN SELECT DISTINCT pe.name, pe.personid, '' AS PersonStatus, ( SELECT MIN(sm.shiftdate) FROM tempshift sm WHERE sm.vacancyid=s.vacancyid AND sm.personid=pe.personid AND sm.state IN ('W','B','P') AND isnull(s.shiftdate, CURRENT DATE) < CURRENT DATE AND sm.state IN ('W','B','P')), ( SELECT MAX(sm.shiftdate) FROM tempshift sm WHERE sm.vacancyid=s.vacancyid AND sm.personid=pe.personid AND sm.state IN ('W','B','P') AND isnull(s.shiftdate, CURRENT DATE) < CURRENT DATE AND sm.state IN ('W','B','P')), NULL AS currentleave FROM tempshift s KEY JOIN person pe WHERE s.vacancyid=VacID AND s.state IN ('W','B','P') AND isnull(s.shiftdate, CURRENT DATE) < CURRENT DATE ELSE SELECT pe.name AS PersonName, pe.personid, 'Placed' AS PersonStatus, e.startdate AS "StartDate", e.leavedate AS "LeaveDate", isnull(e.leavedate, CURRENT DATE) AS currentleave FROM placement p KEY JOIN employment e KEY JOIN person pe WHERE p.vacancyid=VacID AND currentleave < CURRENT DATE ORDER BY currentleave DESC, PersonName ASC END IF; END IF; END /* DOC 2016-11-30 PC add doc and test 2017-10-17 PC add employment dates 2018-03-23 JB IW-408 2018-05-02 PC,VS IW-408 revise to key on shiftid 2018-05-31 PC IW-565 condense rows into one with max and min dates 2019-01-10 PC resolve schema mismatch 2019-02-18 PC/ET IW-817 removed "no Data" Tests: valid pWebUserID, Rowid, IsShift=0 valid pWebUserID, Rowid, IsShift=1 */ }