From 42e8f80481052bf395bbeec0ab5d9bd418edec1a Mon Sep 17 00:00:00 2001 From: Jens Nober Date: Sat, 18 Jan 2025 15:10:20 +0100 Subject: [PATCH] Issue #458 Restore old public api --- .../main/java/org/mustangproject/Invoice.java | 41 +++++++++++++------ .../ZUGFeRD/IExportableTransaction.java | 13 ++++-- .../ZUGFeRD/OXPullProvider.java | 2 +- .../ZUGFeRD/ZUGFeRD1PullProvider.java | 2 +- .../ZUGFeRD/ZUGFeRD2PullProvider.java | 2 +- .../mustangproject/ZUGFeRD/ZF2EdgeTest.java | 8 ++-- 6 files changed, 45 insertions(+), 23 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Invoice.java b/library/src/main/java/org/mustangproject/Invoice.java index 4ada39a9..991a5c8f 100644 --- a/library/src/main/java/org/mustangproject/Invoice.java +++ b/library/src/main/java/org/mustangproject/Invoice.java @@ -57,7 +57,7 @@ public class Invoice implements IExportableTransaction { protected ArrayList Allowances = new ArrayList<>(), Charges = new ArrayList<>(), LogisticsServiceCharges = new ArrayList<>(); - protected IZUGFeRDPaymentTerms[] paymentTerms = null; + protected ArrayList paymentTerms = new ArrayList<>(); protected String invoiceReferencedDocumentID = null; protected Date invoiceReferencedIssueDate; @@ -642,24 +642,41 @@ public class Invoice implements IExportableTransaction { @Override - public IZUGFeRDPaymentTerms[] getPaymentTerms() { - return paymentTerms; + public IZUGFeRDPaymentTerms getPaymentTerms() { + if (!paymentTerms.isEmpty()) { + return paymentTerms.get(0); + } + return null; } @JsonProperty - public Invoice setPaymentTerms(IZUGFeRDPaymentTerms[] paymentTerms) { - this.paymentTerms = paymentTerms; + public Invoice setPaymentTerms(IZUGFeRDPaymentTerms paymentTerm) { + if (paymentTerms.isEmpty()) { + paymentTerms.add(paymentTerm); + } + else { + paymentTerms.set(0, paymentTerm); + } return this; } - public Invoice setPaymentTerms(IZUGFeRDPaymentTerms paymentTerms) { - if (null != paymentTerms) { - this.paymentTerms = new IZUGFeRDPaymentTerms[] { paymentTerms }; - } - else { - this.paymentTerms = null; - } + @Override + public IZUGFeRDPaymentTerms[] getExtendedPaymentTerms() { + return paymentTerms.toArray(new IZUGFeRDPaymentTerms[0]); + } + public Invoice setExtendedPaymentTerms(IZUGFeRDPaymentTerms[] paymentTerms) { + this.paymentTerms.clear(); + this.paymentTerms.addAll(Arrays.asList(paymentTerms)); + return this; + } + + /** + * Set multiple payment terms when using the EXTENDED profile. + * @return + */ + public Invoice addPaymentTerms(IZUGFeRDPaymentTerms paymentTerm) { + paymentTerms.add(paymentTerm); return this; } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java index 2c9e9d53..edc7f538 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java @@ -305,15 +305,22 @@ public interface IExportableTransaction { } /** - * get payment terms. if set, getPaymentTermDescription() and getDueDate() are - * ignored + * get payment terms. if set, getPaymentTermDescription() and getDueDate() are ignored * * @return the IZUGFeRDPaymentTerms of the invoice */ - default IZUGFeRDPaymentTerms[] getPaymentTerms() { + default IZUGFeRDPaymentTerms getPaymentTerms() { return null; } + /** + * Get payment terms for the EXTENDED profile (multiple terms are allowed) + * @return + */ + default IZUGFeRDPaymentTerms[] getExtendedPaymentTerms() { + return new IZUGFeRDPaymentTerms[0]; + } + /** * returns if a rebate agreements exists * diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java index 0ff721e9..2f1c7903 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java @@ -505,7 +505,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider { private String buildPaymentTermsXml() { - final IZUGFeRDPaymentTerms[] paymentTerms = trans.getPaymentTerms(); + final IZUGFeRDPaymentTerms[] paymentTerms = trans.getExtendedPaymentTerms(); String paymentTermsXml = ""; if (paymentTerms == null || paymentTerms.length == 0) { diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java index 6708a6a7..87e6f479 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java @@ -433,7 +433,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider { } private String buildPaymentTermsXml() { - final IZUGFeRDPaymentTerms[] paymentTerms = trans.getPaymentTerms(); + final IZUGFeRDPaymentTerms[] paymentTerms = trans.getExtendedPaymentTerms(); String paymentTermsXml = ""; if (paymentTerms == null || paymentTerms.length == 0) { diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index e397a4c3..166802f6 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -963,7 +963,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } private String buildPaymentTermsXml() { - final IZUGFeRDPaymentTerms[] paymentTerms = trans.getPaymentTerms(); + final IZUGFeRDPaymentTerms[] paymentTerms = trans.getExtendedPaymentTerms(); String paymentTermsXml = ""; if (paymentTerms == null || paymentTerms.length == 0) { diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java index 84af8ca2..f095372b 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java @@ -225,7 +225,7 @@ public class ZF2EdgeTest extends MustangReaderTestCase { } @Override - public IZUGFeRDPaymentTerms[] getPaymentTerms() { + public IZUGFeRDPaymentTerms getPaymentTerms() { PaymentDiscountTerms paymentDiscountTerms = new PaymentDiscountTerms( new BigDecimal(2), // skonto prozent @@ -240,13 +240,11 @@ public class ZF2EdgeTest extends MustangReaderTestCase { e.printStackTrace(); } - return new IZUGFeRDPaymentTerms[]{ - new PaymentTerms( + return new PaymentTerms( "14 Tage 2% Skonto, 30 Tage rein netto", due,// fälligkeitsdatum paymentDiscountTerms //PaymentDiscountTerms - ) - }; + ); } @Override