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"));