diff --git a/library/src/main/java/org/mustangproject/Allowance.java b/library/src/main/java/org/mustangproject/Allowance.java index 3ad5b8d1..bb038312 100644 --- a/library/src/main/java/org/mustangproject/Allowance.java +++ b/library/src/main/java/org/mustangproject/Allowance.java @@ -1,5 +1,6 @@ package org.mustangproject; +import org.mustangproject.ZUGFeRD.IExportableTransaction; import org.mustangproject.ZUGFeRD.IZUGFeRDAllowanceCharge; import java.math.BigDecimal; diff --git a/library/src/main/java/org/mustangproject/Charge.java b/library/src/main/java/org/mustangproject/Charge.java index ccc4606f..e2f0aaea 100644 --- a/library/src/main/java/org/mustangproject/Charge.java +++ b/library/src/main/java/org/mustangproject/Charge.java @@ -1,5 +1,6 @@ package org.mustangproject; +import org.mustangproject.ZUGFeRD.IExportableTransaction; import org.mustangproject.ZUGFeRD.IZUGFeRDAllowanceCharge; import org.mustangproject.ZUGFeRD.IZUGFeRDExportableItem; @@ -64,6 +65,17 @@ public class Charge implements IZUGFeRDAllowanceCharge { } } + @Override + public BigDecimal getTotalAmount(IExportableTransaction currentTrans) { +// if (totalAmount!=null) { + return totalAmount; +// } else //if (percent!=null) { + // to be implemented return currentItem.get().multiply(getPercent().divide(new BigDecimal(100))); + //} else { +// throw new RuntimeException("Either totalAmount or percent must be set"); +// } + } + public BigDecimal getPercent() { return percent; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java index bcca7aec..caaf44a2 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java @@ -25,6 +25,7 @@ import java.math.BigDecimal; public interface IZUGFeRDAllowanceCharge { BigDecimal getTotalAmount(IZUGFeRDExportableItem currentItem); + BigDecimal getTotalAmount(IExportableTransaction trans); String getReason(); diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index 3cf0aca5..8837a22f 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -484,14 +484,31 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { xml = xml + buildPaymentTermsXml(); } - xml = xml + " \n" + + String chargeTotalLine=""; + + IZUGFeRDAllowanceCharge[] allowances= trans.getZFAllowances(); + BigDecimal allowanceTotal=new BigDecimal(0); + if ((allowances!=null) && (allowances.length>0)) { + for (IZUGFeRDAllowanceCharge currentAllowance:allowances) { + allowanceTotal=allowanceTotal.add(currentAllowance.getTotalAmount(trans)); + } + } + String allowanceTotalLine=""+currencyFormat(allowanceTotal)+""; + + IZUGFeRDAllowanceCharge[] charges= trans.getZFCharges(); + BigDecimal chargesTotal=new BigDecimal(0); + if ((charges!=null) && (charges.length>0)) { + for (IZUGFeRDAllowanceCharge currentCharge:charges) { + chargesTotal=chargesTotal.add(currentCharge.getTotalAmount(trans)); + } + } + String chargesTotalLine=""+currencyFormat(chargesTotal)+""; + + xml = xml + " \n" + " " + currencyFormat(getTotal()) + "\n" //$NON-NLS-2$ - // currencyID=\"EUR\" - + " 0.00\n" - + " 0.00\n" // - // currencyID=\"EUR\" - // + " 5.80\n" - // + " 14.73\n" + + chargesTotalLine + + allowanceTotalLine + " " + currencyFormat(getTotal()) + "\n" //$NON-NLS-2$ // // // currencyID=\"EUR\" diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceChargeImpl.java b/library/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceChargeImpl.java index 23203647..cd89a4ca 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceChargeImpl.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceChargeImpl.java @@ -31,6 +31,11 @@ public class IZUGFeRDAllowanceChargeImpl implements IZUGFeRDAllowanceCharge { return totalAmount; } + @Override + public BigDecimal getTotalAmount(IExportableTransaction currentTransaction) { + return totalAmount; + } + @Override public String getReason() { return reason; diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index ff2b2be9..4cca0639 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -207,7 +207,7 @@ public class ZF2PushTest extends TestCase { assertFalse(zi.getUTF8().contains("EUR")); // Reading ZUGFeRD - assertEquals("10.71", zi.getAmount()); + assertEquals("11.07", zi.getAmount()); assertEquals(zi.getHolder(), orgname); assertEquals(zi.getForeignReference(), number); try {