details:   https://code.openbravo.com/erp/devel/pi/rev/25ba8c2893a6
changeset: 33202:25ba8c2893a6
user:      David Miguelez <david.miguelez <at> openbravo.com>
date:      Fri Jan 19 11:23:37 2018 +0100
summary:   Fixes issue: 37628: Fixes wrong calculation of Taxes for Taxes based
on Tax amount.

When the taxes are based only on tax amount, then the taxbase amount
should not be added to it's calculation.

This change has been done for both Orders and Invoices Taxes triggers.

diffstat:

 src-db/database/model/triggers/C_INVOICELINETAX_TRG.xml |  14 +++++++++++---
 src-db/database/model/triggers/C_ORDERLINETAX_TRG.xml   |  14 +++++++++++---
 2 files changed, 22 insertions(+), 6 deletions(-)

diffs (76 lines):

diff -r 1f43ecba24a4 -r 25ba8c2893a6 
src-db/database/model/triggers/C_INVOICELINETAX_TRG.xml
--- a/src-db/database/model/triggers/C_INVOICELINETAX_TRG.xml   Mon Jan 22 
00:18:10 2018 +0530
+++ b/src-db/database/model/triggers/C_INVOICELINETAX_TRG.xml   Fri Jan 19 
11:23:37 2018 +0100
@@ -17,7 +17,7 @@
   * parts created by ComPiere are Copyright (C) ComPiere, Inc.;
   * All Rights Reserved.
   * Contributor(s): Openbravo SLU
-  * Contributions are Copyright (C) 2010-2017 Openbravo, S.L.U.
+  * Contributions are Copyright (C) 2010-2018 Openbravo, S.L.U.
   *
   * Specifically, this derivative work is based upon the following Compiere
   * file and version.
@@ -83,7 +83,11 @@
     AND Recalculate = 'Y';
     IF(v_Count>0) THEN
       IF (v_DocTaxAmount = 'D' AND (v_Cascade = 'Y' OR v_BaseAmount IN ('TAX', 
'LNATAX', 'TBATAX'))) THEN
-        SELECT COALESCE(CASE WHEN MAX(it.TaxBaseAmt) > 0 THEN 
MAX(ROUND(it.TaxBaseAmt, v_Prec)) + MAX(it.TaxAmt) ELSE 
MIN(ROUND(it.TaxBaseAmt, v_Prec)) + MIN(it.TaxAmt) END, 0)
+        SELECT COALESCE(CASE WHEN MAX(it.TaxBaseAmt) > 0 THEN 
+                          MAX(it.TaxAmt) + CASE WHEN v_BaseAmount = 'TAX' THEN 
0 ELSE MAX(ROUND(it.TaxBaseAmt, v_Prec)) END
+                        ELSE 
+                          MIN(it.TaxAmt) + CASE WHEN v_BaseAmount = 'TAX' THEN 
0 ELSE MIN(ROUND(it.TaxBaseAmt, v_Prec)) END
+                        END, 0)
         INTO v_Increment_Base
         FROM C_InvoiceTax it
         JOIN C_Tax t
@@ -127,7 +131,11 @@
     RAISE_APPLICATION_ERROR(-20000, '@20501@') ;
   ELSE
     IF (v_DocTaxAmount = 'D' AND (v_Cascade = 'Y' OR v_BaseAmount IN ('TAX', 
'LNATAX', 'TBATAX'))) THEN
-      SELECT COALESCE(CASE WHEN MAX(it.TaxBaseAmt) > 0 THEN 
MAX(ROUND(it.TaxBaseAmt, v_Prec)) + MAX(it.TaxAmt) ELSE 
MIN(ROUND(it.TaxBaseAmt, v_Prec)) + MIN(it.TaxAmt) END, 0)
+              SELECT COALESCE(CASE WHEN MAX(it.TaxBaseAmt) > 0 THEN 
+                          MAX(it.TaxAmt) + CASE WHEN v_BaseAmount = 'TAX' THEN 
0 ELSE MAX(ROUND(it.TaxBaseAmt, v_Prec)) END
+                        ELSE 
+                          MIN(it.TaxAmt) + CASE WHEN v_BaseAmount = 'TAX' THEN 
0 ELSE MIN(ROUND(it.TaxBaseAmt, v_Prec)) END
+                        END, 0)
       INTO v_Increment_Base
       FROM C_InvoiceTax it
       JOIN C_Tax t
