pears.NetOwnerCandidateSubmit

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

CREATE PROCEDURE "pears"."NetOwnerCandidateSubmit"( IN "pWebUserID" CHAR(20),IN "pPersonID" CHAR(20),IN "pLineID" CHAR(20),IN "pIsShift" INTEGER ) 
RESULT( "pResult" CHAR(250) ) 
// IQXWeb
BEGIN
  DECLARE "sname" CHAR(100);
  DECLARE "RefCode" CHAR(20);
  DECLARE "VacID" CHAR(20);
  DECLARE "CreatePopup" CHAR(1);
  DECLARE "DefaultStatus" CHAR(20);
  IF "IQXNetHasPermission"("pWebUserID",'SUBMITCANDIDATES') = 0 THEN
    SELECT '99:~Permission denied';
    RETURN
  END IF;
  SET "sname" = (SELECT "name" FROM "person" WHERE "personid" = "pPersonID");
  SET "DefaultStatus" = (SELECT top 1 "trim"("right"("description","length"("description")-"charindex"(':',"description"))) AS "DefaultState" FROM "IQXNetSwitch" WHERE "IQXNetSwitchID" = 'DEFAPPLYVACSTATE' AND "value" = 1 ORDER BY "IQXNetSwitchID" ASC);
  IF "pIsShift" = 1 THEN
    IF(SELECT "count"() FROM "tempshiftprogress" WHERE "tempshiftplanid" = "pLineID" AND "PersonID" = "pPersonID") = 0 THEN
      INSERT INTO "tempshiftprogress"( "tempshiftprogressid","tempshiftplanid","personid","staffid","status" ) VALUES( "uniquekey"("ppersonid"+"plineid"),"plineid","ppersonid","userstaffid","isnull"("DefaultStatus",'A') ) ;
      SET "RefCode" = (SELECT "tsp"."ReferenceCode" FROM "TempShiftPlan" AS "tsp" WHERE "tsp"."TempShiftPlanID" = "pLineID");
      SET "VacID" = (SELECT "vacancyid" FROM "TempShiftPlan" WHERE "TempShiftPlanID" = "pLineID")
    ELSE
      SELECT '1:~This person is already in the short list';
      RETURN
    END IF END IF;
  IF "pIsShift" = 0 THEN
    IF(SELECT "count"() FROM "progress" WHERE "vacancyid" = "pLineID" AND "PersonID" = "pPersonID") = 0 THEN
      INSERT INTO "progress"( "progressid","vacancyid","personid","staffid","status","actiondate" ) VALUES( "uniquekey"("ppersonid"+"plineid"),"pLineid","ppersonid","userstaffid","isnull"("DefaultStatus",'A'),CURRENT DATE ) ;
      SET "RefCode" = (SELECT "refcode" FROM "vacancy" WHERE "vacancyid" = "pLineID");
      SET "VacID" = "pLineID"
    ELSE
      SELECT '2:~This person is already in the short list';
      RETURN
    END IF END IF;
  IF "isnull"("RefCode",'') <> '' THEN
    SET "RefCode" = '('+"RefCode"+')'
  END IF;
  SET "CreatePopup" = (SELECT top 1 "isnull"("value",0) FROM "IQXNetSwitch" WHERE "IQXNetSwitchID" = 'CANDSHORTLISTPOPUP' AND "value" = 1 ORDER BY "IQXNetSwitchID" ASC);
  IF "CreatePopup" = 1 THEN
    CALL "IQXNetPopup"("pWebUserID","pPersonID",NULL,"VacID",NULL,NULL,'SUBMITCANDIDATE','Candidate submitted by client '+"RefCode","sname")
  END IF;
  SELECT '0:~Success'
