pears.NetOwnerCandidateSetBank

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

CREATE PROCEDURE "pears"."NetOwnerCandidateSetBank"( IN "pWebUserID" CHAR(20),IN "ppersonid" CHAR(20),IN "pni" CHAR(10) DEFAULT 'NOT-SET',IN "pBankName" CHAR(30) DEFAULT 'NOT-SET',IN "pBankSortCode" CHAR(8) DEFAULT 'NOT-SET',IN "pBankAcName" CHAR(50) DEFAULT 'NOT-SET',IN "pBankAcNo" CHAR(8) DEFAULT 'NOT-SET',IN "pUniqueTaxReference" CHAR(20) DEFAULT 'NOT-SET',IN "poldni" CHAR(10) DEFAULT 'NOT-SET',IN "poldBankName" CHAR(30) DEFAULT 'NOT-SET',IN "poldBankSortCode" CHAR(8) DEFAULT 'NOT-SET',IN "poldBankAcName" CHAR(50) DEFAULT 'NOT-SET',IN "poldBankAcNo" CHAR(8) DEFAULT 'NOT-SET',IN "poldUniqueTaxReference" CHAR(20) DEFAULT 'NOT-SET' ) 
RESULT( "pResult" CHAR(250) ) 
BEGIN
  DECLARE "ssql" CHAR(255); -- sql string
  DECLARE "errmsg" CHAR(150);
  DECLARE "DivID" CHAR(20);
  DECLARE "CurrentStates" CHAR(30);
  SET "ssql" = '';
  -- check that the record is owned by the logged in user
  SET "DivID" = (SELECT FIRST "staff"."divisionid" FROM "iqxnetuser" KEY JOIN "staff" WHERE "iqxnetuser"."iqxnetuserid" = "pWebUserID");
  SET "CurrentStates" = "string"('[',(SELECT FIRST "PersonCurrentStates" FROM "params"),']');
  IF NOT "ppersonid" = any(SELECT "person"."personid" FROM "person" WHERE "person"."divisionid" = "DivID" AND "person"."status" LIKE "CurrentStates") THEN
    SELECT '99:~Permission denied';
    RETURN
  END IF;
  IF "left"("pBankAcNo",1) = '*' THEN
    SELECT '2:~Check your bank details are correct';
    RETURN
  END IF;
  IF "isnull"("pni",'') <> "isnull"("poldni",'') THEN -- National insurance number goes into person table. others go into pay_Employee table
    SET "pni" = "ucase"("pni");
    IF "trim"("isnull"("pni",'')) <> '' THEN
      SET "errmsg" = "validateninumber"("pni");
      IF "trim"("isnull"("errmsg",'')) <> '' THEN
        SELECT '121:~'+"errmsg";
        RETURN
      END IF END IF;
    SET "ssql" = "ssql"+'ni=pni'
  END IF;
  IF "ssql" <> '' THEN
    EXECUTE IMMEDIATE 'update person set '+"ssql"+' where personid=ppersonid'
  END IF;
  -- check if record already present in Pay_Employee. If no, insert stub record first
  IF NOT EXISTS(SELECT * FROM "Pay_Employee" WHERE "Personid" = "ppersonid") THEN
    -- insert stub
    INSERT INTO "pay_employee"( "personid" ) VALUES( "ppersonid" ) 
  END IF;
  SET "ssql" = ''; -- clear for second update to Pay_Employee table
  -- update
  IF "isnull"("pBankName",'') <> "isnull"("poldBankName",'') THEN
    SET "ssql" = "ssql"+',BankName=pBankName'
  END IF;
  IF "isnull"("pBankSortCode",'') <> "isnull"("poldBankSortCode",'') THEN
    SET "ssql" = "ssql"+',BankSortCode=pBankSortCode'
  END IF;
  IF "isnull"("pBankAcName",'') <> "isnull"("poldBankAcName",'') THEN
    SET "ssql" = "ssql"+',BankAcName=pBankAcName'
  END IF;
  IF "isnull"("pBankAcNo",'') <> "isnull"("poldBankAcNo",'') THEN
    SET "ssql" = "ssql"+',BankAcNo=pBankAcNo'
  END IF;
  IF "isnull"("pUniqueTaxReference",'') <> "isnull"("poldUniqueTaxReference",'') THEN
    SET "ssql" = "ssql"+',UniqueTaxReference=pUniqueTaxReference'
  END IF;
  IF "ssql" <> '' THEN
    EXECUTE IMMEDIATE 'update Pay_Employee set '+"stuff"("ssql",1,1,'')+' where personid=ppersonid'
  END IF;
  CALL "personrecordupdated"("ppersonid");
  SELECT '0:~Success'
END /* DOC
2018-05-07 PC IW-503 hide bank account number except for last two digits
2018-08-27 PC improve error handling
 
*/
GO
 
COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."NetOwnerCandidateSetBank" IS 
{CREATE PROCEDURE pears."NetOwnerCandidateSetBank"( IN "pWebUserID" CHAR(20),IN "ppersonid" CHAR(20),IN "pni" CHAR(10) DEFAULT 'NOT-SET',IN "pBankName" CHAR(30) DEFAULT 'NOT-SET',IN "pBankSortCode" CHAR(8) DEFAULT 'NOT-SET',IN "pBankAcName" CHAR(50) DEFAULT 'NOT-SET',IN "pBankAcNo" CHAR(8) DEFAULT 'NOT-SET',IN "pUniqueTaxReference" CHAR(20) DEFAULT 'NOT-SET',IN "poldni" CHAR(10) DEFAULT 'NOT-SET',IN "poldBankName" CHAR(30) DEFAULT 'NOT-SET',IN "poldBankSortCode" CHAR(8) DEFAULT 'NOT-SET',IN "poldBankAcName" CHAR(50) DEFAULT 'NOT-SET',IN "poldBankAcNo" CHAR(8) DEFAULT 'NOT-SET',IN "poldUniqueTaxReference" CHAR(20) DEFAULT 'NOT-SET' ) 
RESULT( "pResult" CHAR(250) ) 
BEGIN
  DECLARE "ssql" CHAR(255); -- sql string
  DECLARE "errmsg" CHAR(150);
  DECLARE "DivID" CHAR(20);
  DECLARE "CurrentStates" CHAR(30);
  SET "ssql" = '';
  -- check that the record is owned by the logged in user
  SET "DivID" = (SELECT FIRST "staff"."divisionid" FROM "iqxnetuser" KEY JOIN "staff" WHERE "iqxnetuser"."iqxnetuserid" = "pWebUserID");
  SET "CurrentStates" = "string"('[',(SELECT FIRST "PersonCurrentStates" FROM "params"),']');
  IF NOT "ppersonid" = any(SELECT "person"."personid" FROM "person" WHERE "person"."divisionid" = "DivID" AND "person"."status" LIKE "CurrentStates") THEN
    SELECT '99:~Permission denied';
    RETURN
  END IF;
  IF LEFT(pBankAcNo,1)='*' THEN
    SELECT '2:~Check your bank details are correct';
    RETURN; 
  END IF;
  IF "isnull"("pni",'') <> "isnull"("poldni",'') THEN -- National insurance number goes into person table. others go into pay_Employee table
    SET "pni" = "ucase"("pni");
    IF "trim"("isnull"("pni",'')) <> '' THEN
      SET "errmsg" = "validateninumber"("pni");
      IF "trim"("isnull"("errmsg",'')) <> '' THEN
        SELECT '121:~'+"errmsg";
        RETURN
      END IF END IF;
    SET "ssql" = "ssql"+'ni=pni'
  END IF;
  IF "ssql" <> '' THEN
    EXECUTE IMMEDIATE 'update person set '+"ssql"+' where personid=ppersonid'
  END IF;
  -- check if record already present in Pay_Employee. If no, insert stub record first
  IF NOT EXISTS(SELECT * FROM "Pay_Employee" WHERE "Personid" = "ppersonid") THEN
    -- insert stub
    INSERT INTO "pay_employee"( "personid" ) VALUES( "ppersonid" ) 
  END IF;
  SET "ssql" = ''; -- clear for second update to Pay_Employee table
  -- update
  IF "isnull"("pBankName",'') <> "isnull"("poldBankName",'') THEN
    SET "ssql" = "ssql"+',BankName=pBankName'
  END IF;
  IF "isnull"("pBankSortCode",'') <> "isnull"("poldBankSortCode",'') THEN
    SET "ssql" = "ssql"+',BankSortCode=pBankSortCode'
  END IF;
  IF "isnull"("pBankAcName",'') <> "isnull"("poldBankAcName",'') THEN
    SET "ssql" = "ssql"+',BankAcName=pBankAcName'
  END IF;
  IF "isnull"("pBankAcNo",'') <> "isnull"("poldBankAcNo",'') THEN
    SET "ssql" = "ssql"+',BankAcNo=pBankAcNo'
  END IF;
  IF "isnull"("pUniqueTaxReference",'') <> "isnull"("poldUniqueTaxReference",'') THEN
    SET "ssql" = "ssql"+',UniqueTaxReference=pUniqueTaxReference'
  END IF;
  IF "ssql" <> '' THEN
    EXECUTE IMMEDIATE 'update Pay_Employee set '+"stuff"("ssql",1,1,'')+' where personid=ppersonid'
  END IF;
  CALL "personrecordupdated"("ppersonid");
  SELECT '0:~Success'
END
 
/* DOC
2018-05-07 PC IW-503 hide bank account number except for last two digits
2018-08-27 PC improve error handling
 
*/
}
  • database/procedures/pears_netownercandidatesetbank.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1