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