diff -r 1f43ecba24a4 -r 25ba8c2893a6 
src-db/database/model/triggers/C_ORDERLINETAX_TRG.xml
--- a/src-db/database/model/triggers/C_ORDERLINETAX_TRG.xml     Mon Jan 22 
00:18:10 2018 +0530
+++ b/src-db/database/model/triggers/C_ORDERLINETAX_TRG.xml     Fri Jan 19 
11:23:37 2018 +0100
@@ -17,7 +17,7 @@
   * parts created by ComPiere are Copyright (C) ComPiere, Inc.;
   * All Rights Reserved.
   * Contributor(s): Openbravo SLU
-  * Contributions are Copyright (C) 2010-2017 Openbravo, S.L.U.
+  * Contributions are Copyright (C) 2010-2018 Openbravo, S.L.U.
   *
   * Specifically, this derivative work is based upon the following Compiere
   * file and version.
@@ -81,7 +81,11 @@
     AND C_Tax_ID = :new.C_Tax_ID;
     IF(v_Count>0) THEN
       IF (v_DocTaxAmount = 'D' AND (v_Cascade = 'Y' OR v_BaseAmount IN ('TAX', 
'LNATAX', 'TBATAX'))) THEN
-        SELECT COALESCE(CASE WHEN MAX(ot.TaxBaseAmt) > 0 THEN 
MAX(ROUND(ot.TaxBaseAmt, v_Prec)) + MAX(ot.TaxAmt) ELSE 
MIN(ROUND(ot.TaxBaseAmt, v_Prec)) + MIN(ot.TaxAmt) END, 0)
+        SELECT COALESCE(CASE WHEN MAX(ot.TaxBaseAmt) > 0 THEN 
+                          MAX(ot.TaxAmt) + CASE WHEN v_BaseAmount = 'TAX' THEN 
0 ELSE MAX(ROUND(ot.TaxBaseAmt, v_Prec)) END
+                        ELSE 
+                          MIN(ot.TaxAmt) + CASE WHEN v_BaseAmount = 'TAX' THEN 
0 ELSE MIN(ROUND(ot.TaxBaseAmt, v_Prec)) END
+                        END, 0)
         INTO v_Increment_Base
         FROM C_OrderTax ot
         JOIN C_Tax t
@@ -130,7 +134,11 @@
        RAISE_APPLICATION_ERROR(-20000, '@20501@') ;
     END IF;
     IF (v_DocTaxAmount = 'D' AND (v_Cascade = 'Y' OR v_BaseAmount IN ('TAX', 
'LNATAX', 'TBATAX'))) THEN
-      SELECT COALESCE(CASE WHEN MAX(ot.TaxBaseAmt) > 0 THEN 
MAX(ROUND(ot.TaxBaseAmt, v_Prec)) + MAX(ot.TaxAmt) ELSE 
MIN(ROUND(ot.TaxBaseAmt, v_Prec)) + MIN(ot.TaxAmt) END, 0)
+      SELECT COALESCE(CASE WHEN MAX(ot.TaxBaseAmt) > 0 THEN 
+                          MAX(ot.TaxAmt) + CASE WHEN v_BaseAmount = 'TAX' THEN 
0 ELSE MAX(ROUND(ot.TaxBaseAmt, v_Prec)) END
+                        ELSE 
+                          MIN(ot.TaxAmt) + CASE WHEN v_BaseAmount = 'TAX' THEN 
0 ELSE MIN(ROUND(ot.TaxBaseAmt, v_Prec)) END
+                        END, 0)
       INTO v_Increment_Base
       FROM C_OrderTax ot
       JOIN C_Tax t

------------------------------------------------------------------------------
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

Reply via email to