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"