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;
public Charge() {
taxPercent=new BigDecimal(0);
}
/***

View File

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

View File

@@ -107,7 +107,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
private BigDecimal getTotalGross() {
BigDecimal res = getTotal();
BigDecimal res = getTaxBasis();
HashMap<BigDecimal, VATAmount> 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\"
+ " <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$
// //
// 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))));
String theXML = new String(ze.getProvider().getXML());
// assertTrue(theXML.contains("777666555")); //the iban
// assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
assertTrue(theXML.contains("777666555")); //the iban
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
ze.export(TARGET_PDF);
} catch (IOException e) {
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)))
.addCharge(new Charge(new BigDecimal(0.5)))
.addAllowance(new Allowance(new BigDecimal(0.2)))
.addCharge(new Charge(new BigDecimal(0.5)).setTaxPercent(new BigDecimal(19)))
.addAllowance(new Allowance(new BigDecimal(0.2)).setTaxPercent(new BigDecimal(19)))
);
String theXML = new String(ze.getProvider().getXML());