pears.iqacStartNewInvoice

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

CREATE PROCEDURE "pears"."iqacStartNewInvoice"( 
  /* Application Maintained Function / Procedure - DO NOT EDIT*/
  IN "pTimesheetID" CHAR(20),IN "pCompanyID" CHAR(20),IN "paccountcode" CHAR(12),IN "ptheirref" CHAR(50),IN "pperiod" INTEGER,IN "pnetcharge" DOUBLE,
  OUT "oResult" CHAR(250),OUT "ocompID" CHAR(20),OUT "oacccode" CHAR(12),OUT "otheirref" CHAR(50),OUT "operiod" INTEGER,OUT "onetcharge" DOUBLE ) 
BEGIN
  DECLARE "compname" CHAR(60);
  DECLARE "invgroup" INTEGER;
  SELECT "company"."companyid","period",(SELECT "sum"("round"("unitscharged"*"chargerate",2)) FROM "temptimesheetline"
      WHERE "temptimesheetid" = "temptimesheet"."temptimesheetid"),
    (IF "trim"("isnull"("temptimesheet"."theirref",'')) = '' THEN "placement"."theirref" ELSE "temptimesheet"."theirref" endif),
    "clientcode",(SELECT "groupinvoice" FROM "companyaccount" WHERE "companyid" = "getinvoicecompanyid"("clientcode")) INTO "ocompid",
    "operiod","onetcharge","otheirref","oacccode",
    "invgroup" FROM "temptimesheet" KEY JOIN "placement" KEY JOIN "employment" KEY JOIN "company"
    WHERE "temptimesheetid" = "pTimesheetID";
  -- check if new acc code create  
  IF "paccountcode" <> "oacccode" THEN
    SELECT "name" INTO "compname" FROM "company" WHERE "companyid" = "getinvoicecompanyid"("oacccode");
    CALL "iqacCreateAccount"('Sales',"oacccode","compname")
  END IF;
  -- new invoice needed  
  IF "invgroup" = 0 THEN
    SET "oresult" = '1:~New Invoice';
    RETURN
  ELSEIF("invgroup" = 1) AND("pcompanyid" <> "ocompid") THEN
    SET "oresult" = '1:~New Invoice';
    RETURN
  ELSEIF("invgroup" = 2) AND(("pcompanyid" <> "ocompid") OR("isnull"("ptheirref",'') <> "isnull"("otheirref",''))) THEN
    SET "oresult" = '1:~New Invoice';
    RETURN
  ELSEIF("invgroup" = 3) AND(("pcompanyid" <> "ocompid") OR("pperiod" <> "operiod")) THEN
    SET "oresult" = '1:~New Invoice';
    RETURN
  ELSEIF("invgroup" = 4) AND(("pcompanyid" <> "ocompid") OR("isnull"("ptheirref",'') <> "isnull"("otheirref",'')) OR("pperiod" <> "operiod")) THEN
    SET "oresult" = '1:~New Invoice';
    RETURN
  ELSEIF("invgroup" = 15) AND("paccountcode" <> "oacccode") THEN
    SET "oresult" = '1:~New Invoice';
    RETURN
  ELSEIF(("invgroup" = 12) OR("invgroup" = 16)) AND(("paccountcode" <> "oacccode") OR("isnull"("ptheirref",'') <> "isnull"("otheirref",''))) THEN
    SET "oresult" = '1:~New Invoice';
    RETURN
  ELSEIF("pnetcharge" > 0.0) AND("onetcharge" < 0.0) THEN
    SET "oresult" = '1:~New Invoice';
    RETURN
  END IF;
  SET "oresult" = '0:~Continue'
exception
  WHEN others THEN
    resignal
END
GO
 
COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."iqacStartNewInvoice" IS 
{CREATE PROCEDURE iqacStartNewInvoice 
 
/* Application Maintained Function / Procedure - DO NOT EDIT*/
 
(IN pTimesheetID CHAR(20),IN pCompanyID CHAR(20),IN paccountcode CHAR(12),IN ptheirref CHAR(50),IN pperiod INTEGER,IN pnetcharge DOUBLE, 
      OUT oResult CHAR(250),OUT ocompID CHAR(20),OUT oacccode CHAR(12),OUT otheirref CHAR(50),OUT operiod INTEGER,OUT onetcharge DOUBLE)
BEGIN
  DECLARE compname CHAR(60);
  DECLARE invgroup INTEGER;
  SELECT company.companyid,period,(SELECT SUM(round(unitscharged*chargerate,2)) FROM temptimesheetline WHERE
      temptimesheetid = temptimesheet.temptimesheetid),
    (IF TRIM(isnull(temptimesheet.theirref,'')) = '' THEN placement.theirref ELSE temptimesheet.theirref endif),
    clientcode,(SELECT groupinvoice FROM companyaccount WHERE companyid = getinvoicecompanyid(clientcode)) INTO ocompid,
    operiod,onetcharge,otheirref,oacccode,
    invgroup FROM temptimesheet KEY JOIN placement KEY JOIN employment KEY JOIN company WHERE
    temptimesheetid = pTimesheetID;
  -- check if new acc code create  
  IF paccountcode <> oacccode THEN
    SELECT name INTO compname FROM company WHERE companyid = getinvoicecompanyid(oacccode);
    CALL iqacCreateAccount('Sales',oacccode,compname)
  END IF;
  -- new invoice needed  
  IF invgroup = 0 THEN
    SET oresult='1:~New Invoice';
    RETURN
  ELSEIF(invgroup = 1) AND(pcompanyid <> ocompid) THEN
    SET oresult='1:~New Invoice';
    RETURN
  ELSEIF(invgroup = 2) AND((pcompanyid <> ocompid) OR(isnull(ptheirref,'') <> isnull(otheirref,''))) THEN
    SET oresult='1:~New Invoice';
    RETURN
  ELSEIF(invgroup = 3) AND((pcompanyid <> ocompid) OR(pperiod <> operiod)) THEN
    SET oresult='1:~New Invoice';
    RETURN
  ELSEIF(invgroup = 4) AND((pcompanyid <> ocompid) OR(isnull(ptheirref,'') <> isnull(otheirref,'')) OR(pperiod <> operiod)) THEN
    SET oresult='1:~New Invoice';
    RETURN
  ELSEIF(invgroup = 15) AND(paccountcode <> oacccode) THEN
    SET oresult='1:~New Invoice';
    RETURN
  ELSEIF((invgroup = 12) OR(invgroup = 16)) AND((paccountcode <> oacccode) OR(isnull(ptheirref,'') <> isnull(otheirref,''))) THEN
    SET oresult='1:~New Invoice';
    RETURN
  ELSEIF(pnetcharge > 0.0) AND(onetcharge < 0.0) THEN
    SET oresult='1:~New Invoice';
    RETURN
  END IF;
  SET oresult='0:~Continue'
exception
  WHEN others THEN
    resignal
END
}
  • database/procedures/pears_iqacstartnewinvoice.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1