Merge pull request #477 from J-N-K/fix-ppi

Fix prepaid amount in importer
This commit is contained in:
Jochen Staerk
2024-09-16 12:42:54 +02:00
committed by GitHub
4 changed files with 419 additions and 6 deletions

View File

@@ -39,8 +39,8 @@ public class TransactionCalculator implements IAbsoluteValueProvider {
}
/***
* the invoice total with VAT, corrected by prepaid amount, allowances and
* charges
* the invoice total with VAT, allowances and
* charges, WITHOUT considering prepaid amount
*
* @return the invoice total including taxes
*/

View File

@@ -10,6 +10,7 @@ import java.util.ArrayList;
import java.util.Base64;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
@@ -88,6 +89,12 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
expectedGrandTotal = new BigDecimal(totalNodes.item(0).getTextContent());
}
xpr = xpath.compile("//*[local-name()=\"PrepaidAmount\"]");
NodeList prepaidNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
if (prepaidNodes.getLength() > 0) {
zpp.setTotalPrepaidAmount(new BigDecimal(prepaidNodes.item(0).getTextContent()));
}
Date issueDate = null;
Date dueDate = null;
Date deliveryDate = null;
@@ -307,9 +314,9 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
xpr = xpath.compile("//*[local-name()=\"BuyerReference\"]");
String buyerReference = null;
totalNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
if (totalNodes.getLength() > 0) {
buyerReference = totalNodes.item(0).getTextContent();
prepaidNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
if (prepaidNodes.getLength() > 0) {
buyerReference = prepaidNodes.item(0).getTextContent();
}
if (buyerReference != null) {
zpp.setReferenceNumber(buyerReference);
@@ -409,7 +416,8 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
}
TransactionCalculator tc = new TransactionCalculator(zpp);
String expectedStringTotalGross = tc.getGrandTotal().toPlainString();
String expectedStringTotalGross = tc.getGrandTotal()
.subtract(Objects.requireNonNullElse(zpp.getTotalPrepaidAmount(), BigDecimal.ZERO)).toPlainString();
EStandard whichType;
try {
whichType = getStandard();