diff --git a/History.md b/History.md index fa2e51df..d10e86b5 100644 --- a/History.md +++ b/History.md @@ -1,8 +1,8 @@ 2.0.3 ======= - - #201 correct embedded files in XRechnung +- transaction calculator getGrandTotal now public 2.0.2 ======= diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java b/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java index bdb6f6e8..d714e4c1 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java @@ -11,10 +11,18 @@ import java.util.HashMap; public class TransactionCalculator implements IAbsoluteValueProvider { protected IExportableTransaction trans; + /*** + * + * @param trans the invoice (or IExportableTransaction) to be calculated + */ public TransactionCalculator(IExportableTransaction trans) { this.trans=trans; } + /*** + * if something had already been paid in advance, this will get it from the transaction + * @return prepaid amount + */ protected BigDecimal getTotalPrepaid() { if (trans.getTotalPrepaidAmount() == null) { return BigDecimal.ZERO; @@ -23,7 +31,11 @@ public class TransactionCalculator implements IAbsoluteValueProvider { } } - protected BigDecimal getTotalGross() { + /*** + * the invoice total with VAT, corrected by prepaid amount, allowances and charges + * @return the invoice total including taxes + */ + public BigDecimal getGrandTotal() { BigDecimal res = getTaxBasis(); HashMap VATPercentAmountMap = getVATPercentAmountMap(); @@ -119,6 +131,10 @@ public class TransactionCalculator implements IAbsoluteValueProvider { return res; } + /*** + * returns the total net value of all items, without document level charges/allowances + * @return item sum + */ protected BigDecimal getTotal() { BigDecimal res = BigDecimal.ZERO; for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) { @@ -128,6 +144,11 @@ public class TransactionCalculator implements IAbsoluteValueProvider { return res; } + /*** + * returns the total net value of the invoice, including charges/allowances on document + * level + * @return item sum +- charges/allowances + */ protected BigDecimal getTaxBasis() { BigDecimal res = getTotal().add(getChargesForPercent(null)).subtract(getAllowancesForPercent(null)); return res; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java index d627d0a4..2a55d93b 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java @@ -305,12 +305,12 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr // // // currencyID=\"EUR\" + " " - + currencyFormat(calc.getTotalGross().subtract(calc.getTotal())) + "\n" - + " " + currencyFormat(calc.getTotalGross()) + "\n" //$NON-NLS-2$ + + currencyFormat(calc.getGrandTotal().subtract(calc.getTotal())) + "\n" + + " " + currencyFormat(calc.getGrandTotal()) + "\n" //$NON-NLS-2$ // // // currencyID=\"EUR\" + " " + currencyFormat(calc.getTotalPrepaid()) + "\n" - + " " + currencyFormat(calc.getTotalGross().subtract(calc.getTotalPrepaid())) + "\n" //$NON-NLS-2$ + + " " + currencyFormat(calc.getGrandTotal().subtract(calc.getTotalPrepaid())) + "\n" //$NON-NLS-2$ // // // currencyID=\"EUR\" + " \n" @@ -439,7 +439,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr if (discountTerms != null) { paymentTermsXml += ""; String currency = trans.getCurrency(); - String basisAmount = currencyFormat(calc.getTotalGross()); + String basisAmount = currencyFormat(calc.getGrandTotal()); paymentTermsXml += "" + basisAmount + ""; paymentTermsXml += "" + discountTerms.getCalculationPercentage().toString() + ""; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index 54d1c169..28261db5 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -607,12 +607,12 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { // // // currencyID=\"EUR\" + " " - + currencyFormat(calc.getTotalGross().subtract(calc.getTaxBasis())) + "\n" - + " " + currencyFormat(calc.getTotalGross()) + "\n" //$NON-NLS-2$ + + currencyFormat(calc.getGrandTotal().subtract(calc.getTaxBasis())) + "\n" + + " " + currencyFormat(calc.getGrandTotal()) + "\n" //$NON-NLS-2$ // // // currencyID=\"EUR\" + " " + currencyFormat(calc.getTotalPrepaid()) + "\n" - + " " + currencyFormat(calc.getTotalGross().subtract(calc.getTotalPrepaid())) + "\n" //$NON-NLS-2$ + + " " + currencyFormat(calc.getGrandTotal().subtract(calc.getTotalPrepaid())) + "\n" //$NON-NLS-2$ // // // currencyID=\"EUR\" + " \n" @@ -665,7 +665,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { if (discountTerms != null) { paymentTermsXml += ""; String currency = trans.getCurrency(); - String basisAmount = currencyFormat(calc.getTotalGross()); + String basisAmount = currencyFormat(calc.getGrandTotal()); paymentTermsXml += "" + basisAmount + ""; paymentTermsXml += "" + discountTerms.getCalculationPercentage().toString() + ""; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index 9e4b624a..00a3c35d 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -259,7 +259,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { } TransactionCalculator tc = new TransactionCalculator(zpp); - String expectedStringTotalGross = tc.getTotalGross().toPlainString(); + String expectedStringTotalGross = tc.getGrandTotal().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..668b8094 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java @@ -20,20 +20,13 @@ package org.mustangproject.ZUGFeRD; import org.mustangproject.Invoice; -import org.junit.FixMethodOrder; -import org.junit.runners.MethodSorters; import junit.framework.TestCase; -import junit.framework.Test; -import junit.framework.TestSuite; import javax.xml.xpath.XPathExpressionException; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; /*** @@ -81,7 +74,7 @@ public class ZF2ZInvoiceImporterTest extends TestCase { assertEquals("Stadthausen", invoice.getSender().getLocation()); TransactionCalculator tc=new TransactionCalculator(invoice); - assertEquals(new BigDecimal("571.04"),tc.getTotalGross()); + assertEquals(new BigDecimal("571.04"),tc.getGrandTotal()); // name street location zip country, contact name phone email, total amount @@ -102,7 +95,7 @@ public class ZF2ZInvoiceImporterTest extends TestCase { } assertFalse(hasExceptions); TransactionCalculator tc=new TransactionCalculator(invoice); - assertEquals(new BigDecimal("18.33"),tc.getTotalGross()); + assertEquals(new BigDecimal("18.33"),tc.getGrandTotal()); } public void testAllowancesChargesImport() { @@ -118,7 +111,7 @@ public class ZF2ZInvoiceImporterTest extends TestCase { } assertFalse(hasExceptions); TransactionCalculator tc=new TransactionCalculator(invoice); - assertEquals(new BigDecimal("11.07"),tc.getTotalGross()); + assertEquals(new BigDecimal("11.07"),tc.getGrandTotal()); // name street location zip country, contact name phone email, total amount