diff --git a/library/src/main/java/org/mustangproject/Item.java b/library/src/main/java/org/mustangproject/Item.java index 4641a0e3..3f302d63 100644 --- a/library/src/main/java/org/mustangproject/Item.java +++ b/library/src/main/java/org/mustangproject/Item.java @@ -172,6 +172,22 @@ public class Item implements IZUGFeRDExportableItem { icnm.getAsNodeMap("ApplicableTradeTax") .flatMap(cnm -> cnm.getAsBigDecimal("RateApplicablePercent", "ApplicablePercent")) .ifPresent(product::setVATPercent); + icnm.getAsNodeMap("SpecifiedTradeAllowanceCharge").ifPresent(stac -> { + stac.getAsNodeMap("ChargeIndicator").ifPresent(ci -> { + String isChargeString=ci.getAsString("Indicator").get(); + String percentString=stac.getAsStringOrNull("CalculationPercent"); + String reason=stac.getAsStringOrNull("Reason"); + Allowance izac=null; + if (isChargeString.equalsIgnoreCase("false")) { + izac = new Allowance(); + } + + izac.setPercent(new BigDecimal(percentString)); + izac.setReason(reason); + addAllowance(izac); + }); + + }); if (recalcPrice && !BigDecimal.ZERO.equals(quantity)) { icnm.getAsNodeMap("SpecifiedTradeSettlementLineMonetarySummation") diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java index 75aa5324..17c1e15b 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java @@ -103,6 +103,32 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase { } + + public void testTheInvoiceImport() { + + ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter("C:\\Users\\jstaerk\\workspace\\XMLExamples\\zfdiverses\\20250108_\\xmlDieWirLesenSollten.xml"); + + boolean hasExceptions = false; + Invoice invoice = null; + try { + invoice = zii.extractInvoice(); + } catch (XPathExpressionException | ParseException e) { + hasExceptions = true; + } + assertFalse(hasExceptions); + // Reading ZUGFeRD + + TransactionCalculator tc = new TransactionCalculator(invoice); + assertEquals(new BigDecimal("0.00"), tc.getDuePayable()); + assertEquals(new BigDecimal("0.00"), tc.getGrandTotal()); + + + // name street location zip country, contact name phone email, total amount + + } + + + public void testInvoiceImportUBL() {