diff --git a/History.md b/History.md
index c122d89b..c3afba03 100644
--- a/History.md
+++ b/History.md
@@ -1,7 +1,10 @@
-- #678
-- #679
-- #681
-- #689
+2.16.1
+=======
+2025-01-21
+- #678 some ubl creditnote attributes are not parsed
+- #679 validation of a XR does not ignore whitespace
+- #681 IBAN assigned to invoice sender not recipient on direct debit
+- #689 incorrect element order when both charge reason and reasoncode are specified
- be able to set detailedDeliveryPeriodFrom, detailedDeliveryPeriodTo MS188
- updated verapdf from 1.26.1 to 1.26.2
- cashDiscount JSON now corrently ignores values for cii and xr methods
diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml
index 9d83688f..d5b924e9 100644
--- a/Mustang-CLI/pom.xml
+++ b/Mustang-CLI/pom.xml
@@ -3,7 +3,7 @@
org.mustangproject
core
- 2.16.1-SNAPSHOT
+ 2.16.2-SNAPSHOT
4.0.0
org.mustangproject
@@ -12,7 +12,7 @@
should also work for XRechnung/CII.
jar
- 2.16.1-SNAPSHOT
+ 2.16.2-SNAPSHOT
UTF-8
11
@@ -23,7 +23,7 @@
org.mustangproject
validator
- 2.16.1-SNAPSHOT
+ 2.16.2-SNAPSHOT
diff --git a/library/pom.xml b/library/pom.xml
index b00935f6..91695791 100644
--- a/library/pom.xml
+++ b/library/pom.xml
@@ -3,13 +3,13 @@
org.mustangproject
core
- 2.16.1-SNAPSHOT
+ 2.16.2-SNAPSHOT
4.0.0
org.mustangproject
library
- 2.16.1-SNAPSHOT
+ 2.16.2-SNAPSHOT
jar
Library to write, read and validate e-invoices (Factur-X, ZUGFeRD, Order-X, XRechnung/CII)
FOSS Java library to read, write and validate european electronic invoices and orders in the UN/CEFACT
diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java
index 02985e61..6b50de4e 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java
@@ -125,8 +125,8 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase {
// Reading ZUGFeRD
assertEquals("Bei Spiel GmbH", invoice.getOwnOrganisationName());
assertEquals(3, invoice.getZFItems().length);
- assertEquals(invoice.getZFItems()[0].getNotesWithSubjectCode().get(0).getContent(),"Something");
- assertEquals(invoice.getZFItems()[0].getNotesWithSubjectCode().size(),1);
+ assertEquals(invoice.getZFItems()[0].getNotesWithSubjectCode().get(0).getContent(), "Something");
+ assertEquals(invoice.getZFItems()[0].getNotesWithSubjectCode().size(), 1);
assertEquals("400", invoice.getZFItems()[1].getQuantity().toString());
assertEquals("Zahlbar ohne Abzug bis zum 30.05.2017", invoice.getPaymentTermDescription());
assertEquals("AB321", invoice.getReferenceNumber());
@@ -245,7 +245,7 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase {
}
assertFalse(hasExceptions);
TransactionCalculator tc = new TransactionCalculator(invoice);
- assertEquals(new BigDecimal("18.33"), tc.getGrandTotal());
+ assertEquals(new BigDecimal("19.52"), tc.getGrandTotal());
}
public void testBasisQuantityImport() {
@@ -264,6 +264,7 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase {
assertEquals(new BigDecimal("337.60"), tc.getGrandTotal());
}
+
public void testAllowancesChargesImport() {
ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter("./target/testout-ZF2PushChargesAllowances.pdf");
@@ -286,10 +287,10 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase {
ZUGFeRDImporter zii = new ZUGFeRDImporter();
- int version=-1;
+ int version = -1;
try {
zii.fromXML(new String(Files.readAllBytes(Paths.get("./target/testout-XR-Edge.xml")), StandardCharsets.UTF_8));
- version=zii.getVersion();
+ version = zii.getVersion();
} catch (IOException e) {
hasExceptions = true;
} catch (Exception e) {
@@ -305,13 +306,12 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase {
assertFalse(hasExceptions);
-
TransactionCalculator tc = new TransactionCalculator(invoice);
assertEquals(new BigDecimal("1.00"), tc.getGrandTotal());
- assertEquals(version,2);
+ assertEquals(version, 2);
assertTrue(new BigDecimal("1").compareTo(invoice.getZFItems()[0].getQuantity()) == 0);
- LineCalculator lc=new LineCalculator(invoice.getZFItems()[0]);
+ LineCalculator lc = new LineCalculator(invoice.getZFItems()[0]);
assertTrue(new BigDecimal("1").compareTo(lc.getItemTotalNetAmount()) == 0);
assertTrue(invoice.getTradeSettlement().length == 1);
@@ -357,7 +357,7 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase {
ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter(new FileInputStream(CIIinputFile));
Invoice i = zii.extractInvoice();
- assertEquals("DE21860000000086001055", i.getSender().getBankDetails().get(0).getIBAN());
+ assertEquals("DE21860000000086001055", i.getRecipient().getBankDetails().get(0).getIBAN());
ObjectMapper mapper = new ObjectMapper();
String jsonArray = mapper.writeValueAsString(i);
@@ -430,15 +430,15 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase {
CalculatedInvoice invoice = new CalculatedInvoice();
importer.extractInto(invoice);
- boolean isBD=invoice.getTotalPrepaidAmount() instanceof BigDecimal;
+ boolean isBD = invoice.getTotalPrepaidAmount() instanceof BigDecimal;
assertTrue(isBD);
- BigDecimal expectedPrepaid=new BigDecimal(50);
- BigDecimal expectedLineTotal=new BigDecimal("180.76");
- BigDecimal expectedDue=new BigDecimal("147.65");
+ BigDecimal expectedPrepaid = new BigDecimal(50);
+ BigDecimal expectedLineTotal = new BigDecimal("180.76");
+ BigDecimal expectedDue = new BigDecimal("147.65");
if (isBD) {
- BigDecimal amread=invoice.getTotalPrepaidAmount();
- BigDecimal importedLineTotal=invoice.getLineTotalAmount();
- BigDecimal importedDuePayable=invoice.getDuePayable();
+ BigDecimal amread = invoice.getTotalPrepaidAmount();
+ BigDecimal importedLineTotal = invoice.getLineTotalAmount();
+ BigDecimal importedDuePayable = invoice.getDuePayable();
assertTrue(amread.compareTo(expectedPrepaid) == 0);
assertTrue(importedLineTotal.compareTo(expectedLineTotal) == 0);
assertTrue(importedDuePayable.compareTo(expectedDue) == 0);
@@ -475,19 +475,19 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase {
ZUGFeRDInvoiceImporter importer = new ZUGFeRDInvoiceImporter(new FileInputStream(inputFile));
Invoice invoice = importer.extractInvoice();
- assertEquals(1,invoice.getRecipient().getBankDetails().size());
+ assertEquals(1, invoice.getRecipient().getBankDetails().size());
// IBAN belongs to recipient in invoice with sepa debit
- assertEquals("DE21860000000086001055",invoice.getRecipient().getBankDetails().get(0).getIBAN());
- assertEquals(0,invoice.getSender().getBankDetails().size());
+ assertEquals("DE21860000000086001055", invoice.getRecipient().getBankDetails().get(0).getIBAN());
+ assertEquals(0, invoice.getSender().getBankDetails().size());
inputFile = getResourceAsFile("factur-x.xml");
importer = new ZUGFeRDInvoiceImporter(new FileInputStream(inputFile));
invoice = importer.extractInvoice();
- assertEquals(1,invoice.getSender().getBankDetails().size());
+ assertEquals(1, invoice.getSender().getBankDetails().size());
// IBAN belongs to sender in normal invoice
- assertEquals("DE88200800000970375700",invoice.getSender().getBankDetails().get(0).getIBAN());
- assertEquals(0,invoice.getRecipient().getBankDetails().size());
+ assertEquals("DE88200800000970375700", invoice.getSender().getBankDetails().get(0).getIBAN());
+ assertEquals(0, invoice.getRecipient().getBankDetails().size());
}
diff --git a/pom.xml b/pom.xml
index 03f326a5..7346b012 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
org.mustangproject
core
- 2.16.1-SNAPSHOT pom
+ 2.16.2-SNAPSHOT pom
Mustang
diff --git a/validator/pom.xml b/validator/pom.xml
index 6ceb0dd3..6c94fd9e 100644
--- a/validator/pom.xml
+++ b/validator/pom.xml
@@ -3,7 +3,7 @@
org.mustangproject
core
- 2.16.1-SNAPSHOT
+ 2.16.2-SNAPSHOT
4.0.0
org.mustangproject
@@ -11,7 +11,7 @@
Library to validate e-invoices (ZUGFeRD, Factur-X and Xrechnung)
jar
- 2.16.1-SNAPSHOT
+ 2.16.2-SNAPSHOT
@@ -38,7 +38,7 @@
${project.groupId}
library
- 2.16.1-SNAPSHOT
+ 2.16.2-SNAPSHOT
org.dom4j