From efcbdb7b450427e0960fea7111a6de7e84ec43d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jochen=20Sta=CC=88rk?= Date: Thu, 1 Oct 2020 08:26:10 +0200 Subject: [PATCH] corrected document level charges --- .../main/java/org/mustangproject/Charge.java | 2 +- .../org/mustangproject/ZUGFeRD/VATAmount.java | 1 + .../ZUGFeRD/ZUGFeRD2PullProvider.java | 19 +++++++++++-------- .../mustangproject/ZUGFeRD/ZF2PushTest.java | 8 ++++---- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Charge.java b/library/src/main/java/org/mustangproject/Charge.java index e2f0aaea..dc04e2e5 100644 --- a/library/src/main/java/org/mustangproject/Charge.java +++ b/library/src/main/java/org/mustangproject/Charge.java @@ -15,7 +15,7 @@ public class Charge implements IZUGFeRDAllowanceCharge { protected String categoryCode; public Charge() { - + taxPercent=new BigDecimal(0); } /*** diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/VATAmount.java b/library/src/main/java/org/mustangproject/ZUGFeRD/VATAmount.java index 33775e9b..f08b406f 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/VATAmount.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/VATAmount.java @@ -56,6 +56,7 @@ public class VATAmount { public void setBasis(BigDecimal basis) { this.basis = basis; + } public BigDecimal getCalculated() { diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index 280fa4ea..f3709e01 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -107,7 +107,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { private BigDecimal getTotalGross() { - BigDecimal res = getTotal(); + BigDecimal res = getTaxBasis(); HashMap VATPercentAmountMap = getVATPercentAmountMap(); for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { VATAmount amount = VATPercentAmountMap.get(currentTaxPercent); @@ -121,11 +121,9 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { IZUGFeRDAllowanceCharge[] charges= trans.getZFCharges(); if ((charges!=null) && (charges.length>0)) { for (IZUGFeRDAllowanceCharge currentCharge:charges) { - res=res.add(currentCharge.getTotalAmount(trans)); } } - return res; } private BigDecimal getAllowances() { @@ -136,8 +134,6 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { res=res.add(currentAllowance.getTotalAmount(trans)); } } - - return res; } private BigDecimal getTotal() { @@ -185,7 +181,10 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { if (theAmount==null) { theAmount=new VATAmount(new BigDecimal(0),new BigDecimal(0),"S"); } - theAmount.setCalculated(theAmount.getCalculated().add(currentCharge.getTotalAmount(trans))); + theAmount.setBasis(theAmount.getBasis().add(currentCharge.getTotalAmount(trans))); + BigDecimal factor=currentCharge.getTaxPercent().divide(new BigDecimal(100)); + theAmount.setCalculated(theAmount.getBasis().multiply(factor)); + hm.put(currentCharge.getTaxPercent(), theAmount); } } IZUGFeRDAllowanceCharge[] allowances= trans.getZFAllowances(); @@ -195,7 +194,11 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { if (theAmount==null) { theAmount=new VATAmount(new BigDecimal(0),new BigDecimal(0),"S"); } - theAmount.setCalculated(theAmount.getCalculated().subtract(currentAllowance.getTotalAmount(trans))); + theAmount.setBasis(theAmount.getBasis().subtract(currentAllowance.getTotalAmount(trans))); + BigDecimal factor=currentAllowance.getTaxPercent().divide(new BigDecimal(100)); + theAmount.setCalculated(theAmount.getBasis().multiply(factor)); + + hm.put(currentAllowance.getTaxPercent(), theAmount); } } @@ -586,7 +589,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { // // // currencyID=\"EUR\" + " " - + currencyFormat(getTotalGross().subtract(getTotal())) + "\n" + + currencyFormat(getTotalGross().subtract(getTaxBasis())) + "\n" + " " + currencyFormat(getTotalGross()) + "\n" //$NON-NLS-2$ // // // currencyID=\"EUR\" diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index 71ba4626..b5e8b33a 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -56,8 +56,8 @@ public class ZF2PushTest extends TestCase { ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setContractReferencedDocument("0815").setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE").addBankDetails(new BankDetails("777666555","DE4321"))).setOwnTaxID("4711").setOwnVATID("DE19990815").setRecipient(new TradeParty("Franz Müller","teststr.12", "55232", "Entenhausen", "DE").setContact(new Contact("nameRep", "phoneRep", "emailRep@test.com"))).setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))); String theXML = new String(ze.getProvider().getXML()); - // assertTrue(theXML.contains("777666555")); //the iban - // assertTrue(theXML.contains("