pears.InvoiceCancel

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

CREATE PROCEDURE "pears"."InvoiceCancel"( 
  /* Application Maintained Function / Procedure - DO NOT EDIT*/
  IN "DocID" CHAR(8),IN "Recreate" SMALLINT,IN "DocDate" DATE ) 
BEGIN atomic
  DECLARE "NewDocID" CHAR(8);
  DECLARE "num" INTEGER;
  DECLARE "CanReason" CHAR(20);
  DECLARE "SCanReason" CHAR(1);
  DECLARE "TSID" CHAR(20);
  DECLARE "ContraTSID" CHAR(20);
  DECLARE "NextTSID" CHAR(20);
  DECLARE "invaddr" long VARCHAR;
  DECLARE "invemail" CHAR(250);
  DECLARE "invprefix" CHAR(10);
  UPDATE "iqacparams" SET "lastdocumentnumber" = "isnull"("lastdocumentnumber",0)+1;
  SELECT "dbid","lastdocumentnumber" INTO "NewDocID","num" FROM "iqacparams";
  SELECT top 1 "invoiceaddress","invoiceemail","invoiceprefix" INTO "invaddr","invemail","invprefix" FROM "iqacdocument" WHERE "documentid" = "docid";
  SET "NewDocID" = "NewDocID"+"base36"("num",6);
  SELECT "timesheetcancelreasonid" INTO "CanReason" FROM "timesheetcancelreason" WHERE "name" = (SELECT "Value" FROM "WPKGlobalSwitchSetting" WHERE "wpkglobalswitchid" = 'INVTSCANCELREASON');
  SELECT "Value" INTO "SCanReason" FROM "WPKGlobalSwitchSetting" WHERE "wpkglobalswitchid" = 'TSSHIFTCANCELREASON';
  INSERT INTO "iqacDocument"( "DocumentID","AccountCode","AccountingDate","Adhoc","Amount","AttentionOf","CurrencyCode","Description","DocumentClass",
    "DocumentDate","DocumentTemplateID","DocumentType","DueDate","EmailBatch","ExchangeRate","InvoicePrefix","InvoiceAddress","InvoiceEmail","LastLineNumber",
    "LedgerID","OurRef","PaymentMethod","PrintBatch","StoredAsForeignCurrency","TheirRef","TransferBatch","VATAmount",
    "WhenCreated","WhoCreated","XRef","XRef2","XRefID","XRefID2" ) 
    SELECT "NewDocID","AccountCode","DocDate","Adhoc",-"Amount","AttentionOf","CurrencyCode","Description","DocumentClass",
      "DocDate","DocumentTemplateID",'Credit Note',"DateAdd"("day","DateDiff"("day","DocumentDate","DueDate"),"DocDate"),0,"ExchangeRate","InvoicePrefix","InvoiceAddress","InvoiceEmail","LastLineNumber",
      "LedgerID","string"("OurRef",'C'),"PaymentMethod",0,"StoredAsForeignCurrency","TheirRef",NULL,-"VATAmount",CURRENT TIMESTAMP,
      "userstaffid","XRef","XRef2","XRefID","XRefID2" FROM "iqacDocument" WHERE "documentid" = "docid";
  UPDATE "iqacDocument" SET "invoiceaddress" = "invaddr","invoiceemail" = "invemail","invoiceprefix" = "invprefix" WHERE "documentid" = "newdocid";
  SET "TSID" = '1';
  FOR "timesheetlines" AS "tscursor" no scroll cursor FOR
    SELECT "LineNumber" AS "LN","XRefID","xref"
      FROM "iqacJournal" WHERE "documentid" = "Docid" ORDER BY "LN" ASC FOR READ ONLY
  do
    IF "xref" = 'T' THEN SELECT "temptimesheetid" INTO "NextTSID" FROM "temptimesheetline" WHERE "temptimesheetlineid" = "XrefID"
    END IF;
    IF "TSID" <> "NextTSID" THEN
      CALL "TemptimesheetCancel"("CanReason","NextTSID","SCanReason","Recreate",'INV');
      // GET contraid FROM cancel TABLE
      SELECT "ContraTempTimeSheetID" INTO "ContraTSID" FROM "TempTimeSheetCancellation" WHERE "OriginalTempTimesheetID" = "NextTSID";
      // USE blank TSID TO mean FIRST ts IN inv
      IF "TSID" IS NULL THEN
        UPDATE "iqacdocument" SET "xrefid" = "ContraTSID" WHERE "documentid" = "docid"
      END IF;
      SET "TSID" = "NextTSID"
    END IF;
    INSERT INTO "iqacjournal"( "DocumentID","LineNumber","NominalCode","AccountingDate","LedgerID","AccountCode","VATReturn","XRefID","XRef","Description","Amount",
      "JournalClass","GoodsAmount","VATAmount","VATRate","VATCode","PriceEach","Quantity","ProductCode","UnitDescription","XRefDocumentID","XRefLineNumber","CashVATCode","CashVATAmount",
      "CashAmount","CashAccountLine","AutoAllocate","SubAllocation","AllocAmount","AllocVATAmount" ) 
      SELECT "NewDocID","LineNumber","NominalCode",CURRENT DATE,"LedgerID","AccountCode","VATReturn","XRefID","XRef","Description",-"Amount","JournalClass",-"GoodsAmount",
        -"VATAmount","VATRate","VATCode","PriceEach",-"Quantity","ProductCode","UnitDescription","XRefDocumentID","XRefLineNumber","CashVATCode",-"CashVATAmount",-"CashAmount","CashAccountLine",
        "AutoAllocate","SubAllocation",-"AllocAmount",-"AllocVATAmount"
        FROM "iqacJournal" WHERE "documentid" = "Docid" AND "LineNumber" = "LN"
  END FOR;
  UPDATE "iqacjournal"
    SET "xrefid"
     = (SELECT "lnew"."temptimesheetlineid" FROM "temptimesheetline" AS "lnew" KEY JOIN "temptimesheet" AS "tnew" JOIN "TempTimeSheetCancellation" AS "c" ON "tnew"."temptimesheetid" = "c"."ContraTempTimeSheetID"
        JOIN "temptimesheet" AS "told" ON "told"."temptimesheetid" = "c"."OriginalTempTimesheetID" KEY JOIN "temptimesheetline" AS "lold" WHERE "lold"."linenumber" = "lnew"."linenumber"
      AND "lold"."temptimesheetlineid" = "iqacjournal"."xrefid")
    WHERE "xref" IN( 'T','F','W','I','M' ) AND "documentid" = "NewDocID";
  UPDATE "iqacjournal" SET "xrefid" = (SELECT "ContraTempTimeSheetID" FROM "TempTimeSheetCancellation" WHERE "OriginalTempTimesheetID" = "xrefid") WHERE "xref" = 'N' AND "documentid" = "NewDocID"
