diff --git a/library/src/main/java/org/mustangproject/DatedReference.java b/library/src/main/java/org/mustangproject/DatedReference.java new file mode 100644 index 00000000..5d5ca70f --- /dev/null +++ b/library/src/main/java/org/mustangproject/DatedReference.java @@ -0,0 +1,46 @@ +package org.mustangproject; + +import org.mustangproject.ZUGFeRD.IDatedReference; + +import java.beans.BeanProperty; +import java.util.Date; + +public class DatedReference implements IDatedReference { + + protected String ID; + protected Date opDate; + + public DatedReference setDate(Date opDate) { + this.opDate = opDate; + return this; + } + + public DatedReference setID(String ID) { + this.ID = ID; + return this; + } + + public DatedReference() { + + } + + public DatedReference(String ID) { + setID(ID); + } + + public DatedReference(String ID, Date theDate) { + setID(ID); + setDate(theDate); + } + + + @Override + public String getID() { + return ID; + } + + @Override + public Date getDate() { + return opDate; + } +} diff --git a/library/src/main/java/org/mustangproject/Invoice.java b/library/src/main/java/org/mustangproject/Invoice.java index d1a31537..a625ec6d 100644 --- a/library/src/main/java/org/mustangproject/Invoice.java +++ b/library/src/main/java/org/mustangproject/Invoice.java @@ -54,6 +54,7 @@ public class Invoice implements IExportableTransaction { protected BigDecimal totalPrepaidAmount = null; protected Date detailedDeliveryDateStart = null; protected Date detailedDeliveryPeriodEnd = null; + protected IDatedReference tenderReference = null; protected ArrayList Allowances = new ArrayList<>(), Charges = new ArrayList<>(), LogisticsServiceCharges = new ArrayList<>(); @@ -144,6 +145,34 @@ public class Invoice implements IExportableTransaction { return number; } + + + @Override + /*** + * BT-17 + */ + public IDatedReference getTenderReferencedDocument() { + return tenderReference; + } + + + /*** + * BT-17 + * @param dr + * @return + */ + public Invoice setTenderReferencedDocument(DatedReference dr) { + tenderReference=dr; + return this; + } + + public Invoice setTenderReferencedDocument(String ID) { + DatedReference dr=new DatedReference(ID); + setTenderReferencedDocument(dr); + return this; + } + + public Invoice setNumber(String number) { this.number = number; 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 72b61d83..8d317b1a 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java @@ -219,7 +219,7 @@ public interface IExportableTransaction { * * @return mandatory ID, optional Date */ - default IDatedReference getTenderReference() { + default IDatedReference getTenderReferencedDocument() { return null; } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java index 3178c321..e122bfc0 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java @@ -145,7 +145,7 @@ public class ZF2EdgeTest extends MustangReaderTestCase { } @Override - public IDatedReference getTenderReference() { + public IDatedReference getTenderReferencedDocument() { return new IDatedReference() { @Override public String getID() { @@ -159,6 +159,7 @@ public class ZF2EdgeTest extends MustangReaderTestCase { } catch (ParseException e) { // wont happen, I promise :-) } + return null; // wont happen either } }; } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index 1defb4b3..041f4a25 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -596,6 +596,7 @@ public class ZF2PushTest extends TestCase { try { SchemedID gtin = new SchemedID("0160", "2001015001325"); SchemedID gln = new SchemedID("0088", "4304171000002"); + DatedReference dr=new DatedReference("90-kl-98798-C", sdf.parse("2025-10-12")); ze.setTransaction(new Invoice().setCurrency("CHF").addNote("document level 1/2").addNote("document level 2/2").setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setPaymentReference("Verwendungszweck").setDocumentName("Rechnung") .setSellerOrderReferencedDocumentID("9384").setBuyerOrderReferencedDocumentID("28934") .setDetailedDeliveryPeriod(new SimpleDateFormat("yyyyMMdd").parse(occurrenceFrom), new SimpleDateFormat("yyyyMMdd").parse(occurrenceTo)) @@ -608,6 +609,7 @@ public class ZF2PushTest extends TestCase { .addCharge(new Charge(new BigDecimal(0.5)).setReason("quick delivery charge").setTaxPercent(new BigDecimal(16))) .addAllowance(new Allowance(new BigDecimal(0.2)).setReason("discount").setTaxPercent(new BigDecimal(16))) .addCashDiscount(new CashDiscount(new BigDecimal(2), 14)) + .setTenderReferencedDocument(dr) .setDeliveryDate(sdf.parse("2020-11-02")).setNumber(number).setVATDueDateTypeCode(EventTimeCodeTypeConstants.PAYMENT_DATE) .setInvoiceReferencedDocumentID("abc123").addInvoiceReferencedDocument(new ReferencedDocument("abcd1234")) );