corrected document level charges

This commit is contained in:
Jochen Stärk
2020-10-01 08:26:10 +02:00
parent 0776960e24
commit efcbdb7b45
4 changed files with 17 additions and 13 deletions

View File

@@ -15,7 +15,7 @@ public class Charge implements IZUGFeRDAllowanceCharge {
protected String categoryCode; protected String categoryCode;
public Charge() { public Charge() {
taxPercent=new BigDecimal(0);
} }
/*** /***

View File

@@ -56,6 +56,7 @@ public class VATAmount {
public void setBasis(BigDecimal basis) { public void setBasis(BigDecimal basis) {
this.basis = basis; this.basis = basis;
} }
public BigDecimal getCalculated() { public BigDecimal getCalculated() {

View File

@@ -107,7 +107,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
private BigDecimal getTotalGross() { private BigDecimal getTotalGross() {
BigDecimal res = getTotal(); BigDecimal res = getTaxBasis();
HashMap<BigDecimal, VATAmount> VATPercentAmountMap = getVATPercentAmountMap(); HashMap<BigDecimal, VATAmount> VATPercentAmountMap = getVATPercentAmountMap();
for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) {
VATAmount amount = VATPercentAmountMap.get(currentTaxPercent); VATAmount amount = VATPercentAmountMap.get(currentTaxPercent);
@@ -121,11 +121,9 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
IZUGFeRDAllowanceCharge[] charges= trans.getZFCharges(); IZUGFeRDAllowanceCharge[] charges= trans.getZFCharges();
if ((charges!=null) && (charges.length>0)) { if ((charges!=null) && (charges.length>0)) {
for (IZUGFeRDAllowanceCharge currentCharge:charges) { for (IZUGFeRDAllowanceCharge currentCharge:charges) {
res=res.add(currentCharge.getTotalAmount(trans)); res=res.add(currentCharge.getTotalAmount(trans));
} }
} }
return res; return res;
} }
private BigDecimal getAllowances() { private BigDecimal getAllowances() {
@@ -136,8 +134,6 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
res=res.add(currentAllowance.getTotalAmount(trans)); res=res.add(currentAllowance.getTotalAmount(trans));
} }
} }
return res; return res;
} }
private BigDecimal getTotal() { private BigDecimal getTotal() {
@@ -185,7 +181,10 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
if (theAmount==null) { if (theAmount==null) {
theAmount=new VATAmount(new BigDecimal(0),new BigDecimal(0),"S"); 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(); IZUGFeRDAllowanceCharge[] allowances= trans.getZFAllowances();
@@ -195,7 +194,11 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
if (theAmount==null) { if (theAmount==null) {
theAmount=new VATAmount(new BigDecimal(0),new BigDecimal(0),"S"); 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\" // currencyID=\"EUR\"
+ " <ram:TaxTotalAmount currencyID=\"" + trans.getCurrency() + "\">" + " <ram:TaxTotalAmount currencyID=\"" + trans.getCurrency() + "\">"
+ currencyFormat(getTotalGross().subtract(getTotal())) + "</ram:TaxTotalAmount>\n" + currencyFormat(getTotalGross().subtract(getTaxBasis())) + "</ram:TaxTotalAmount>\n"
+ " <ram:GrandTotalAmount>" + currencyFormat(getTotalGross()) + "</ram:GrandTotalAmount>\n" //$NON-NLS-2$ + " <ram:GrandTotalAmount>" + currencyFormat(getTotalGross()) + "</ram:GrandTotalAmount>\n" //$NON-NLS-2$
// // // //
// currencyID=\"EUR\" // currencyID=\"EUR\"

View File

@@ -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)))); 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()); String theXML = new String(ze.getProvider().getXML());
// assertTrue(theXML.contains("777666555")); //the iban assertTrue(theXML.contains("777666555")); //the iban
// assertTrue(theXML.contains("<rsm:CrossIndustryInvoice")); assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
ze.export(TARGET_PDF); ze.export(TARGET_PDF);
} catch (IOException e) { } catch (IOException e) {
fail("IOException should not be raised in testEdgeExport"); fail("IOException should not be raised in testEdgeExport");
@@ -191,8 +191,8 @@ public class ZF2PushTest extends TestCase {
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0))) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0))) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0))) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))
.addCharge(new Charge(new BigDecimal(0.5))) .addCharge(new Charge(new BigDecimal(0.5)).setTaxPercent(new BigDecimal(19)))
.addAllowance(new Allowance(new BigDecimal(0.2))) .addAllowance(new Allowance(new BigDecimal(0.2)).setTaxPercent(new BigDecimal(19)))
); );
String theXML = new String(ze.getProvider().getXML()); String theXML = new String(ze.getProvider().getXML());