END /* DOC
2017-01-05 PC receive suggested candidate for shortlist of vacancy
2018-01-23 PC IW-368 parameterise whether a popup notification should be used, and insert default status from lookup
2018-08-27 PC improve error handler
 
Tests:
all invalid
pWebUserID valid
all valid for vacancy but no permission
all valid for vacancy with permission
all valid for vacancy repeated
all valid for shift with permission
all valid for shift repeated
 
*/
/* TEST
call NetTestSetup('');
update iqxnetuserlink set employmentid=null where IQXNetUserLinkID in ('test.owner','test.agency','test.candidate','test.owner');
update iqxnetuserlink set employmentid='TEST' where IQXNetUserLinkID='test.owner';
update tempshiftplan set referencecode='TestRefPlan' where tempshiftplanid='TEST';
delete from tempshiftprogress where tempshiftplanid='test';
delete from iqxnetrightallowed where iqxnetrightid='SUBMITCANDIDATES' and iqxnetuserclassid='OWNER';
delete from iqxnetrightassigned where iqxnetrightid='SUBMITCANDIDATES' and iqxnetuserid='test.owner';
select * from NetOwnerCandidateSubmit(null,null,null,null);
expect pResult=99*;
select * from NetOwnerCandidateSubmit('test.owner',null,null,null);
expect pResult=99*;
select * from NetOwnerCandidateSubmit('test.owner','TEST','TEST',0);
expect pResult=99*;
INSERT INTO iqxnetrightallowed (iqxnetrightid,iqxnetuserclassid,id,MaintainOnWeb) values ('SUBMITCANDIDATES','OWNER','*',1);
insert into iqxnetrightassigned (iqxnetuserid,iqxnetrightid,Assigned) values ('test.owner','SUBMITCANDIDATES',1);
INSERT INTO iqxnetswitch on existing update values ('CANDSHORTLISTPOPUP','Candidate list popul','1',null);
select * from NetOwnerCandidateSubmit('test.owner','TEST','TEST',0);
expect pResult=0*;
select * from progress where vacancyid='test';
expect personid=TEST;
select * from NetOwnerCandidateSubmit('test.owner','TEST','TEST',1);
expect pResult=0*;
select * from tempshiftprogress where tempshiftplanid='test';
expect personid=TEST;
select top 1 *,replace(description,' ','_') as B from diary order by whenentered desc;
expect staffid=TEST,personid=TEST,vacancyid=TEST,B=Candidate_submitted_by_client_(TestRefPlan),notes=test;
update tempshiftplan set referencecode=null where tempshiftplanid='TEST';
*/
GO
 
COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetOwnerCandidateSubmit" IS 
{CREATE PROCEDURE pears."NetOwnerCandidateSubmit"( IN "pWebUserID" CHAR(20),IN "pPersonID" CHAR(20),IN "pLineID" CHAR(20),IN "pIsShift" INTEGER) 
RESULT( "pResult" CHAR(250) ) 
// IQXWeb
BEGIN
  DECLARE sname CHAR(100);
  DECLARE RefCode CHAR(20);
  DECLARE VacID CHAR(20);
  DECLARE CreatePopup CHAR(1);
  DECLARE DefaultStatus CHAR(20);
 
  IF "IQXNetHasPermission"("pWebUserID",'SUBMITCANDIDATES') = 0 THEN
    SELECT '99:~Permission denied';
    RETURN
  END IF;
  SET sname=(SELECT name FROM person WHERE personid = pPersonID);
  SET DefaultStatus=(SELECT top 1 TRIM(RIGHT(description,LENGTH(description)-charindex(':',description))) AS DefaultState FROM IQXNetSwitch WHERE IQXNetSwitchID='DEFAPPLYVACSTATE' AND VALUE=1 ORDER BY IQXNetSwitchID ASC);
 
  IF pIsShift = 1 THEN
    IF (SELECT COUNT(*) FROM tempshiftprogress WHERE tempshiftplanid=pLineID AND PersonID=pPersonID) = 0 THEN
        INSERT INTO "tempshiftprogress"( "tempshiftprogressid","tempshiftplanid","personid","staffid","status" ) VALUES( "uniquekey"("ppersonid"+"plineid"),"plineid","ppersonid","userstaffid",isnull(DefaultStatus,'A')); 
        SET RefCode = (SELECT "tsp"."ReferenceCode" FROM "TempShiftPlan" AS "tsp" WHERE "tsp"."TempShiftPlanID" = "pLineID");
        SET VacID = (SELECT vacancyid FROM "TempShiftPlan" WHERE "TempShiftPlanID" = "pLineID");
    ELSE
        SELECT '1:~This person is already in the short list';
        RETURN;
    END IF;
  END IF;
  IF pIsShift = 0 THEN
    IF (SELECT COUNT(*) FROM progress WHERE vacancyid=pLineID AND PersonID=pPersonID) = 0 THEN
        INSERT INTO "progress"( "progressid","vacancyid","personid","staffid","status","actiondate" ) VALUES( "uniquekey"("ppersonid"+"plineid"),"pLineid","ppersonid","userstaffid",isnull(DefaultStatus,'A'),CURRENT DATE ); 
        SET RefCode = (SELECT refcode FROM vacancy WHERE vacancyid = pLineID);
        SET VacID = pLineID;
    ELSE
      SELECT '2:~This person is already in the short list';
      RETURN;
    END IF;
  END IF;
 
  IF "isnull"(RefCode,'') <> '' THEN 
    SET RefCode = '('+RefCode+')'
  END IF;
  SET CreatePopup=(SELECT top 1 isnull(VALUE,0) FROM IQXNetSwitch WHERE IQXNetSwitchID='CANDSHORTLISTPOPUP' AND VALUE=1 ORDER BY IQXNetSwitchID ASC);
  IF CreatePopup=1 THEN
    CALL "IQXNetPopup"("pWebUserID","pPersonID",NULL,"VacID",NULL,NULL,'SUBMITCANDIDATE','Candidate submitted by client '+RefCode,sname);
  END IF;
  SELECT '0:~Success';
END
 
/* DOC
2017-01-05 PC receive suggested candidate for shortlist of vacancy
2018-01-23 PC IW-368 parameterise whether a popup notification should be used, and insert default status from lookup
2018-08-27 PC improve error handler
 
Tests:
    all invalid
    pWebUserID valid
    all valid for vacancy but no permission
    all valid for vacancy with permission
    all valid for vacancy repeated
    all valid for shift with permission
    all valid for shift repeated
 
*/
 
/* TEST
call NetTestSetup('');
update iqxnetuserlink set employmentid=null where IQXNetUserLinkID in ('test.owner','test.agency','test.candidate','test.owner');
update iqxnetuserlink set employmentid='TEST' where IQXNetUserLinkID='test.owner';
update tempshiftplan set referencecode='TestRefPlan' where tempshiftplanid='TEST';
delete from tempshiftprogress where tempshiftplanid='test';
delete from iqxnetrightallowed where iqxnetrightid='SUBMITCANDIDATES' and iqxnetuserclassid='OWNER';
delete from iqxnetrightassigned where iqxnetrightid='SUBMITCANDIDATES' and iqxnetuserid='test.owner';
select * from NetOwnerCandidateSubmit(null,null,null,null);
expect pResult=99*;
select * from NetOwnerCandidateSubmit('test.owner',null,null,null);
expect pResult=99*;
select * from NetOwnerCandidateSubmit('test.owner','TEST','TEST',0);
expect pResult=99*;
INSERT INTO iqxnetrightallowed (iqxnetrightid,iqxnetuserclassid,id,MaintainOnWeb) values ('SUBMITCANDIDATES','OWNER','*',1);
insert into iqxnetrightassigned (iqxnetuserid,iqxnetrightid,Assigned) values ('test.owner','SUBMITCANDIDATES',1);
INSERT INTO iqxnetswitch on existing update values ('CANDSHORTLISTPOPUP','Candidate list popul','1',null);
select * from NetOwnerCandidateSubmit('test.owner','TEST','TEST',0);
expect pResult=0*;
select * from progress where vacancyid='test';
expect personid=TEST;
select * from NetOwnerCandidateSubmit('test.owner','TEST','TEST',1);
expect pResult=0*;
select * from tempshiftprogress where tempshiftplanid='test';
expect personid=TEST;
select top 1 *,replace(description,' ','_') as B from diary order by whenentered desc;
expect staffid=TEST,personid=TEST,vacancyid=TEST,B=Candidate_submitted_by_client_(TestRefPlan),notes=test;
update tempshiftplan set referencecode=null where tempshiftplanid='TEST';
*/
}
  • database/procedures/pears_netownercandidatesubmit.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1