From 530116570d63f90c2dc3e0de9e232bc0af86e74b Mon Sep 17 00:00:00 2001 From: jstaerk Date: Mon, 5 Jun 2023 20:52:09 +0200 Subject: [PATCH] support basisquantity in items --- library/src/main/java/org/mustangproject/Item.java | 13 ++++++++++++- .../ZUGFeRD/ZUGFeRDInvoiceImporter.java | 7 +++++++ .../ZUGFeRD/MustangReaderTestCase.java | 12 +++++++++++- .../org/mustangproject/ZUGFeRD/ZF2EdgeTest.java | 4 +++- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Item.java b/library/src/main/java/org/mustangproject/Item.java index 1d3d0eea..e1add10f 100644 --- a/library/src/main/java/org/mustangproject/Item.java +++ b/library/src/main/java/org/mustangproject/Item.java @@ -15,7 +15,7 @@ import java.util.Date; @JsonIgnoreProperties(ignoreUnknown = true) public class Item implements IZUGFeRDExportableItem { - protected BigDecimal price, quantity, tax, grossPrice, lineTotalAmount; + protected BigDecimal price, quantity, basisQuantity, tax, grossPrice, lineTotalAmount; protected Date detailedDeliveryPeriodFrom=null, detailedDeliveryPeriodTo=null; protected String id; protected String referencedLineID=null; @@ -118,6 +118,17 @@ public class Item implements IZUGFeRDExportableItem { } + @Override + public BigDecimal getBasisQuantity() { + return basisQuantity; + } + + public Item setBasisQuantity(BigDecimal basis) { + this.basisQuantity = basis; + return this; + } + + @Override public BigDecimal getQuantity() { diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index 8095f712..6ebf16d9 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -201,6 +201,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { for (int i = 0; i < nodes.getLength(); i++) { String price = "0"; + String basisQuantity = "1"; String name = ""; String description = ""; SchemedID gid = null; @@ -260,6 +261,11 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { price = netChilds.item(netIndex).getTextContent();// ChargeAmount } + if ((netChilds.item(netIndex).getLocalName() != null) + && (netChilds.item(netIndex).getLocalName().equals("BasisQuantity"))) { + basisQuantity = netChilds.item(netIndex).getTextContent();// ChargeAmount + + } } } } @@ -351,6 +357,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { p.addGlobalID(gid); } Item it = new Item(p, prc, qty); + it.setBasisQuantity(new BigDecimal(basisQuantity)); if (rdocs != null) { for (ReferencedDocument rdoc : rdocs) { it.addReferencedDocument(rdoc); diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTestCase.java b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTestCase.java index 72c71b24..d05440ae 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTestCase.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTestCase.java @@ -165,9 +165,10 @@ public abstract class MustangReaderTestCase extends TestCase implements IExporta this.price = price; this.quantity = quantity; this.product = product; + this.basisQuantity = BigDecimal.ONE; } - private BigDecimal price, quantity; + private BigDecimal price, quantity, basisQuantity; private IZUGFeRDExportableProduct product; private String addReference=null; @@ -193,6 +194,15 @@ public abstract class MustangReaderTestCase extends TestCase implements IExporta this.quantity = quantity; } + @Override + public BigDecimal getBasisQuantity() { + return basisQuantity; + } + + public void setBasisQuantity(BigDecimal quantity) { + this.basisQuantity = quantity; + } + @Override public IZUGFeRDExportableProduct getProduct() { return product; diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java index 54891fb2..67013f69 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java @@ -200,8 +200,10 @@ public class ZF2EdgeTest extends MustangReaderTestCase implements IExportableTra Item design=new Item(new BigDecimal("160"), new BigDecimal("1"), designProduct); design.setAddReference("1825"); + design.setBasisQuantity(new BigDecimal(100)); allItems[0] = design; allItems[1] = new Item(new BigDecimal("0.79"), new BigDecimal("400"), balloonProduct); + allItems[2] = new Item(new BigDecimal("0.10"), new BigDecimal("200"), airProduct); return allItems; } @@ -320,7 +322,7 @@ public class ZF2EdgeTest extends MustangReaderTestCase implements IExportableTra assertTrue(resultXML.contains("123")); // Reading ZUGFeRD - assertEquals("496.00", zi.getAmount()); + assertEquals("337.60", zi.getAmount());; assertEquals(zi.getHolder(), getOwnOrganisationName()); assertEquals(zi.getForeignReference(), getNumber()); try {