====== pears.NetAgencyCurrentRequirementCandidateSubmit ====== Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace. ===== Original SQL ===== create procedure "pears"."NetAgencyCurrentRequirementCandidateSubmit"( in "pWebUserID" char(20),in "pPersonID" char(20),in "pLineID" char(22),in "pNote" long varchar default null ) result( "pResult" char(250) ) // IQXWeb begin declare "SecAgID" char(20); declare "sname" char(100); declare "RefCode" char(20); declare "LineId" char(20); declare "LineType" char(1); declare "dStaffId" char(20); declare "dStaffName" char(60); declare "NoteText" char(255); if "IQXNetHasPermission"("pWebUserID",'SUBMITCANDIDATES') = 0 then select '99:~Permission denied'; return end if; set "SecAgID" = (select top 1 "employment"."companyid" from "employment" key join "iqxnetuserlink" where "iqxnetuserlink"."iqxnetuserid" = "pwebuserid" order by "isnull"("employment"."leavedate",current date) asc); set "LineType" = "left"("pLineID",1); if "LineType" = 'V' then set "LineID" = "right"("pLineID",20); set "dStaffID" = (select "staffid" from "vacancy" where "vacancyid" = "LineID") end if; if "LineType" = 'P' then set "LineID" = (select "TempshiftPlanID" from "tempshiftplan" where "tempshiftplanid" = "right"("pLineID",20)); set "dStaffID" = (select "staffid" from "tempshiftplan" where "tempshiftplanid" = "LineID") end if; set "dStaffName" = (select "name" from "staff" where "staffid" = "dStaffID"); set "NoteText" = 'Candidate submitted at '+cast("now"() as char)+' by '+"dStaffName"+(if "isnull"("pNote",'') <> '' then "pNote" else null endif); if "LineType" = 'V' then if not "LineId" = any(select "vacancyid" from "cascadedvacancy" where "secondaryagencyid" = "secagid") then select '98:~Permission denied'; return end if; set "sname" = (select "name" from "person" where "personid" = "ppersonid"); if(select(if "count"() = 0 then 'FALSE' else 'TRUE' endif) as "IsPresent" from "progress" as "pr" left outer join "status" as "s" on "s"."status" = "pr"."status" where "pr"."personid" = "pPersonID" and "pr"."vacancyid" = "LineID" and "s"."type" = 'R' and "s"."final" = 0) = 'FALSE' then insert into "progress"( "progressid","vacancyid","personid","staffid","status","actiondate","note" ) values( "uniquekey"("ppersonid"+"LineID"),"LineID","ppersonid","dStaffID",'A',current date,"NoteText" ) else select '99:~'+"sname"+' has already been submitted'; return end if end if; if "LineType" = 'P' then if(select "count"() from "cascadedshift" where "secondaryagencyid" = "secagid" and "tempshiftplanid" = "LineID") = 0 then select '99:~Permission denied'; return end if; insert into "tempshiftprogress"( "tempshiftprogressid","tempshiftplanid","personid","staffid","status","note" ) values( "uniquekey"("ppersonid"+"LineID"),"LineID","ppersonid","dStaffID",'A',"NoteText" ) end if; select '0:~Success' end /* DOC 2016-11-28 PC Test and doc 2018-06-07 PC revise tests 2019-03-05 PC IW-873 add top 1 and order by on subqueries Tests: all valid but not cascaded all valid and cascaded for P repeat all valid for V */ /* TEST call NetTestSetup(''); delete from cascadedshift where cascadedshiftid='TEST'; delete from cascadedvacancy where vacancyid like 'TEST%'; delete from tempshiftplan where tempshiftplanid='TESTTESTTESTTESTTEST'; delete from progress where vacancyid='TESTTESTTESTTESTTEST'; update iqxnetuserlink set employmentid=null where IQXNetUserLinkID in ('test.candidate','test.client','test.owner'); update iqxnetuserlink set employmentid='TEST' where IQXNetUserLinkID='test.agency'; insert into iqxnetrightallowed (iqxnetrightid,iqxnetuserclassid,id,maintainonweb) on existing update defaults off values ('SUBMITCANDIDATES','AGENCY','*','1'); insert into vacancy (vacancyid,departmentid,employmentid,status,position,staffid) on existing update defaults off values ('TESTTESTTESTTESTTEST','~~','TEST','[','test2','test'); select * from NetAgencyCurrentRequirementCandidateSubmit('test.agency','TEST','VTESTTESTTESTTESTTEST'); expect 98*; insert into tempshiftplan (tempshiftplanid,vacancyid,description) values ('TESTTESTTESTTESTTEST','TESTTESTTESTTESTTEST','test2'); insert into cascadedshift (cascadedshiftid,tempshiftplanid,secondaryagencyid,cascadetime,cascadelevel,method) values ('TEST','TESTTESTTESTTESTTEST','TEST',now(*),1,9); select * from NetAgencyCurrentRequirementCandidateSubmit('test.agency','TEST','PTest99'); expect 99*; select * from NetAgencyCurrentRequirementCandidateSubmit('test.agency','TEST','PTESTTESTTESTTESTTEST'); expect 0*; select * from tempshiftprogress where tempshiftplanid='TESTTESTTESTTESTTEST'; expect PersonID=TEST; expect EOF; update tempshiftprogress set status='R' where tempshiftplanid='TESTTESTTESTTESTTEST'; insert into cascadedvacancy (CascadedVacancyID,VacancyID,SecondaryAgencyID,CascadeTime,CascadeLevel,method) values ('TEST2','TESTTESTTESTTESTTEST','TEST',now(*),1,1); select * from NetAgencyCurrentRequirementCandidateSubmit('test.agency','TEST','VTESTTESTTESTTESTTEST'); expect 0:~Success; select * from NetAgencyCurrentRequirementCandidateSubmit('test.agency','TEST','VTESTTESTTESTTESTTEST'); expect 99:~test*; delete from cascadedvacancy where vacancyid like 'TEST%'; delete from cascadedshift where cascadedshiftid='TEST'; delete from tempshiftplan where tempshiftplanid='TESTTESTTESTTESTTEST'; delete from progress where vacancyid='TESTTESTTESTTESTTEST'; */ go COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetAgencyCurrentRequirementCandidateSubmit" IS {create PROCEDURE pears."NetAgencyCurrentRequirementCandidateSubmit"( in "pWebUserID" char(20),in "pPersonID" char(20),in "pLineID" char(22), in pNote long varchar default null) result( "pResult" char(250) ) // IQXWeb begin declare SecAgID char(20); declare sname char(100); declare RefCode char(20); declare LineId char(20); declare LineType char(1); declare dStaffId char(20); declare dStaffName char(60); declare NoteText char(255); if "IQXNetHasPermission"("pWebUserID",'SUBMITCANDIDATES') = 0 then select '99:~Permission denied'; return end if; set SecAgID = (select top 1 "employment"."companyid" from "employment" key join "iqxnetuserlink" where "iqxnetuserlink"."iqxnetuserid" = "pwebuserid" order by isnull(employment.leavedate,current date)); set LineType=left(pLineID,1); if LineType='V' then set LineID = right(pLineID,20); set dStaffID = (select "staffid" from "vacancy" where "vacancyid" = "LineID"); end if; if LineType='P' then set LineID = (select TempshiftPlanID from tempshiftplan where tempshiftplanid=right(pLineID,20)); set dStaffID = (select "staffid" from tempshiftplan where tempshiftplanid = "LineID"); end if; set dStaffName=(select name from staff where staffid=dStaffID); set NoteText='Candidate submitted at '+ cast(now(*) as char) + ' by ' + dStaffName + (if isnull(pNote,'')!='' then pNote else null endif); if LineType='V' then if not "LineId" = any(select "vacancyid" from "cascadedvacancy" where "secondaryagencyid" = secagid) then select '98:~Permission denied'; return end if; set sname = (select "name" from "person" where "personid" = "ppersonid"); if(select(if "count"() = 0 then 'FALSE' else 'TRUE' endif) as "IsPresent" from "progress" as "pr" left outer join "status" as "s" on "s"."status" = "pr"."status" where "pr"."personid" = "pPersonID" and "pr"."vacancyid" = "LineID" and "s"."type" = 'R' and "s"."final" = 0) = 'FALSE' then insert into "progress"( "progressid","vacancyid","personid","staffid","status","actiondate",note ) values( "uniquekey"("ppersonid"+"LineID"),"LineID","ppersonid","dStaffID",'A',current date,NoteText ) else select '99:~'+sname+' has already been submitted'; return end if end if; if LineType='P' then if (select count(*) from "cascadedshift" where "secondaryagencyid" = secagid and tempshiftplanid=LineID ) = 0 then select '99:~Permission denied'; return end if; insert into "tempshiftprogress"( "tempshiftprogressid","tempshiftplanid","personid","staffid","status",note ) values( "uniquekey"("ppersonid"+"LineID"),"LineID","ppersonid","dStaffID",'A' ,NoteText) end if; select '0:~Success'; end /* DOC 2016-11-28 PC Test and doc 2018-06-07 PC revise tests 2019-03-05 PC IW-873 add top 1 and order by on subqueries Tests: all valid but not cascaded all valid and cascaded for P repeat all valid for V */ /* TEST call NetTestSetup(''); delete from cascadedshift where cascadedshiftid='TEST'; delete from cascadedvacancy where vacancyid like 'TEST%'; delete from tempshiftplan where tempshiftplanid='TESTTESTTESTTESTTEST'; delete from progress where vacancyid='TESTTESTTESTTESTTEST'; update iqxnetuserlink set employmentid=null where IQXNetUserLinkID in ('test.candidate','test.client','test.owner'); update iqxnetuserlink set employmentid='TEST' where IQXNetUserLinkID='test.agency'; insert into iqxnetrightallowed (iqxnetrightid,iqxnetuserclassid,id,maintainonweb) on existing update defaults off values ('SUBMITCANDIDATES','AGENCY','*','1'); insert into vacancy (vacancyid,departmentid,employmentid,status,position,staffid) on existing update defaults off values ('TESTTESTTESTTESTTEST','~~','TEST','[','test2','test'); select * from NetAgencyCurrentRequirementCandidateSubmit('test.agency','TEST','VTESTTESTTESTTESTTEST'); expect 98*; insert into tempshiftplan (tempshiftplanid,vacancyid,description) values ('TESTTESTTESTTESTTEST','TESTTESTTESTTESTTEST','test2'); insert into cascadedshift (cascadedshiftid,tempshiftplanid,secondaryagencyid,cascadetime,cascadelevel,method) values ('TEST','TESTTESTTESTTESTTEST','TEST',now(*),1,9); select * from NetAgencyCurrentRequirementCandidateSubmit('test.agency','TEST','PTest99'); expect 99*; select * from NetAgencyCurrentRequirementCandidateSubmit('test.agency','TEST','PTESTTESTTESTTESTTEST'); expect 0*; select * from tempshiftprogress where tempshiftplanid='TESTTESTTESTTESTTEST'; expect PersonID=TEST; expect EOF; update tempshiftprogress set status='R' where tempshiftplanid='TESTTESTTESTTESTTEST'; insert into cascadedvacancy (CascadedVacancyID,VacancyID,SecondaryAgencyID,CascadeTime,CascadeLevel,method) values ('TEST2','TESTTESTTESTTESTTEST','TEST',now(*),1,1); select * from NetAgencyCurrentRequirementCandidateSubmit('test.agency','TEST','VTESTTESTTESTTESTTEST'); expect 0:~Success; select * from NetAgencyCurrentRequirementCandidateSubmit('test.agency','TEST','VTESTTESTTESTTESTTEST'); expect 99:~test*; delete from cascadedvacancy where vacancyid like 'TEST%'; delete from cascadedshift where cascadedshiftid='TEST'; delete from tempshiftplan where tempshiftplanid='TESTTESTTESTTESTTEST'; delete from progress where vacancyid='TESTTESTTESTTESTTEST'; */ }