pears.NetCandidateBankDetailsSet
Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.
Original SQL
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'; */ }