pears.NetCandidateBankDetailsSet

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

CREATE PROCEDURE "pears"."NetCandidateBankDetailsSet"( IN "pWebUserID" CHAR(20),IN "pBankName" CHAR(30) DEFAULT NULL,IN "pBankSortCode" CHAR(15) DEFAULT NULL,IN "pBankAcName" CHAR(50) DEFAULT NULL,IN "pBankAcNo" CHAR(15) DEFAULT NULL,IN "pBankRef" CHAR(20) DEFAULT NULL,IN "pni" CHAR(20) DEFAULT NULL,IN "pTaxMethod" INTEGER DEFAULT NULL,IN "pHideDetails" INTEGER DEFAULT NULL,IN "pPersonID" CHAR(20) DEFAULT NULL ) 
RESULT( "pResult" CHAR(250) ) 
// IQXWeb
// SOME parameters are ONLY there because we are saving clean FIELDS
BEGIN
  DECLARE "ssql" CHAR(255);
  DECLARE "dBankName" CHAR(50);
  DECLARE "dBankSortCode" CHAR(20);
  DECLARE "dBankAcName" CHAR(60);
  DECLARE "dBankAcNo" CHAR(20);
  DECLARE "dBankRef" CHAR(20);
  DECLARE "dni" CHAR(20);
  DECLARE "DefaultTaxMethod" CHAR(1);
  SET "pPersonID" = "NetCandidateValidPersonID"("pWebUserID","pPersonID");
  IF "pPersonID" IS NULL THEN
    SELECT '97:~Unique candidate link required';
    RETURN
  END IF;
  IF "IQXNetHasPermission"("pWebUserID",'CANDBANKDETAILSEDIT') = 0 THEN
    SELECT '1:~Permission denied';
    RETURN
  END IF;
  IF NOT EXISTS(SELECT * FROM "Pay_Employee" WHERE "Personid" = "pPersonID") THEN
    SET "DefaultTaxMethod" = "WPKMaintainGetSwitchValue"('DEFTAXMETHOD','Global','L');
    IF "trim"("isnull"("DefaultTaxMethod",'')) = '' THEN
      SET "DefaultTaxMethod" = '1'
    END IF;
    INSERT INTO "pay_employee"( "personid","taxmethod" ) VALUES( "ppersonid","DefaultTaxMethod" ) 
  END IF;
  SELECT "BankName","BankSortCode","BankAcName","BankAcNo","BankRef" INTO "dBankName","dBankSortCode","dBankAcName","dBankAcNo","dBankRef" FROM "Pay_Employee" WHERE "Personid" = "pPersonID";
  SELECT "ni" INTO "dni" FROM "person" WHERE "Personid" = "pPersonID";
  SET "ssql" = '';
  IF "isnull"("pBankSortCode",'') <> '' THEN
    IF "left"("pBankAcNo",1) <> '*' THEN
      IF "isnull"("pBankSortCode",'') <> "isnull"("dBankSortCode",'') THEN
        SET "ssql" = "ssql"+',BankSortCode=pBankSortCode'
      END IF;
      IF "isnull"("pBankAcNo",'') <> "isnull"("dBankAcNo",'') THEN
        SET "ssql" = "ssql"+',BankAcNo=pBankAcNo'
      END IF END IF;
    IF "isnull"("pBankName",'') <> "isnull"("dBankName",'') THEN
      SET "ssql" = "ssql"+',BankName=pBankName'
    END IF;
    IF "isnull"("pBankAcName",'') <> "isnull"("dBankAcName",'') THEN
      SET "ssql" = "ssql"+',BankAcName=pBankAcName'
    END IF;
    IF "isnull"("pBankRef",'') <> "isnull"("dBankRef",'') THEN
      SET "ssql" = "ssql"+',BankRef=pBankRef'
    END IF;
    SET "ssql" = "ssql"+',PayMethod=1' -- if bank details present then set pay method to bacs
  END IF;
  IF "ssql" <> '' THEN
    EXECUTE IMMEDIATE 'update Pay_Employee set '+"stuff"("ssql",1,1,'')+' where personid=pPersonID'
  END IF;
  IF "isnull"("pni",'') <> "isnull"("dni",'') THEN
    SELECT "replace"("pni",' ','') INTO "dni";
    EXECUTE IMMEDIATE 'update person set ni=dni where personid=pPersonID'
  END IF;
  CALL "personrecordupdated"("pPersonID");
  SELECT '0:~Success'
