From e8aca9a7d3e137d6c22e6fcf6eed1195f168e752 Mon Sep 17 00:00:00 2001 From: Adriann LERAY Date: Tue, 4 Feb 2025 10:16:37 +0100 Subject: [PATCH] feat: possibility to override ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode Factur-X 1.07.2 specifications indicate that the ram:TypeCode can be other code than 58. Espacially for ChorusPro which expect 30 for SEPA credit transfer --- .../java/org/mustangproject/BankDetails.java | 34 +++++++++++++++++++ .../IZUGFeRDTradeSettlementPayment.java | 24 +++++++++---- 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/library/src/main/java/org/mustangproject/BankDetails.java b/library/src/main/java/org/mustangproject/BankDetails.java index a16976f3..773c12b3 100644 --- a/library/src/main/java/org/mustangproject/BankDetails.java +++ b/library/src/main/java/org/mustangproject/BankDetails.java @@ -23,6 +23,14 @@ public class BankDetails implements IZUGFeRDTradeSettlementPayment { * the "name" of the bank account (holder) */ protected String accountName = null; + /** + * payment means code + */ + protected String paymentMeansCode = "58"; + /** + * payment means information + */ + protected String paymentMeansInformation = "SEPA credit transfer"; /*** * bean constructor @@ -123,5 +131,31 @@ public class BankDetails implements IZUGFeRDTradeSettlementPayment { return accountName; } + /** + * set payment means code + * + * @param paymentMeansCode the payment means code + * @return fluent setter + */ + public BankDetails setPaymentMeansCode(String paymentMeansCode) { + this.paymentMeansCode = paymentMeansCode; + return this; + } + @Override + public String getPaymentMeansCode() { return paymentMeansCode; } + + /** + * set payment means information + * + * @param paymentMeansInformation the payment mean information + * @return fluent setter + */ + public BankDetails setPaymentMeansInformation(String paymentMeansInformation) { + this.paymentMeansInformation = paymentMeansInformation; + return this; + } + + @Override + public String getPaymentMeansInformation() { return paymentMeansInformation; } } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java index 9731a9a5..4edb6cb0 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java @@ -59,6 +59,16 @@ public interface IZUGFeRDTradeSettlementPayment extends IZUGFeRDTradeSettlement */ default String getAccountName() { return null; } + /*** + * @return payment means code (BT-81 / UNTDID 4461) + */ + default String getPaymentMeansCode() { return null; }; + + /*** + * @return payment means description (BT-82) (optional) + */ + default String getPaymentMeansInformation() { return null; }; + @Override @JsonIgnore @@ -70,12 +80,14 @@ public interface IZUGFeRDTradeSettlementPayment extends IZUGFeRDTradeSettlement } String xml = "" - + "58" - + "SEPA credit transfer" - + "" - + "" + XMLTools.encodeXML(getOwnIBAN()) + ""; - xml+= accountNameStr; - xml+= ""; + + "" + XMLTools.encodeXML(getPaymentMeansCode()) + "" + + "" + XMLTools.encodeXML(getPaymentMeansInformation()) + ""; + if (getOwnIBAN() != null) { + xml += "" + + "" + XMLTools.encodeXML(getOwnIBAN()) + "" + + accountNameStr + + ""; + } if (getOwnBIC()!=null) { xml+= "" + "" + XMLTools.encodeXML(getOwnBIC()) + ""