diff --git a/History.md b/History.md index f393403b..fe513bf5 100644 --- a/History.md +++ b/History.md @@ -1,5 +1,6 @@ 2.24.x ======= +- #1162 Skip the elements "Information" and "PayeeSpecifiedCreditorFinancialInstitution" for basic profiles. - #1134 Fix: Trade party universal communication id not imported when scheme is not "email address" (EM) but "electronic address" (0225). - #1150 Remove [D].[M].[Y] after Rechnungsdatum in HTML visualization - #996 Omit ExemptionReason written to line item level for profile EN16931, some validators raise a warning or even an error diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlement.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlement.java index 3dd18d74..5dc4c677 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlement.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlement.java @@ -27,18 +27,15 @@ public interface IZUGFeRDTradeSettlement { * @return zf2 xml */ @JsonIgnore - String getSettlementXML(); - + String getSettlementXML(Profile profile); + /*** * gets the applicableHeaderTradePayment * @return zf2 xml */ @JsonIgnore - default String getPaymentXML() { + default String getPaymentXML() { return null; - } - - - + } } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementDebit.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementDebit.java index f188bfbb..2e017736 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementDebit.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementDebit.java @@ -23,7 +23,7 @@ public interface IZUGFeRDTradeSettlementDebit extends IZUGFeRDTradeSettlement { @Override - default String getSettlementXML() { + default String getSettlementXML(Profile profile) { String xml = "" + "" + XMLTools.encodeXML(getPaymentMeansCode()) + "" + "" + XMLTools.encodeXML(getPaymentMeansInformation()) + "" diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java index 4edb6cb0..7d363687 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java @@ -19,6 +19,10 @@ package org.mustangproject.ZUGFeRD; import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.Arrays; +import java.util.List; + import org.mustangproject.XMLTools; public interface IZUGFeRDTradeSettlementPayment extends IZUGFeRDTradeSettlement { @@ -62,41 +66,42 @@ default String getOwnIBAN() { /*** * @return payment means code (BT-81 / UNTDID 4461) */ - default String getPaymentMeansCode() { return null; }; + default String getPaymentMeansCode() { return null; } /*** * @return payment means description (BT-82) (optional) */ - default String getPaymentMeansInformation() { return null; }; + default String getPaymentMeansInformation() { return null; } @Override @JsonIgnore - default String getSettlementXML() { + default String getSettlementXML(Profile profile) { + List basicProfiles = Arrays.asList(Profiles.getByName("Basic", 1), Profiles.getByName("BasicWL", 2), Profiles.getByName("Basic", 2)); String accountNameStr=""; - if (getAccountName()!=null) { + if (getAccountName() != null) { accountNameStr="" + XMLTools.encodeXML(getAccountName()) + ""; - } String xml = "" - + "" + XMLTools.encodeXML(getPaymentMeansCode()) + "" - + "" + XMLTools.encodeXML(getPaymentMeansInformation()) + ""; + + "" + XMLTools.encodeXML(getPaymentMeansCode()) + ""; + if (!basicProfiles.contains(profile) && getOwnBIC() != null) { + xml += "" + XMLTools.encodeXML(getPaymentMeansInformation()) + ""; + } if (getOwnIBAN() != null) { xml += "" + "" + XMLTools.encodeXML(getOwnIBAN()) + "" + accountNameStr + ""; } - if (getOwnBIC()!=null) { - xml+= "" + if (!basicProfiles.contains(profile) && getOwnBIC() != null) { + xml += "" + "" + XMLTools.encodeXML(getOwnBIC()) + "" // + " "+trans.getOwnBankName()+"" // + ""; - } - xml+= ""; + xml += ""; return xml; } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java index cdc6e1fd..0e13b94e 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java @@ -240,7 +240,7 @@ public void generateXML(IExportableTransaction trans) { for (final IZUGFeRDTradeSettlementPayment payment : trans.getTradeSettlementPayment()) { if (payment != null) { hasDueDate = true; - xml += payment.getSettlementXML(); + xml += payment.getSettlementXML(getProfile()); } } } @@ -250,7 +250,7 @@ public void generateXML(IExportableTransaction trans) { if (payment instanceof IZUGFeRDTradeSettlementPayment) { hasDueDate = true; } - xml += payment.getSettlementXML(); + xml += payment.getSettlementXML(getProfile()); } } } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index bc3a4370..38bd375a 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -813,7 +813,7 @@ public BigDecimal getQuantity() { if (payment != null) { hasDueDate = true; if (getProfile() != Profiles.getByName("Minimum")) { - xml += payment.getSettlementXML(); + xml += payment.getSettlementXML(getProfile()); } } } @@ -825,7 +825,7 @@ public BigDecimal getQuantity() { hasDueDate = true; } if (getProfile() != Profiles.getByName("Minimum")) { - xml += payment.getSettlementXML(); + xml += payment.getSettlementXML(getProfile()); } } } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProviderTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProviderTest.java index 71c95c99..feb6a748 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProviderTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProviderTest.java @@ -2,6 +2,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mustangproject.BankDetails; import org.mustangproject.Invoice; import org.mustangproject.Item; import org.mustangproject.Product; @@ -74,13 +75,14 @@ void should_generate_xml_and_include_basic_profile_and_invoice_content_to_build_ provider.generateXML(invoice); String xml = new String(provider.getXML(), StandardCharsets.UTF_8); - assertTrue(xml.contains("urn:ferd:CrossIndustryDocument:invoice:1p0")); assertTrue(xml.contains("")); assertTrue(xml.contains("urn:ferd:CrossIndustryDocument:invoice:1p0:basic")); assertTrue(xml.contains("INV-1")); assertTrue(xml.contains("")); assertTrue(xml.contains("")); + assertFalse(xml.contains("")); + assertFalse(xml.contains("")); } @Test @@ -154,7 +156,7 @@ private Invoice createMinimalInvoice() { Date deliveryDate = new Date(1700000000000L); Date dueDate = new Date(1700600000000L); - TradeParty seller = new TradeParty("Seller GmbH", "Musterstr. 1", "10115", "Berlin", "DE"); + TradeParty seller = new TradeParty("Seller GmbH", "Musterstr. 1", "10115", "Berlin", "DE").addBankDetails(new BankDetails("DE88200800000970375700", "COBADEFFXXX").setPaymentMeansInformation("whatever it takes")); TradeParty buyer = new TradeParty("Buyer AG", "Beispielweg 2", "80331", "Muenchen", "DE"); Product product = new Product("Beratung", "IT-Beratung", "C62", new BigDecimal("19.00"));