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 += ""
+ "";