database:procedures:pears_netclientvacanciesshortlistaction



pears.NetClientVacanciesShortlistAction

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

CREATE PROCEDURE "pears"."NetClientVacanciesShortlistAction"( IN "pWebUserID" CHAR(20),IN "pVacancyID" CHAR(20),IN "pPersonID" CHAR(20),IN "pStatusReasonID" CHAR(20),IN "pRejectionReasonID" CHAR(20) DEFAULT NULL ) 
RESULT( "pResult" CHAR(250) ) 
// IQXNet
BEGIN
  DECLARE "pProgressID" CHAR(20);
  DECLARE "RejectionReasonText" CHAR(100);
  DECLARE "pStaffID" CHAR(20);
  DECLARE "pVacID" CHAR(20);
  IF "isnull"("pVacancyID",'') = '' THEN
    SELECT '99:~Please check Vacancy';
    RETURN
  END IF;
  IF "isnull"("pPersonID",'') = '' THEN
    SELECT '98:~Please check Person';
    RETURN
  END IF;
  IF "isnull"("pStatusReasonID",'') = '' THEN
    SELECT '97:~Please check Status ';
    RETURN
  END IF;
  IF NOT "pWebUserID" = any(SELECT "isnull"((SELECT "iqxnetuserid" FROM "iqxnetuserlink" KEY JOIN "employment" KEY JOIN "vacancy" WHERE "vacancyid" = "pVacancyID"),(SELECT "iqxnetuserid" FROM "iqxnetuserlink" KEY JOIN "employment" KEY JOIN "vacancy" KEY JOIN "tempshiftplan" WHERE "tempshiftplanid" = "pVacancyID"))) THEN
    SELECT '96:~Please check Vacancy';
    RETURN
  END IF;
  SET "pVacID" = "isnull"((SELECT "vacancyid" FROM "tempshiftplan" WHERE "tempshiftplanid" = "pVacancyID"),"pVacancyID");
  IF "isnull"("pVacID",'') = '' THEN
    SELECT '95:~Please check Vacancy';
    RETURN
  END IF;
  IF "isnull"("pRejectionReasonID",'') <> '' THEN
    SET "RejectionReasonText" = (SELECT top 1 "reason" FROM "rejectionreason" WHERE "rejectreasonid" = "pRejectionReasonID")
  END IF;
  SET "pStaffID" = (SELECT top 1 "staffid" FROM "vacancy" WHERE "vacancyid" = "pVacID");
  SET "pProgressID" = (SELECT top 1 "progressid" FROM "progress" WHERE "vacancyid" = "pVacID" AND "personid" = "pPersonID");
  IF "isnull"("pProgressID",'') <> '' THEN
    UPDATE "progress" SET "status" = "pStatusReasonID","rejectionreason" = "RejectionReasonText" WHERE "progressid" = "pProgressID"
  ELSE
    INSERT INTO "progress"( "ProgressID","VacancyID","status","rejectionreason","staffid","personid" ) VALUES( "uniquekey"("pVacancyID"),"pVacID","pStatusReasonID","RejectionReasonText","pStaffID","pPersonID" ) 
  END IF;
  SELECT '0:~Success'
END /* DOC
2016-12-12 PC Create routine to set status for progress
2018-08-22 PC improve error handling
 
Tests:
invalid pWebUserID
valid pWebUserID, invalid pVacancyID
valid pWebUserID,pVacancyID, invalid pPersonID
valid pWebUserID,pVacancyID,pPersonID, invalid pStatusReasonID
valid pWebUserID,pPersonID, pStatusReasonID pRejectionReasonID as insert
valid pWebUserID,pPersonID, pStatusReasonID pRejectionReasonID, invalid pVacancyID
valid pWebUserID,pVacancyID,pPersonID, pStatusReasonID invalid pRejectionReasonID as update
valid pWebUserID,pVacancyID,pPersonID, pStatusReasonID, pRejectionReasonID
 
*/
/* 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.client';
insert into status (type,status,name,help) on existing update values ('R','~','test','test');
insert into rejectionreason on existing update values ('TEST','test',0);
insert into rejectionreason on existing update values ('TEST2','test2',1);
update vacancy set staffid='TEST' where vacancyid='TEST';
select * from NetClientVacanciesShortlistAction(null,null,null,null,null);
expect 99*;
select * from NetClientVacanciesShortlistAction('test.client',null,null,null,null);
expect 99*;
select * from NetClientVacanciesShortlistAction('test.client','TEST',null,null,null);
expect 98*;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST',null,null);
expect 97*;
 
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST','~',null);
expect 0*;
select * from progress where vacancyid='TEST';
expect status=~,personid=TEST;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST','~','TEST');
expect 0*;
update progress set rejectionreason='test' where vacancyid='test';
select * from progress where vacancyid='TEST';
expect status=~,personid=TEST,rejectionreason=test;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST','~','TEST2');
expect 0*;
select * from progress where vacancyid='TEST';
expect status=~,personid=TEST,rejectionreason=test2;
update vacancy set staffid=null where vacancyid='TEST';
 
*/
GO
 
COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetClientVacanciesShortlistAction" IS 
{CREATE PROCEDURE pears."NetClientVacanciesShortlistAction"( IN "pWebUserID" CHAR(20),IN "pVacancyID" CHAR(20), IN pPersonID CHAR(20), IN "pStatusReasonID" CHAR(20), IN pRejectionReasonID CHAR(20) DEFAULT NULL)
RESULT( "pResult" CHAR(250) ) 
// IQXNet
BEGIN
	DECLARE pProgressID CHAR(20);
    DECLARE RejectionReasonText CHAR(100);
    DECLARE pStaffID CHAR(20);
    DECLARE pVacID CHAR(20);
 
    IF isnull(pVacancyID,'')='' THEN
        SELECT '99:~Please check Vacancy';
        RETURN;
    END IF;
        IF isnull(pPersonID,'')='' THEN
        SELECT '98:~Please check Person';
        RETURN;
    END IF;
        IF isnull(pStatusReasonID,'')='' THEN
        SELECT '97:~Please check Status ';
        RETURN;
    END IF;
    IF pWebUserID NOT IN (SELECT isnull((SELECT iqxnetuserid FROM iqxnetuserlink KEY JOIN employment KEY JOIN vacancy WHERE vacancyid=pVacancyID),(SELECT iqxnetuserid FROM iqxnetuserlink KEY JOIN employment KEY JOIN vacancy KEY JOIN tempshiftplan WHERE tempshiftplanid=pVacancyID))) THEN
        SELECT '96:~Please check Vacancy';
        RETURN;
    END IF;
    SET pVacID=isnull((SELECT vacancyid FROM  tempshiftplan WHERE tempshiftplanid=pVacancyID),pVacancyID);
    IF isnull(pVacID,'')='' THEN
        SELECT '95:~Please check Vacancy';
        RETURN;
    END IF;
    IF isnull(pRejectionReasonID,'') !='' THEN
        SET RejectionReasonText = (SELECT top 1 reason FROM rejectionreason WHERE rejectreasonid=pRejectionReasonID);
    END IF;
    SET pStaffID=(SELECT top 1 staffid FROM vacancy WHERE vacancyid=pVacID);
    SET pProgressID=(SELECT top 1 progressid FROM progress WHERE vacancyid=pVacID AND personid=pPersonID);
    IF isnull (pProgressID,'') != ''  THEN
        UPDATE progress SET STATUS=pStatusReasonID,rejectionreason=RejectionReasonText WHERE progressid=pProgressID;
    ELSE
        INSERT INTO progress (ProgressID,VacancyID,STATUS,rejectionreason,staffid,personid) VALUES (uniquekey(pVacancyID),pVacID,pStatusReasonID,RejectionReasonText,pStaffID,pPersonID);
    END IF;
    SELECT '0:~Success';
END
 
/* DOC
2016-12-12 PC Create routine to set status for progress
2018-08-22 PC improve error handling
 
Tests:
    invalid pWebUserID
    valid pWebUserID, invalid pVacancyID
    valid pWebUserID,pVacancyID, invalid pPersonID
    valid pWebUserID,pVacancyID,pPersonID, invalid pStatusReasonID
    valid pWebUserID,pPersonID, pStatusReasonID pRejectionReasonID as insert
    valid pWebUserID,pPersonID, pStatusReasonID pRejectionReasonID, invalid pVacancyID
    valid pWebUserID,pVacancyID,pPersonID, pStatusReasonID invalid pRejectionReasonID as update
    valid pWebUserID,pVacancyID,pPersonID, pStatusReasonID, pRejectionReasonID
 
*/
 
/* 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.client';
insert into status (type,status,name,help) on existing update values ('R','~','test','test');
insert into rejectionreason on existing update values ('TEST','test',0);
insert into rejectionreason on existing update values ('TEST2','test2',1);
update vacancy set staffid='TEST' where vacancyid='TEST';
select * from NetClientVacanciesShortlistAction(null,null,null,null,null);
expect 99*;
select * from NetClientVacanciesShortlistAction('test.client',null,null,null,null);
expect 99*;
select * from NetClientVacanciesShortlistAction('test.client','TEST',null,null,null);
expect 98*;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST',null,null);
expect 97*;
 
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST','~',null);
expect 0*;
select * from progress where vacancyid='TEST';
expect status=~,personid=TEST;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST','~','TEST');
expect 0*;
update progress set rejectionreason='test' where vacancyid='test';
select * from progress where vacancyid='TEST';
expect status=~,personid=TEST,rejectionreason=test;
select * from NetClientVacanciesShortlistAction('test.client','TEST','TEST','~','TEST2');
expect 0*;
select * from progress where vacancyid='TEST';
expect status=~,personid=TEST,rejectionreason=test2;
update vacancy set staffid=null where vacancyid='TEST';
 
*/
}
  • database/procedures/pears_netclientvacanciesshortlistaction.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1