END
GO
 
COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."InvoiceCancel" IS 
{CREATE PROCEDURE InvoiceCancel 
 
/* Application Maintained Function / Procedure - DO NOT EDIT*/
 
( IN DocID CHAR(8),IN Recreate SMALLINT, IN DocDate DATE) 
BEGIN atomic
  DECLARE NewDocID CHAR(8);
  DECLARE num INTEGER;
  DECLARE CanReason CHAR(20);
  DECLARE SCanReason CHAR(1);
  DECLARE TSID CHAR(20);
  DECLARE ContraTSID CHAR(20);
  DECLARE NextTSID CHAR(20);
  DECLARE invaddr long VARCHAR;
  DECLARE invemail CHAR(250);
  DECLARE invprefix CHAR(10);
  UPDATE iqacparams SET lastdocumentnumber = isnull(lastdocumentnumber,0)+1;
  SELECT dbid,lastdocumentnumber INTO NewDocID,num FROM iqacparams;
  SELECT top 1 invoiceaddress, invoiceemail, invoiceprefix INTO invaddr, invemail, invprefix FROM iqacdocument WHERE documentid = docid;
  SET NewDocID = NewDocID+base36(num,6);
  SELECT timesheetcancelreasonid INTO CanReason FROM timesheetcancelreason WHERE name = (SELECT VALUE FROM WPKGlobalSwitchSetting WHERE wpkglobalswitchid = 'INVTSCANCELREASON');
  SELECT VALUE INTO SCanReason FROM WPKGlobalSwitchSetting WHERE wpkglobalswitchid = 'TSSHIFTCANCELREASON';
  INSERT INTO iqacDocument( DocumentID,AccountCode,AccountingDate,Adhoc,Amount,AttentionOf,CurrencyCode,Description,DocumentClass,
    DocumentDate,DocumentTemplateID,DocumentType,DueDate,EmailBatch,ExchangeRate,InvoicePrefix, InvoiceAddress,InvoiceEmail,LastLineNumber,
    LedgerID,OurRef,PaymentMethod,PrintBatch,StoredAsForeignCurrency,TheirRef,TransferBatch,VATAmount,
    WhenCreated,WhoCreated,XRef,XRef2,XRefID,XRefID2 ) 
    SELECT NewDocID,AccountCode,DocDate,Adhoc,-Amount,AttentionOf,CurrencyCode,Description,DocumentClass,
      DocDate,DocumentTemplateID,'Credit Note',DateAdd(DAY,DateDiff(DAY,DocumentDate,DueDate),DocDate),0,ExchangeRate,InvoicePrefix,InvoiceAddress,InvoiceEmail,LastLineNumber,
      LedgerID,string(OurRef,'C'),PaymentMethod,0,StoredAsForeignCurrency,TheirRef,NULL,-VATAmount,CURRENT TIMESTAMP,
      userstaffid,XRef,XRef2,XRefID,XRefID2 FROM iqacDocument WHERE documentid = docid;
  UPDATE  iqacDocument SET invoiceaddress =  invaddr, invoiceemail = invemail, invoiceprefix = invprefix WHERE documentid = newdocid;
  SET TSID = '1';
  FOR timesheetlines AS tscursor no scroll cursor FOR
    SELECT LineNumber AS LN,XRefID,xref
      FROM iqacJournal WHERE documentid = Docid ORDER BY LN ASC FOR READ ONLY
  do
    IF xref = 'T' THEN SELECT temptimesheetid INTO NextTSID FROM temptimesheetline WHERE temptimesheetlineid = XrefID
    END IF;
    IF TSID <> NextTSID THEN
            CALL TemptimesheetCancel(CanReason,NextTSID,SCanReason,Recreate,'INV');
      // GET contraid FROM cancel TABLE
      SELECT ContraTempTimeSheetID INTO ContraTSID FROM TempTimeSheetCancellation WHERE OriginalTempTimesheetID = NextTSID;
      // USE blank TSID TO mean FIRST ts IN inv
      IF TSID IS NULL THEN
        UPDATE iqacdocument SET xrefid = ContraTSID WHERE documentid = docid
      END IF;
      SET TSID = NextTSID
    END IF;
    INSERT INTO iqacjournal( DocumentID,LineNumber,NominalCode,AccountingDate,LedgerID,AccountCode,VATReturn,XRefID,XRef,Description,Amount,
      JournalClass,GoodsAmount,VATAmount,VATRate,VATCode,PriceEach,Quantity,ProductCode,UnitDescription,XRefDocumentID,XRefLineNumber,CashVATCode,CashVATAmount,
      CashAmount,CashAccountLine,AutoAllocate,SubAllocation,AllocAmount,AllocVATAmount ) 
      SELECT NewDocID,LineNumber,NominalCode,CURRENT DATE,LedgerID,AccountCode,VATReturn,XRefID,XRef,Description,-Amount,JournalClass,-GoodsAmount,
        -VATAmount,VATRate,VATCode,PriceEach,-Quantity,ProductCode,UnitDescription,XRefDocumentID,XRefLineNumber,CashVATCode,-CashVATAmount,-CashAmount,CashAccountLine,
        AutoAllocate,SubAllocation,-AllocAmount,-AllocVATAmount
        FROM iqacJournal WHERE documentid = Docid AND LineNumber = LN
  END FOR;
  UPDATE iqacjournal
    SET xrefid
     = (SELECT lnew.temptimesheetlineid FROM temptimesheetline AS lnew KEY JOIN temptimesheet AS tnew JOIN TempTimeSheetCancellation AS c ON tnew.temptimesheetid = c.ContraTempTimeSheetID
        JOIN temptimesheet AS told ON told.temptimesheetid = c.OriginalTempTimesheetID KEY JOIN temptimesheetline AS lold WHERE lold.linenumber = lnew.linenumber
      AND lold.temptimesheetlineid = iqacjournal.xrefid)
    WHERE xref IN( 'T','F','W','I','M' ) AND documentid = NewDocID;
  UPDATE iqacjournal SET xrefid = (SELECT ContraTempTimeSheetID FROM TempTimeSheetCancellation WHERE OriginalTempTimesheetID = xrefid) WHERE xref = 'N' AND documentid = NewDocID
END
}
  • database/procedures/pears_invoicecancel.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1