From a59fce7dab4ce3cd54441d4744bf770c03ab503a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jochen=20St=C3=A4rk?= Date: Thu, 26 Feb 2026 14:25:23 +0100 Subject: [PATCH] closes #1049 --- History.md | 1 + .../mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java | 10 ++++++---- .../org/mustangproject/validator/XMLValidatorTest.java | 5 +++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/History.md b/History.md index fdf08f10..fbb7b65f 100644 --- a/History.md +++ b/History.md @@ -1,3 +1,4 @@ +#1049 2.22.0 ======= diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index f8afe251..1297b1e8 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -516,8 +516,9 @@ public class ZUGFeRDInvoiceImporter { xpr = xpath.compile("//*[local-name()=\"SpecifiedTradeSettlementHeaderMonetarySummation\"]/*[local-name()=\"TaxTotalAmount\"]|//*[local-name()=\"TaxTotal\"]/*[local-name()=\"TaxAmount\"]"); NodeList taxTotalNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET); if (taxTotalNodes.getLength() > 0) { - if (zpp instanceof CalculatedInvoice) { - ((CalculatedInvoice) zpp).setVATtotal(new BigDecimal(XMLTools.trimOrNull(taxTotalNodes.item(0)))); + String taxTotalStr=XMLTools.trimOrNull(taxTotalNodes.item(0)); + if ((zpp instanceof CalculatedInvoice)&&(taxTotalStr!=null)) { + ((CalculatedInvoice) zpp).setVATtotal(new BigDecimal(taxTotalStr)); } } @@ -525,8 +526,9 @@ public class ZUGFeRDInvoiceImporter { NodeList lineDueNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET); BigDecimal duePayableAmount = null; if (lineDueNodes.getLength() > 0) { - duePayableAmount = new BigDecimal(XMLTools.trimOrNull(lineDueNodes.item(0))); - if (zpp instanceof CalculatedInvoice) { + String duePayableAmountStr=XMLTools.trimOrNull(lineDueNodes.item(0)); + if ((zpp instanceof CalculatedInvoice) && (duePayableAmountStr!=null)) { + duePayableAmount = new BigDecimal(duePayableAmountStr); ((CalculatedInvoice) zpp).setDuePayable(duePayableAmount); } } diff --git a/validator/src/test/java/org/mustangproject/validator/XMLValidatorTest.java b/validator/src/test/java/org/mustangproject/validator/XMLValidatorTest.java index 47989968..051e2b96 100644 --- a/validator/src/test/java/org/mustangproject/validator/XMLValidatorTest.java +++ b/validator/src/test/java/org/mustangproject/validator/XMLValidatorTest.java @@ -85,6 +85,9 @@ public class XMLValidatorTest extends ResourceCase { } catch (final IrrecoverableValidationError e) { noException = false; } + assertTrue(noException); + noException=true;// moving on... + final String res = xv.getXMLResult(); /*OutputStream os = null; try { @@ -166,6 +169,8 @@ public class XMLValidatorTest extends ResourceCase { noException = false; } assertTrue(noException); + noException=true;// moving on... + try { ctx.clear(); tempFile = getResourceAsFile("invalidV2Root.xml");