END /* DOC
 
2016-10-12 PC create, edit or delete candidate bank details
2017-01-17 PC dummy pHideDetails parameter added to match NetCandidateBankDetails
2017-09-26 PC modify to handle pay details
2017-11-13 PC modified test routine to avoid duplicate insert
2018-01-18 PC look up default pay method and default to bacs when bank details are entered. 
2018-05-07 PC IW-503 hide bank account number showing only last two digits, if bank account unchanged then don't edit account details
2018-06-18 PC modify test routine
2018-07-24 PC include improved error handler
2018-10-10 MHS IW-456 multi-cand fix and tests
2019-02-20 PC IW-786 modify payment method so that if bank details are present use bacs, otherwise use default
2019-03-05 PC IW-873 add top 1 and order by on subqueries
2019-03-05 PC IW-873 revised
2019-4-9 MHS strip out rogue tax code rubbish
 
*/
/* TEST
call NetTestSetup('');
delete from iqxnetrightassigned where iqxnetuserid = 'test.candidate';
delete from pay_employee where personid='TEST';
select * from NetCandidateBankDetailsSet(null,null,null,null,null,null);
Expect 97*;
update person set status='C' where personid='TEST';
insert into iqxnetrightassigned  (iqxnetuserid,iqxnetrightid,assigned)on existing update defaults off values('test.candidate','CANDBANKDETAILSEDIT',1);
select * from NetCandidateBankDetailsSet('test.candidate',null,null,null,null,null);
Expect 0*;
insert into iqxnetrightassigned  (iqxnetuserid,iqxnetrightid,assigned) on existing update defaults off values('test.candidate','CANDBANKDETAILSEDIT',1);
select * from NetCandidateBankDetailsSet('test.candidate',null,null,null,null,null);
Expect 0*;
select count(*) as LineCount from pay_employee where personid='TEST';
Expect LineCount=1;
select * from NetCandidateBankDetailsSet('test.candidate','SmithsBank','99-99-99',null,null,null);
Expect 0*;
select BankName from pay_employee where personid='TEST';
expect BankName=SmithsBank;
select * from NetCandidateBankDetailsSet('test.candidate','SmithsBank','99-99-99','TestName','12345678','RefNo');
Expect 0*;
select * from pay_employee where personid='TEST';
expect BankName=SmithsBank,BankSortCode=99-99-99,BankAcName=TestName,BankAcNo=12345678,BankRef=RefNo;
select * from NetCandidateBankDetailsSet('test.candidate',null,'99-99-99','TestName','12345678','RefNo');
Expect 0*;
select isnull(BankName,'!') as A,isnull(BankSortCode,'!') as B,isnull(BankAcName,'!') as C,isnull(BankAcNo,'!') as D,isnull(BankRef,'!') as E from pay_employee where personid='TEST';
expect A=!,B=99-99-99,C=TestName,D=12345678,E=RefNo;
select * from NetCandidateBankDetailsSet('test.candidate',null,null,null,null,null);
Expect 0*;
select isnull(BankName,'!') as A,isnull(BankSortCode,'!') as B,isnull(BankAcName,'!') as C,isnull(BankAcNo,'!') as D,isnull(BankRef,'!') as E from pay_employee where personid='TEST';
expect A=!,B=99-99-99,C=TestName,D=12345678,E=RefNo;
select (if dateformat(changedate,'dd/mm/yyyy!hh:nn:ss') = dateformat(now(*),'dd/mm/yyyy!hh:nn:ss') then 1 else 0 endif) as IsNow from person where personid='TEST';
expect IsNow=1;
delete from iqxnetrightassigned where iqxnetuserid = 'test.candidate';
 
 
*/
GO
 
COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetCandidateBankDetailsSet" IS 
{CREATE PROCEDURE pears."NetCandidateBankDetailsSet"( IN "pWebUserID" CHAR(20),IN "pBankName" CHAR(30) DEFAULT NULL,IN "pBankSortCode" CHAR(15) DEFAULT NULL,IN "pBankAcName" CHAR(50) DEFAULT NULL,IN "pBankAcNo" CHAR(15) DEFAULT NULL,IN "pBankRef" CHAR(20) DEFAULT NULL, IN pni CHAR(20) DEFAULT NULL, IN pTaxMethod INTEGER DEFAULT NULL, IN pHideDetails INTEGER DEFAULT NULL, IN pPersonID CHAR(20) DEFAULT NULL)
RESULT (pResult CHAR(250))
// IQXWeb
// SOME parameters are ONLY there because we are saving clean FIELDS
BEGIN
    DECLARE "ssql" CHAR(255);
    DECLARE dBankName CHAR(50);
    DECLARE dBankSortCode CHAR(20);
    DECLARE dBankAcName CHAR(60);
    DECLARE dBankAcNo CHAR(20);
    DECLARE dBankRef CHAR(20);
    DECLARE dni CHAR(20);
    DECLARE DefaultTaxMethod CHAR(1);
 
    SET pPersonID=NetCandidateValidPersonID(pWebUserID,pPersonID);
    IF pPersonID IS NULL THEN
      SELECT '97:~Unique candidate link required';
      RETURN;
    END IF;
 
    IF "IQXNetHasPermission"("pWebUserID",'CANDBANKDETAILSEDIT') = 0 THEN
        SELECT '1:~Permission denied';
        RETURN;
    END IF;
 
  	IF NOT EXISTS(SELECT * FROM "Pay_Employee" WHERE "Personid" = "pPersonID") THEN
      SET DefaultTaxMethod=WPKMaintainGetSwitchValue('DEFTAXMETHOD','Global','L');
      IF TRIM(isnull(DefaultTaxMethod,''))='' THEN
        SET DefaultTaxMethod='1';
      END IF;
      INSERT INTO pay_employee(personid, taxmethod ) VALUES (ppersonid, DefaultTaxMethod); 
    END IF;
 
    SELECT BankName,BankSortCode,BankAcName,BankAcNo,BankRef INTO dBankName,dBankSortCode,dBankAcName,dBankAcNo,dBankRef FROM "Pay_Employee" WHERE "Personid" = "pPersonID";
    SELECT ni INTO dni FROM person WHERE "Personid" = "pPersonID";
 
    SET "ssql" = '';
    IF "isnull"("pBankSortCode",'') != '' THEN
        IF LEFT(pBankAcNo,1) !='*' THEN
            IF "isnull"("pBankSortCode",'') <> "isnull"("dBankSortCode",'') THEN
                SET "ssql" = "ssql"+',BankSortCode=pBankSortCode'
            END IF;
            IF "isnull"("pBankAcNo",'') <> "isnull"("dBankAcNo",'') THEN
                SET "ssql" = "ssql"+',BankAcNo=pBankAcNo'
            END IF;
        END IF;
        IF "isnull"("pBankName",'') <> "isnull"("dBankName",'') THEN
            SET "ssql" = "ssql"+',BankName=pBankName'
        END IF;
        IF "isnull"("pBankAcName",'') <> "isnull"("dBankAcName",'') THEN
            SET "ssql" = "ssql"+',BankAcName=pBankAcName'
        END IF;
        IF "isnull"("pBankRef",'') <> "isnull"("dBankRef",'') THEN
            SET "ssql" = "ssql"+',BankRef=pBankRef'
        END IF;
        SET "ssql" = "ssql"+',PayMethod=1' -- if bank details present then set pay method to bacs
    END IF;
 
    IF "ssql" <> '' THEN
        EXECUTE IMMEDIATE 'update Pay_Employee set '+"stuff"("ssql",1,1,'')+' where personid=pPersonID'
    END IF;
    IF "isnull"("pni",'') <> "isnull"("dni",'') THEN
        SELECT REPLACE (pni,' ','') INTO dni;
        EXECUTE IMMEDIATE 'update person set ni=dni where personid=pPersonID'
    END IF;
    CALL "personrecordupdated"("pPersonID");
    SELECT '0:~Success'
END
 
/* DOC
 
2016-10-12 PC create, edit or delete candidate bank details
2017-01-17 PC dummy pHideDetails parameter added to match NetCandidateBankDetails
2017-09-26 PC modify to handle pay details
2017-11-13 PC modified test routine to avoid duplicate insert
2018-01-18 PC look up default pay method and default to bacs when bank details are entered. 
2018-05-07 PC IW-503 hide bank account number showing only last two digits, if bank account unchanged then don't edit account details
2018-06-18 PC modify test routine
2018-07-24 PC include improved error handler
2018-10-10 MHS IW-456 multi-cand fix and tests
2019-02-20 PC IW-786 modify payment method so that if bank details are present use bacs, otherwise use default
2019-03-05 PC IW-873 add top 1 and order by on subqueries
2019-03-05 PC IW-873 revised
2019-4-9 MHS strip out rogue tax code rubbish
 
*/
 
/* TEST
call NetTestSetup('');
delete from iqxnetrightassigned where iqxnetuserid = 'test.candidate';
delete from pay_employee where personid='TEST';
select * from NetCandidateBankDetailsSet(null,null,null,null,null,null);
Expect 97*;
update person set status='C' where personid='TEST';
insert into iqxnetrightassigned  (iqxnetuserid,iqxnetrightid,assigned)on existing update defaults off values('test.candidate','CANDBANKDETAILSEDIT',1);
select * from NetCandidateBankDetailsSet('test.candidate',null,null,null,null,null);
Expect 0*;
insert into iqxnetrightassigned  (iqxnetuserid,iqxnetrightid,assigned) on existing update defaults off values('test.candidate','CANDBANKDETAILSEDIT',1);
select * from NetCandidateBankDetailsSet('test.candidate',null,null,null,null,null);
Expect 0*;
select count(*) as LineCount from pay_employee where personid='TEST';
Expect LineCount=1;
select * from NetCandidateBankDetailsSet('test.candidate','SmithsBank','99-99-99',null,null,null);
Expect 0*;
select BankName from pay_employee where personid='TEST';
expect BankName=SmithsBank;
select * from NetCandidateBankDetailsSet('test.candidate','SmithsBank','99-99-99','TestName','12345678','RefNo');
Expect 0*;
select * from pay_employee where personid='TEST';
expect BankName=SmithsBank,BankSortCode=99-99-99,BankAcName=TestName,BankAcNo=12345678,BankRef=RefNo;
select * from NetCandidateBankDetailsSet('test.candidate',null,'99-99-99','TestName','12345678','RefNo');
Expect 0*;
select isnull(BankName,'!') as A,isnull(BankSortCode,'!') as B,isnull(BankAcName,'!') as C,isnull(BankAcNo,'!') as D,isnull(BankRef,'!') as E from pay_employee where personid='TEST';
expect A=!,B=99-99-99,C=TestName,D=12345678,E=RefNo;
select * from NetCandidateBankDetailsSet('test.candidate',null,null,null,null,null);
Expect 0*;
select isnull(BankName,'!') as A,isnull(BankSortCode,'!') as B,isnull(BankAcName,'!') as C,isnull(BankAcNo,'!') as D,isnull(BankRef,'!') as E from pay_employee where personid='TEST';
expect A=!,B=99-99-99,C=TestName,D=12345678,E=RefNo;
select (if dateformat(changedate,'dd/mm/yyyy!hh:nn:ss') = dateformat(now(*),'dd/mm/yyyy!hh:nn:ss') then 1 else 0 endif) as IsNow from person where personid='TEST';
expect IsNow=1;
delete from iqxnetrightassigned where iqxnetuserid = 'test.candidate';
 
 
*/
}
  • database/procedures/pears_netcandidatebankdetailsset.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1