diff --git a/BT17.xml b/BT17.xml
deleted file mode 100644
index b8d67ca7..00000000
--- a/BT17.xml
+++ /dev/null
@@ -1,205 +0,0 @@
-
-
-
-
-
-
-
- urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended
-
-
-
- RE-20170509/505
- RECHNUNG
- 380
-
- 20170509
-
-
-
-
-
- 1
-
-
- Künstlerische Gestaltung (Stunde): Einer Beispielrechnung
-
-
-
- 160.0000
- 100.0000
-
-
-
- 1.0000
-
-
-
- VAT
- Intra-community supply
- K
- 0.00
-
-
- 1.60
-
-
- 1825
- 130
-
-
-
-
-
- 2
-
-
- Bestellerweiterung für E&F Umbau
-
-
-
- 0.7900
- 1.0000
-
-
-
- 400.0000
-
-
-
- VAT
- Intra-community supply
- K
- 0.00
-
-
- 316.00
-
-
-
-
-
- 3
-
-
- Heiße Luft pro Liter
-
-
-
- 0.1000
- 1.0000
-
-
-
- 200.0000
-
-
-
- VAT
- Intra-community supply
- K
- 0.00
-
-
- 20.00
-
-
-
-
- AB321
-
- Bei Spiel GmbH
-
- 12345
- Ecke 12
- Stadthausen
- DE
-
-
- DE0815
-
-
- 0815
-
-
-
- Theodor Est
-
- 88802
- Bahnstr. 42
- Hinterhaus
- Zweiter Stock
- Spielkreis
- DE
-
-
- DE999999999
-
-
-
- Testing1
- 50
-
-
-
-
- Theodor Est
-
- 88802
- Bahnstr. 42
- Hinterhaus
- Zweiter Stock
- Spielkreis
- DE
-
-
-
-
- 20170507
-
-
-
- 123
-
-
-
- USD
-
- 54
- Credit Card
-
- DE540815
-
-
-
- 0.00
- VAT
- Intra-community supply
- 337.60
- K
- 0.00
-
-
- 14 Tage 2% Skonto, 30 Tage rein netto
-
- 20220228
-
- DE99XX12345
-
- 337.60
- 2
-
-
-
- 337.60
- 0.00
- 0.00
- 337.60
- 0.00
- 337.60
- 0.00
- 337.60
-
-
-
-
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..740412ae 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java
@@ -145,11 +145,11 @@ public class ZF2EdgeTest extends MustangReaderTestCase {
}
@Override
- public IDatedReference getTenderReference() {
+ public IDatedReference getTenderReferencedDocument() {
return new IDatedReference() {
@Override
public String getID() {
- return "983-jk-787 (obsolete)";
+ return "983-jk-787";
}
@Override
public Date getDate() {
@@ -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"))
);
diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java
index b99f7108..a9c6b188 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java
@@ -178,9 +178,12 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase {
hasExceptions = true;
}
assertFalse(hasExceptions);
+ SimpleDateFormat sdf=new SimpleDateFormat("YYYY-mm-dd");
// Reading ZUGFeRD
assertEquals("4711", invoice.getZFItems()[0].getProduct().getSellerAssignedID());
assertEquals("9384", invoice.getSellerOrderReferencedDocumentID());
+ assertEquals("90-kl-98798-C", invoice.getTenderReferencedDocument().getID());
+ assertEquals("2025-10-12", sdf.format(invoice.getTenderReferencedDocument().getDate()));
assertEquals("sender@test.org", invoice.getSender().getEmail());
assertEquals("recipient@test.org", invoice.getRecipient().getEmail());
assertEquals("28934", invoice.getBuyerOrderReferencedDocumentID());