diff --git a/History.md b/History.md index 4a4c67a6..c122d89b 100644 --- a/History.md +++ b/History.md @@ -1,6 +1,10 @@ - #678 - #679 -- #681 +- #681 +- #689 +- 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 2.16.0 ======= diff --git a/library/src/main/java/org/mustangproject/CashDiscount.java b/library/src/main/java/org/mustangproject/CashDiscount.java index 2151489a..b1993a02 100644 --- a/library/src/main/java/org/mustangproject/CashDiscount.java +++ b/library/src/main/java/org/mustangproject/CashDiscount.java @@ -1,5 +1,6 @@ package org.mustangproject; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import org.mustangproject.ZUGFeRD.IZUGFeRDCashDiscount; @@ -63,6 +64,7 @@ public class CashDiscount implements IZUGFeRDCashDiscount { /*** * @return this particular cash discount as cross industry invoice XML */ + @JsonIgnore public String getAsCII() { return ""+ "Cash Discount"+ @@ -78,6 +80,7 @@ public class CashDiscount implements IZUGFeRDCashDiscount { * XRechnung CIUS defined it's own proprietary format for a freetext field * @return this particular cash discount in proprietary xrechnung format */ + @JsonIgnore public String getAsXRechnung() { return "#SKONTO#TAGE="+days+"#PROZENT="+XMLTools.nDigitFormat(percent,2)+"#\n"; } diff --git a/library/src/main/java/org/mustangproject/Invoice.java b/library/src/main/java/org/mustangproject/Invoice.java index 04c8b5dc..639663b9 100644 --- a/library/src/main/java/org/mustangproject/Invoice.java +++ b/library/src/main/java/org/mustangproject/Invoice.java @@ -783,11 +783,20 @@ public class Invoice implements IExportableTransaction { return detailedDeliveryDateStart; } + public Invoice setDetailedDeliveryPeriodFrom(Date dt) { + detailedDeliveryDateStart=dt; + return this; + } + @Override public Date getDetailedDeliveryPeriodTo() { return detailedDeliveryPeriodEnd; } + public Invoice setDetailedDeliveryPeriodTo(Date dt) { + detailedDeliveryPeriodEnd=dt; + return this; + } /** * adds a free text paragraph, which will become an includedNote element diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index 2903d81d..192582f4 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -288,8 +288,8 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { final String allowanceChargeStr = "" + chargeIndicator + "" + percentage + "" + priceFormat(allowance.getTotalAmount(item)) + "" + - reason + reasonCode + + reason + ""; return allowanceChargeStr; } @@ -323,8 +323,8 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { final String itemTotalAllowanceChargeStr = "" + chargeIndicator + "" + percentage + "" + currencyFormat(allowance.getTotalAmount(item)) + "" + - reason + reasonCode + + reason + ""; return itemTotalAllowanceChargeStr; } @@ -744,12 +744,12 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { "true" + "" + "" + currencyFormat(charge.getTotalAmount(calc)) + ""; - if (charge.getReason() != null) { - xml += "" + XMLTools.encodeXML(charge.getReason()) + ""; - } if (charge.getReasonCode() != null) { xml += "" + charge.getReasonCode() + ""; } + if (charge.getReason() != null) { + xml += "" + XMLTools.encodeXML(charge.getReason()) + ""; + } xml += "" + "VAT" + "" + charge.getCategoryCode() + ""; diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java index 746e7cbb..24f4044a 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java @@ -102,6 +102,8 @@ public class DeSerializationTest extends ResourceCase { " \"currency\": \"EUR\",\n" + " \"issueDate\": \"2018-03-03T23:00:00.000+00:00\",\n" + " \"deliveryDate\": \"2018-03-03T23:00:00.000+00:00\",\n" + + " \"detailedDeliveryPeriodFrom\": \"2017-03-03T13:00:00.000+00:00\",\n" + + " \"detailedDeliveryPeriodTo\": \"2017-03-04T13:00:00.000+00:00\",\n" + " \"sender\": {\n" + " \"name\": \"Lieferant GmbH\",\n" + " \"zip\": \"80333\",\n" + @@ -162,7 +164,15 @@ public class DeSerializationTest extends ResourceCase { TransactionCalculator tc = new TransactionCalculator(fromJSON); assertEquals(tc.getGrandTotal(), new BigDecimal("234.43")); assertEquals(fromJSON.getNumber(), fromJSON.getNumber()); + + ZUGFeRD2PullProvider zf2p = new ZUGFeRD2PullProvider(); + zf2p.setProfile(Profiles.getByName("XRechnung")); + zf2p.generateXML(fromJSON); + String theXML = new String(zf2p.getXML(), StandardCharsets.UTF_8); + assertEquals(fromJSON.getZFItems().length, fromJSON.getZFItems().length); + assertTrue(theXML.contains("20170303")); + assertTrue(theXML.contains("20170304")); } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index 56a64b16..412d334a 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -259,9 +259,10 @@ public class ZF2PushTest extends TestCase { .setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE") .setContact(new Contact("contact testname", "123456", "contact.testemail@example.org").setFax("0911623562"))) .setNumber(number) + .addCharge(new Charge(new BigDecimal(1)).setReasonCode("ABK").setReason("AReason").setTaxPercent(new BigDecimal(19))) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance(new BigDecimal("0.1")))) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50)))) - .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(2.0)).addCharge(new Charge(new BigDecimal(1)).setReasonCode("ABK"))) + .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(2.0)).addCharge(new Charge(new BigDecimal(1)).setReasonCode("ABK").setReason("AnotherReason"))) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addCharge(new Charge(new BigDecimal(1))).addAllowance(new Allowance(new BigDecimal("1")))) ); @@ -280,7 +281,7 @@ public class ZF2PushTest extends TestCase { assertTrue(zi.getUTF8().contains("ABK")); // Reading ZUGFeRD - assertEquals("18.33", zi.getAmount()); + assertEquals("19.52", zi.getAmount()); assertEquals(orgname, zi.getHolder()); assertEquals(number, zi.getForeignReference()); try { diff --git a/validator/pom.xml b/validator/pom.xml index d8820ab1..6ceb0dd3 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -73,7 +73,7 @@ org.verapdf validation-model-jakarta - 1.26.1 + 1.26.2