details: https://code.openbravo.com/erp/devel/pi/rev/68702618a590 changeset: 31570:68702618a590 user: Mark <markmm82 <at> gmail.com> date: Tue Feb 28 14:56:32 2017 -0500 summary: Related to issue 34993: Logic moved to the complete action
To avoid inconsistents scenarios in this issue, the processing logic included inside the c_invoiceline_trg2 trigger was removed and included inside the c_invoice_post function. This way the prepayment amount is always updated when the invoice is completed and not when it lines are created, updated or deleted. All other possible scenarios will be covered when the related design defect https://issues.openbravo.com/view.php?id=35339 be fixed. diffstat: src-db/database/model/functions/C_INVOICE_POST.xml | 13 +++++++- src-db/database/model/triggers/C_INVOICELINE_TRG2.xml | 30 +----------------- 2 files changed, 14 insertions(+), 29 deletions(-) diffs (96 lines): diff -r 9c931e5263c1 -r 68702618a590 src-db/database/model/functions/C_INVOICE_POST.xml --- a/src-db/database/model/functions/C_INVOICE_POST.xml Mon Feb 27 13:05:01 2017 -0500 +++ b/src-db/database/model/functions/C_INVOICE_POST.xml Tue Feb 28 14:56:32 2017 -0500 @@ -22,7 +22,7 @@ * parts created by ComPiere are Copyright (C) ComPiere, Inc.; * All Rights Reserved. * Contributor(s): Openbravo SLU - * Contributions are Copyright (C) 2001-2016 Openbravo, S.L.U. + * Contributions are Copyright (C) 2001-2017 Openbravo, S.L.U. * * Specifically, this derivative work is based upon the following Compiere * file and version. @@ -174,6 +174,7 @@ v_invoiceline_qtysum NUMBER; v_PriceList_ID varchar2(32); v_prepaymentamt NUMBER; + v_prepayment_inorders NUMBER; v_hasTaxes NUMBER; BEGIN @@ -1796,11 +1797,21 @@ END IF; END IF;--FINISH_PROCESS IF (NOT FINISH_PROCESS AND NOT END_PROCESSING) THEN + --Update the prepayment amount from orders related to the invoice lines. + SELECT COALESCE(SUM(fps.paidamt),0) + INTO v_prepayment_inorders + FROM fin_payment_schedule fps + JOIN c_order o ON o.c_order_id=fps.c_order_id + JOIN c_orderline ol ON ol.c_order_id = o.c_order_id + JOIN c_invoiceline il ON il.c_orderline_id = ol.c_orderline_id + WHERE il.c_invoice_id = v_Record_ID; + -- Finish up ------------------------------------------------------------- UPDATE C_INVOICE SET DocStatus='CO', Processed='Y', DocAction='RE', + PrepaymentAmt=v_prepayment_inorders, Updated=now(), UpdatedBy=v_UpdatedBy WHERE C_Invoice_ID=v_Record_ID; diff -r 9c931e5263c1 -r 68702618a590 src-db/database/model/triggers/C_INVOICELINE_TRG2.xml --- a/src-db/database/model/triggers/C_INVOICELINE_TRG2.xml Mon Feb 27 13:05:01 2017 -0500 +++ b/src-db/database/model/triggers/C_INVOICELINE_TRG2.xml Tue Feb 28 14:56:32 2017 -0500 @@ -56,8 +56,6 @@ v_CalcLine NUMBER; v_maxline NUMBER; - v_prepayment NUMBER; - TYPE RECORD IS REF CURSOR; Cur_BOM RECORD; BEGIN @@ -94,8 +92,6 @@ AND C_Invoice_ID=v_ID; v_oldLine:=0; v_newLineNetAmt:=0; - v_prepayment:=0; - IF(v_Processed='N') THEN -- Calculate taxes IF (v_istaxincluded = 'Y') THEN @@ -106,30 +102,8 @@ v_newgrossamt := :new.line_gross_amount; END IF; END IF; - IF (UPDATING OR DELETING) THEN - v_oldLine:= COALESCE(:old.LineNetAmt,0); - IF UPDATING THEN - v_newLineNetAmt:= COALESCE(:new.LineNetAmt,0); - END IF; - - IF (:old.c_orderline_id IS NOT NULL AND (v_oldLine <> 0 OR v_newLineNetAmt <> 0)) THEN - SELECT COALESCE(SUM(fps.paidamt),0) - INTO v_prepayment - FROM fin_payment_schedule fps - JOIN c_order ord ON ord.c_order_id=fps.c_order_id - JOIN c_orderline ordline ON ordline.c_order_id = ord.c_order_id - WHERE ordline.c_orderline_id = :old.c_orderline_id; - IF UPDATING THEN - IF v_newLineNetAmt <> 0 AND v_oldLine = 0 THEN - v_prepayment:= -1 * v_prepayment; - ELSIF v_newLineNetAmt <> 0 AND v_oldLine <> 0 THEN - v_prepayment:= 0; - END IF; - END IF; - UPDATE c_invoice - SET prepaymentamt = prepaymentamt - v_prepayment - WHERE c_invoice_id = v_ID; - END IF; + IF(UPDATING OR DELETING) THEN + v_oldLine:= COALESCE(:old.LineNetAmt,0); END IF; IF (INSERTING OR UPDATING) THEN v_newLineNetAmt := COALESCE(:new.LineNetAmt,0); ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Openbravo-commits mailing list Openbravo-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbravo-commits