diff --git a/library/src/main/java/org/mustangproject/Invoice.java b/library/src/main/java/org/mustangproject/Invoice.java
index 6fd87275..ba4602f8 100644
--- a/library/src/main/java/org/mustangproject/Invoice.java
+++ b/library/src/main/java/org/mustangproject/Invoice.java
@@ -33,7 +33,7 @@ import java.util.Date;
*/
public class Invoice implements IExportableTransaction {
- protected String documentName = null, documentCode = null, number = null, ownOrganisationFullPlaintextInfo = null, referenceNumber = null, shipToOrganisationID = null, shipToOrganisationName = null, shipToStreet = null, shipToZIP = null, shipToLocation = null, shipToCountry = null, buyerOrderReferencedDocumentID = null, buyerOrderReferencedDocumentIssueDateTime = null, ownForeignOrganisationID = null, ownOrganisationName = null, currency = null, paymentTermDescription = null;
+ protected String documentName = null, documentCode = null, number = null, ownOrganisationFullPlaintextInfo = null, referenceNumber = null, shipToOrganisationID = null, shipToOrganisationName = null, shipToStreet = null, shipToZIP = null, shipToLocation = null, shipToCountry = null, buyerOrderReferencedDocumentID = null, invoiceReferencedDocumentID = null, buyerOrderReferencedDocumentIssueDateTime = null, ownForeignOrganisationID = null, ownOrganisationName = null, currency = null, paymentTermDescription = null;
protected Date issueDate = null, dueDate = null, deliveryDate = null;
protected BigDecimal totalPrepaidAmount = null;
protected TradeParty sender = null, recipient = null, deliveryAddress = null;
@@ -118,7 +118,7 @@ public class Invoice implements IExportableTransaction {
* @return this object (fluent setter)
*/
public Invoice setCorrection(String number) {
- setBuyerOrderReferencedDocumentID(number);
+ setInvoiceReferencedDocumentID(number);
documentCode = DocumentCodeTypeConstants.CORRECTEDINVOICE;
return this;
}
@@ -223,7 +223,7 @@ public class Invoice implements IExportableTransaction {
return this;
}
/***
- * usually the order number or in case of a correction the original invoice number
+ * usually the order number
* @param buyerOrderReferencedDocumentID string with number
* @return fluent setter
*/
@@ -232,6 +232,20 @@ public class Invoice implements IExportableTransaction {
return this;
}
+ /***
+ * usually in case of a correction the original invoice number
+ * @param invoiceReferencedDocumentID string with number
+ * @return fluent setter
+ */
+ public Invoice setInvoiceReferencedDocumentID(String invoiceReferencedDocumentID) {
+ this.invoiceReferencedDocumentID = invoiceReferencedDocumentID;
+ return this;
+ }
+ @Override
+ public String getInvoiceReferencedDocumentID() {
+ return invoiceReferencedDocumentID;
+ }
+
@Override
public String getBuyerOrderReferencedDocumentIssueDateTime() {
return buyerOrderReferencedDocumentIssueDateTime;
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java
index 2f306ab2..8f1f12c3 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java
@@ -415,6 +415,14 @@ public interface IExportableTransaction {
return null;
}
+ /**
+ * get the ID of the prceding invoice, which is e.g. to be corrected if this is a correction
+ *
+ * @return the ID of the document
+ */
+ default String getInvoiceReferencedDocumentID() {
+ return null;
+ }
/**
* get the issue timestamp of the BuyerOrderReferencedDocument, which sits in the ApplicableSupplyChainTradeAgreement
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
index 269400ca..3d8b94e9 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
@@ -610,23 +610,28 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
final String chargesTotalLine = "" + currencyFormat(calc.getChargesForPercent(null)) + "";
xml = xml + " \n"
- + " " + currencyFormat(calc.getTotal()) + "\n" //$NON-NLS-2$
+ + " " + currencyFormat(calc.getTotal()) + "\n"
+ chargesTotalLine
+ allowanceTotalLine
- + " " + currencyFormat(calc.getTaxBasis()) + "\n" //$NON-NLS-2$
+ + " " + currencyFormat(calc.getTaxBasis()) + "\n"
// //
// currencyID=\"EUR\"
+ " "
- + currencyFormat(calc.getGrandTotal().subtract(calc.getTaxBasis()))+ "\n"
- + " " + currencyFormat(calc.getGrandTotal()) + "\n" //$NON-NLS-2$
+ + currencyFormat(calc.getGrandTotal().subtract(calc.getTaxBasis())) + "\n"
+ + " " + currencyFormat(calc.getGrandTotal()) + "\n"
// //
// currencyID=\"EUR\"
+ " " + currencyFormat(calc.getTotalPrepaid()) + "\n"
- + " " + currencyFormat(calc.getGrandTotal().subtract(calc.getTotalPrepaid())) + "\n" //$NON-NLS-2$
- // //
- // currencyID=\"EUR\"
- + " \n"
- + " \n";
+ + " " + currencyFormat(calc.getGrandTotal().subtract(calc.getTotalPrepaid())) + "\n"
+ + " \n";
+ if (trans.getInvoiceReferencedDocumentID() != null) {
+ xml = xml + " \n"
+ + " "
+ + XMLTools.encodeXML(trans.getInvoiceReferencedDocumentID()) + "\n"
+ + " \n";
+ }
+
+ xml = xml + " \n";
// + " \n"
// + " \n"
// + " \n"