From 3466f6e3db8caaba5626857c269ce50b03489f95 Mon Sep 17 00:00:00 2001 From: gundermann Date: Thu, 22 Aug 2024 10:38:03 +0200 Subject: [PATCH] changed additional references by line from String to List and implemented it on Item --- .../main/java/org/mustangproject/Item.java | 23 +++++++++++++++++++ .../ZUGFeRD/IZUGFeRDExportableItem.java | 6 ++--- .../ZUGFeRD/ZUGFeRD1PullProvider.java | 4 ++-- .../ZUGFeRD/ZUGFeRD2PullProvider.java | 11 ++++++--- 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Item.java b/library/src/main/java/org/mustangproject/Item.java index 321b4723..0dc76b83 100644 --- a/library/src/main/java/org/mustangproject/Item.java +++ b/library/src/main/java/org/mustangproject/Item.java @@ -465,6 +465,29 @@ public class Item implements IZUGFeRDExportableItem { return referencedDocuments.toArray(new IReferencedDocument[0]); } + + /*** + * adds item level references along with their typecodes and issuerassignedIDs (contract ID, cost centre, ...) + * @param doc the ReferencedDocument to add + * @return fluent setter + */ + public Item addAdditionalReference(ReferencedDocument doc) { + if (referencedDocuments == null) { + referencedDocuments = new ArrayList<>(); + } + referencedDocuments.add(doc); + return this; + } + + @Override + public IReferencedDocument[] getAdditionalReferences() { + if (referencedDocuments == null) { + return null; + } + return referencedDocuments.toArray(new IReferencedDocument[0]); + } + + /*** * specify a item level delivery period * (apart from the document level delivery period, and the document level diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java index f6e03242..3c20e519 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java @@ -91,10 +91,10 @@ public interface IZUGFeRDExportableItem extends IAbsoluteValueProvider{ } /*** - * the ID of an additionally referenced document for this item - * @return the id as string + * allows to specify multiple references (billing information) + * @return the referenced documents */ - default String getAdditionalReferencedDocumentID() { + default IReferencedDocument[] getAdditionalReferences() { return null; } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java index ba43dd94..0b028806 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java @@ -387,8 +387,8 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider { + "" + currencyFormat(lc.getItemTotalNetAmount()) + "" + ""; - if (currentItem.getAdditionalReferencedDocumentID() != null) { - xml += "" + currentItem.getAdditionalReferencedDocumentID() + "130"; + if (currentItem.getAdditionalReferences() != null) { + xml += "" + currentItem.getAdditionalReferences()[0].getIssuerAssignedID() + "130"; } xml += "" diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index 64bfb738..bbadfdae 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -503,9 +503,14 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { + "" + currencyFormat(lc.getItemTotalNetAmount()) + "" // currencyID=\"EUR\" + ""; - if (currentItem.getAdditionalReferencedDocumentID() != null) { - xml += "" + currentItem.getAdditionalReferencedDocumentID() + "130"; - + if (currentItem.getAdditionalReferences() != null) { + for (final IReferencedDocument currentReference : currentItem.getAdditionalReferences()) { + xml += "" + + "" + XMLTools.encodeXML(currentReference.getIssuerAssignedID()) + "" + + "130" + + "" + XMLTools.encodeXML(currentReference.getReferenceTypeCode()) + "" + + ""; + } } xml += "" + "";