pears.NetProvTimesheetTimeSet
Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
Original SQL
CREATE PROCEDURE "pears"."NetProvTimesheetTimeSet"( IN "pWebUserID" CHAR(20),IN "pplacementid_date" CHAR(250),IN "phours" CHAR(250) DEFAULT NULL,IN "ptimefrom" CHAR(250) DEFAULT NULL ) RESULT( "pResult" CHAR(250) ) // IQXWeb BEGIN DECLARE "i" SMALLINT; DECLARE "pplacementid" CHAR(20); DECLARE "pdate" DATE; DECLARE "pptime" TIME; DECLARE "pphours" DOUBLE; DECLARE "pcancelled" tinyint; DECLARE "userClass" CHAR(20); DECLARE "divid" CHAR(20); DECLARE LOCAL TEMPORARY TABLE "IDs"( "ID" CHAR(20) NULL, ) NOT transactional; SET "i" = "locate"("pplacementid_date",'_',-1); IF "i" > 0 THEN SET "pdate" = "iqxnetstringtodate"("right"("pplacementid_date","length"("pplacementid_date")-"i")); SET "pplacementid" = "left"("pplacementid_date","i"-1) ELSE SELECT '101:~Invalid data'; RETURN END IF; SET "pphours" = "nullif"("iqxnetstringtodouble"("phours"),0.0); IF "pphours" IS NULL THEN SET "pptime" = NULL; SET "pcancelled" = 1 ELSE SET "pptime" = "iqxnetstringtotime"("ptimefrom"); SET "pcancelled" = 0 END IF; SET "userClass" = (SELECT FIRST "iqxnetuserclassid" FROM "iqxnetuser" WHERE "iqxnetuserid" = "pWebUserID"); IF "userClass" = 'OWNER' THEN INSERT INTO "IDs"( "ID" ) SELECT DISTINCT "s"."divisionid" FROM "iqxnetuser" AS "i" KEY JOIN "staff" AS "s" WHERE "i"."iqxnetuserid" = "pwebuserid"; IF NOT "pplacementid" = any(SELECT FIRST "pl"."placementid" FROM "placement" AS "pl" KEY JOIN "employment" KEY JOIN "person" AS "pe" JOIN "IDs" ON "pe"."divisionid" = "IDs"."ID") THEN SELECT '99:~Permission denied'; RETURN END IF ELSE IF NOT "pplacementid" = any( SELECT "p"."placementid" FROM "placement" AS "p" KEY JOIN "employment" KEY JOIN "person" KEY JOIN "iqxnetuserlink" WHERE "iqxnetuserid" = "pwebuserid" UNION SELECT "p"."placementid" FROM "placement" AS "p" KEY JOIN "employment" KEY JOIN "person" KEY JOIN "pay_employee" KEY JOIN "company" AS "agcomp" KEY JOIN "employment" AS "agemp" KEY JOIN "iqxnetuserlink" WHERE "iqxnetuserlink"."iqxnetuserid" = "pwebuserid" UNION SELECT "p"."placementid" FROM "placement" AS "p" KEY JOIN "vacancy" KEY JOIN "employment" AS "vacemp" KEY JOIN "company" KEY JOIN "employment" KEY JOIN "iqxnetuserlink" WHERE "iqxnetuserlink"."iqxnetuserid" = "pwebuserid") THEN SELECT '99:~Permission denied'; RETURN END IF END IF; DELETE FROM "placementdayvariation" WHERE "placementid" = "pplacementid" AND "variationdate" = "pdate"; INSERT INTO "placementdayvariation"( "placementid","variationdate","workstarttime","workhours","workcancelled" ) VALUES( "pplacementid","pdate","pptime","pphours","pcancelled" ) ; SELECT '0:~Success' END /* DOC 2017-06-21 PC Test and doc 2018-07-26 PC include improved error handler */ /* TEST call NetTestSetup(''); update iqxnetuserlink set employmentid=null where IQXNetUserLinkID in ('test.client','test.agency','test.candidate','test.owner'); update iqxnetuserlink set employmentid='TEST' where IQXNetUserLinkID='test.candidate'; delete from placementdayvariation where placementid='TEST'; select * from NetProvTimesheetTimeSet('test.candidate','test',12,'06:00'); expect 101*; select * from NetProvTimesheetTimeSet('test.owner','test_'+dateformat(today(*),'dd/mm/yyyy'),12,'06:00'); expect 99*; select * from NetProvTimesheetTimeSet('test.candidate','test99_'+dateformat(today(*),'dd/mm/yyyy'),12,'06:00'); expect 99*; select * from NetProvTimesheetTimeSet('test.candidate','test_'+dateformat(today(*),'dd/mm/yyyy'),12,'06:00'); select (if VariationDate=dateformat(today(*),'yyyy-mm-dd') then 1 else 0 endif) as A,WorkStartTime,WorkHours from placementdayvariation where placementid='test'; expect A=1,WorkStartTime=06:00*,WorkHours=12; delete from placementdayvariation where placementid='TEST'; */ GO COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetProvTimesheetTimeSet" IS {CREATE PROCEDURE pears."NetProvTimesheetTimeSet"(IN pWebUserID CHAR(20),IN pplacementid_date CHAR(250),IN phours CHAR(250) DEFAULT NULL,IN ptimefrom CHAR(250) DEFAULT NULL) RESULT(pResult CHAR(250)) // IQXWeb BEGIN DECLARE i SMALLINT; DECLARE pplacementid CHAR(20); DECLARE pdate DATE; DECLARE pptime TIME; DECLARE pphours DOUBLE; DECLARE pcancelled tinyint; DECLARE userClass CHAR(20); DECLARE divid CHAR(20); DECLARE LOCAL TEMPORARY TABLE IDs( ID CHAR(20) NULL, ) NOT transactional; SET i=locate(pplacementid_date,'_',-1); IF i > 0 THEN SET pdate=iqxnetstringtodate("right"(pplacementid_date,LENGTH(pplacementid_date)-i)); SET pplacementid="left"(pplacementid_date,i-1) ELSE SELECT '101:~Invalid data'; RETURN END IF; SET pphours=NULLIF(iqxnetstringtodouble(phours),0.0); IF pphours IS NULL THEN SET pptime=NULL; SET pcancelled=1 ELSE SET pptime=iqxnetstringtotime(ptimefrom); SET pcancelled=0 END IF; SET userClass=(SELECT FIRST iqxnetuserclassid FROM iqxnetuser WHERE iqxnetuserid = pWebUserID); IF userClass = 'OWNER' THEN INSERT INTO IDs( ID) SELECT DISTINCT s.divisionid FROM iqxnetuser AS i KEY JOIN staff AS s WHERE i.iqxnetuserid = pwebuserid; IF NOT pplacementid = any(SELECT FIRST pl.placementid FROM placement AS pl KEY JOIN employment KEY JOIN person AS pe JOIN IDs ON pe.divisionid = IDs.ID) THEN SELECT '99:~Permission denied'; RETURN END IF ELSE IF NOT pplacementid = any( SELECT p.placementid FROM placement AS p KEY JOIN employment KEY JOIN person KEY JOIN iqxnetuserlink WHERE iqxnetuserid = pwebuserid UNION SELECT p.placementid FROM placement AS p KEY JOIN employment KEY JOIN person KEY JOIN pay_employee KEY JOIN company AS agcomp KEY JOIN employment AS agemp KEY JOIN iqxnetuserlink WHERE iqxnetuserlink.iqxnetuserid = pwebuserid UNION SELECT p.placementid FROM placement AS p KEY JOIN vacancy KEY JOIN employment AS vacemp KEY JOIN company KEY JOIN employment KEY JOIN iqxnetuserlink WHERE iqxnetuserlink.iqxnetuserid = pwebuserid) THEN SELECT '99:~Permission denied'; RETURN END IF END IF; DELETE FROM placementdayvariation WHERE placementid = pplacementid AND variationdate = pdate; INSERT INTO placementdayvariation( placementid,variationdate,workstarttime,workhours,workcancelled) VALUES( pplacementid,pdate,pptime,pphours,pcancelled) ; SELECT '0:~Success' END /* DOC 2017-06-21 PC Test and doc 2018-07-26 PC include improved error handler */ /* TEST call NetTestSetup(''); update iqxnetuserlink set employmentid=null where IQXNetUserLinkID in ('test.client','test.agency','test.candidate','test.owner'); update iqxnetuserlink set employmentid='TEST' where IQXNetUserLinkID='test.candidate'; delete from placementdayvariation where placementid='TEST'; select * from NetProvTimesheetTimeSet('test.candidate','test',12,'06:00'); expect 101*; select * from NetProvTimesheetTimeSet('test.owner','test_'+dateformat(today(*),'dd/mm/yyyy'),12,'06:00'); expect 99*; select * from NetProvTimesheetTimeSet('test.candidate','test99_'+dateformat(today(*),'dd/mm/yyyy'),12,'06:00'); expect 99*; select * from NetProvTimesheetTimeSet('test.candidate','test_'+dateformat(today(*),'dd/mm/yyyy'),12,'06:00'); select (if VariationDate=dateformat(today(*),'yyyy-mm-dd') then 1 else 0 endif) as A,WorkStartTime,WorkHours from placementdayvariation where placementid='test'; expect A=1,WorkStartTime=06:00*,WorkHours=12; delete from placementdayvariation where placementid='TEST'; */ }