details:   https://code.openbravo.com/erp/devel/pi/rev/fc4300d9862a
changeset: 34961:fc4300d9862a
user:      Atul Gaware <atul.gaware <at> openbravo.com>
date:      Tue Nov 13 19:23:04 2018 +0530
summary:   Fixes Issue 39474: Commission calculation error

When commission is set as Cascade = Yes, comission details
with invoiceline or orderline are deleted before creating
lines are same subsequent invoiceline or orderline.
Hence the information about the amount is lost once such
lines are deleted. To keep track amounts of the multiple
invoiceline or orderline they are stored in variable and
added to same subsequent invoiceline or orderline being
created.

diffstat:

 src-db/database/model/functions/C_COMMISSION_PROCESS.xml |  19 ++++++++++++++-
 1 files changed, 17 insertions(+), 2 deletions(-)

diffs (56 lines):

diff -r e028e67c832c -r fc4300d9862a 
src-db/database/model/functions/C_COMMISSION_PROCESS.xml
--- a/src-db/database/model/functions/C_COMMISSION_PROCESS.xml  Tue Nov 13 
13:40:29 2018 +0100
+++ b/src-db/database/model/functions/C_COMMISSION_PROCESS.xml  Tue Nov 13 
19:23:04 2018 +0530
@@ -16,7 +16,7 @@
   * Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, 
parts
   * created by ComPiere are Copyright (C) ComPiere, Inc.;   All Rights 
Reserved.
   * Contributor(s): Openbravo SLU
-  * Contributions are Copyright (C) 2001-2017 Openbravo S.L.U.
+  * Contributions are Copyright (C) 2001-2018 Openbravo S.L.U.
   
******************************************************************************/
   -- Logistice
   v_ResultStr VARCHAR2(2000):='';
@@ -186,6 +186,7 @@
       v_C_Currency_ID C_CommissionDetail.C_Currency_ID%TYPE;
       v_Amt C_CommissionDetail.ActualAmt%TYPE;
       v_Qty C_CommissionDetail.ActualQty%TYPE;
+      v_Amt_Deleted C_CommissionDetail.ActualAmt%TYPE;
       v_C_OrderLine_ID VARCHAR2(32) ;
       v_C_InvoiceLine_ID VARCHAR2(32) ;
       v_Reference C_CommissionDetail.Reference%TYPE;
@@ -400,12 +401,26 @@
           IF (v_isCascade = 'Y') THEN  --DELETE DETAILS
             v_ResultStr:='DeletingDetail';
             IF (v_DocBasisType='I') THEN  --invoice
+              SELECT ActualAmt
+              INTO v_Amt_Deleted
+              FROM C_CommissionDetail
+              WHERE c_invoiceline_id = v_C_InvoiceLine_ID
+              AND EXISTS (SELECT 1 FROM c_commissionamt
+                                    WHERE c_commissionamt.c_commissionrun_id = 
v_C_CommissionRun_ID
+                                    AND C_CommissionDetail.c_commissionamt_id 
= c_commissionamt.c_commissionamt_id);
               DELETE FROM C_CommissionDetail 
               WHERE c_commissionamt_id IN (select c_commissionamt_id
                                          from c_commissionamt 
                                          where 
c_commissionamt.c_commissionrun_id = v_C_CommissionRun_ID)  
                     AND c_invoiceline_id = v_C_InvoiceLine_ID;
             ELSE --orders
+              SELECT ActualAmt
+              INTO v_Amt_Deleted
+              FROM C_CommissionDetail
+              WHERE c_orderline_id = v_C_OrderLine_ID
+              AND EXISTS (SELECT 1 FROM c_commissionamt
+                                    WHERE c_commissionamt.c_commissionrun_id = 
v_C_CommissionRun_ID
+                                    AND C_CommissionDetail.c_commissionamt_id 
= c_commissionamt.c_commissionamt_id);
               DELETE FROM C_CommissionDetail 
               WHERE c_commissionamt_id IN (select c_commissionamt_id 
                                          from c_commissionamt 
@@ -429,7 +444,7 @@
               (
                 v_NextNo, v_C_CommissionAmt_ID, v_AD_Client_ID, v_AD_Org_ID,
                  'Y', now(), '0', now(),
-                '0', v_C_Currency_ID, v_Amt, 0,
+                '0', v_C_Currency_ID, v_Amt + COALESCE(v_Amt_Deleted, 0), 0,
                 v_Qty, -- Conversion done by Trigger
                 v_C_OrderLine_ID, v_C_InvoiceLine_ID, v_Reference, v_Info, 
v_isCostCalculated 
               )


_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to