From 90b1d7c7aa64b23d8ad8a1ad9fc068433641dfad Mon Sep 17 00:00:00 2001 From: Sebastian Sieber Date: Wed, 25 Nov 2020 12:34:15 +0100 Subject: [PATCH] Unify the values of taxes Concerning ApplicableHeaderTradeSettlement: The amount in ApplicableTradeTax.CalculatedAmount is different from SpecifiedTradeSettlementHeaderMonetarySummation.TaxTotalAmount. To avoid this I removed the rounding from totalAmount. --- .../org/mustangproject/ZUGFeRD/TransactionCalculator.java | 2 +- .../org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java | 3 ++- .../mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java | 7 ++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java b/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java index bdb6f6e8..187adc97 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java @@ -31,7 +31,7 @@ public class TransactionCalculator implements IAbsoluteValueProvider { VATAmount amount = VATPercentAmountMap.get(currentTaxPercent); res = res.add(amount.getCalculated()); } - return res.setScale(2, RoundingMode.HALF_UP); + return res; } /*** diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index 9e4b624a..9334ffe1 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -6,6 +6,7 @@ import org.w3c.dom.NodeList; import javax.xml.xpath.*; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -259,7 +260,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { } TransactionCalculator tc = new TransactionCalculator(zpp); - String expectedStringTotalGross = tc.getTotalGross().toPlainString(); + String expectedStringTotalGross = tc.getTotalGross().setScale(2, RoundingMode.HALF_UP).toPlainString(); if (!expectedStringTotalGross.equals(XMLTools.nDigitFormat(expectedGrandTotal, 2))) { throw new ParseException("Could not reproduce the invoice, this could mean that it could not be read properly", 0); } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java index a56f637b..add87e7e 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java @@ -20,6 +20,7 @@ package org.mustangproject.ZUGFeRD; import org.mustangproject.Invoice; +import org.mustangproject.XMLTools; import org.junit.FixMethodOrder; import org.junit.runners.MethodSorters; @@ -81,7 +82,7 @@ public class ZF2ZInvoiceImporterTest extends TestCase { assertEquals("Stadthausen", invoice.getSender().getLocation()); TransactionCalculator tc=new TransactionCalculator(invoice); - assertEquals(new BigDecimal("571.04"),tc.getTotalGross()); + assertEquals("571.04", XMLTools.nDigitFormat(tc.getTotalGross(),2)); // name street location zip country, contact name phone email, total amount @@ -102,7 +103,7 @@ public class ZF2ZInvoiceImporterTest extends TestCase { } assertFalse(hasExceptions); TransactionCalculator tc=new TransactionCalculator(invoice); - assertEquals(new BigDecimal("18.33"),tc.getTotalGross()); + assertEquals("18.33", XMLTools.nDigitFormat(tc.getTotalGross(),2)); } public void testAllowancesChargesImport() { @@ -118,7 +119,7 @@ public class ZF2ZInvoiceImporterTest extends TestCase { } assertFalse(hasExceptions); TransactionCalculator tc=new TransactionCalculator(invoice); - assertEquals(new BigDecimal("11.07"),tc.getTotalGross()); + assertEquals("11.07", XMLTools.nDigitFormat(tc.getTotalGross(),2)); // name street location zip country, contact name phone email, total amount