Merge pull request #454 from MellowGiant/additionalReferences
changed additional references by line from String to List and implemented it on Item
This commit is contained in:
@@ -26,6 +26,7 @@ public class Item implements IZUGFeRDExportableItem {
|
|||||||
protected Product product;
|
protected Product product;
|
||||||
protected ArrayList<String> notes = null;
|
protected ArrayList<String> notes = null;
|
||||||
protected ArrayList<ReferencedDocument> referencedDocuments = null;
|
protected ArrayList<ReferencedDocument> referencedDocuments = null;
|
||||||
|
protected ArrayList<ReferencedDocument> additionalReference = null;
|
||||||
protected ArrayList<IZUGFeRDAllowanceCharge> Allowances = new ArrayList<>(),
|
protected ArrayList<IZUGFeRDAllowanceCharge> Allowances = new ArrayList<>(),
|
||||||
Charges = new ArrayList<>();
|
Charges = new ArrayList<>();
|
||||||
|
|
||||||
@@ -63,6 +64,7 @@ public class Item implements IZUGFeRDExportableItem {
|
|||||||
String referencedLineID = null;
|
String referencedLineID = null;
|
||||||
|
|
||||||
ArrayList<ReferencedDocument> rdocs = null;
|
ArrayList<ReferencedDocument> rdocs = null;
|
||||||
|
ArrayList<ReferencedDocument> addRefs = null;
|
||||||
|
|
||||||
// nodes.item(i).getTextContent())) {
|
// nodes.item(i).getTextContent())) {
|
||||||
|
|
||||||
@@ -248,6 +250,35 @@ public class Item implements IZUGFeRDExportableItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tradeSettlementName.equals("AdditionalReferencedDocument")) {
|
||||||
|
String IssuerAssignedID = "";
|
||||||
|
String TypeCode = "";
|
||||||
|
String ReferenceTypeCode = "";
|
||||||
|
|
||||||
|
NodeList refDocChilds = tradeSettlementChilds.item(tradeSettlementChildIndex).getChildNodes();
|
||||||
|
for (int refDocIndex = 0; refDocIndex < refDocChilds.getLength(); refDocIndex++) {
|
||||||
|
String localName = refDocChilds.item(refDocIndex).getLocalName();
|
||||||
|
if ((localName != null) && (localName.equals("IssuerAssignedID"))) {
|
||||||
|
IssuerAssignedID = refDocChilds.item(refDocIndex).getTextContent();
|
||||||
|
}
|
||||||
|
if ((localName != null) && (localName.equals("TypeCode"))) {
|
||||||
|
TypeCode = refDocChilds.item(refDocIndex).getTextContent();
|
||||||
|
}
|
||||||
|
if ((localName != null) && (localName.equals("ReferenceTypeCode"))) {
|
||||||
|
ReferenceTypeCode = refDocChilds.item(refDocIndex).getTextContent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ReferencedDocument rd = new ReferencedDocument(IssuerAssignedID, TypeCode,
|
||||||
|
ReferenceTypeCode);
|
||||||
|
if (addRefs == null) {
|
||||||
|
addRefs = new ArrayList<>();
|
||||||
|
}
|
||||||
|
addRefs.add(rd);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -274,6 +305,11 @@ public class Item implements IZUGFeRDExportableItem {
|
|||||||
addReferencedDocument(rdoc);
|
addReferencedDocument(rdoc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (addRefs != null) {
|
||||||
|
for (ReferencedDocument rdoc : addRefs) {
|
||||||
|
addAdditionalReference(rdoc);
|
||||||
|
}
|
||||||
|
}
|
||||||
addReferencedLineID( referencedLineID );
|
addReferencedLineID( referencedLineID );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -465,6 +501,29 @@ public class Item implements IZUGFeRDExportableItem {
|
|||||||
return referencedDocuments.toArray(new IReferencedDocument[0]);
|
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 (additionalReference == null) {
|
||||||
|
additionalReference = new ArrayList<>();
|
||||||
|
}
|
||||||
|
additionalReference.add(doc);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IReferencedDocument[] getAdditionalReferences() {
|
||||||
|
if (additionalReference == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return additionalReference.toArray(new IReferencedDocument[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* specify a item level delivery period
|
* specify a item level delivery period
|
||||||
* (apart from the document level delivery period, and the document level
|
* (apart from the document level delivery period, and the document level
|
||||||
|
|||||||
@@ -92,12 +92,22 @@ public interface IZUGFeRDExportableItem extends IAbsoluteValueProvider{
|
|||||||
|
|
||||||
/***
|
/***
|
||||||
* the ID of an additionally referenced document for this item
|
* the ID of an additionally referenced document for this item
|
||||||
|
* @deprecated use {@link #getAdditionalReferences()} instead.
|
||||||
* @return the id as string
|
* @return the id as string
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
default String getAdditionalReferencedDocumentID() {
|
default String getAdditionalReferencedDocumentID() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* allows to specify multiple references (billing information)
|
||||||
|
* @return the referenced documents
|
||||||
|
*/
|
||||||
|
default IReferencedDocument[] getAdditionalReferences() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* allows to specify multiple(!) referenced documents along with e.g. their typecodes
|
* allows to specify multiple(!) referenced documents along with e.g. their typecodes
|
||||||
|
|||||||
@@ -387,9 +387,10 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider {
|
|||||||
+ "<ram:LineTotalAmount currencyID=\"" + trans.getCurrency() + "\">" + currencyFormat(lc.getItemTotalNetAmount())
|
+ "<ram:LineTotalAmount currencyID=\"" + trans.getCurrency() + "\">" + currencyFormat(lc.getItemTotalNetAmount())
|
||||||
+ "</ram:LineTotalAmount>"
|
+ "</ram:LineTotalAmount>"
|
||||||
+ "</ram:SpecifiedTradeSettlementMonetarySummation>";
|
+ "</ram:SpecifiedTradeSettlementMonetarySummation>";
|
||||||
if (currentItem.getAdditionalReferencedDocumentID() != null) {
|
if (currentItem.getAdditionalReferences() != null) {
|
||||||
|
xml += "<ram:AdditionalReferencedDocument><ram:ID>" + currentItem.getAdditionalReferences()[0].getIssuerAssignedID() + "</ram:ID><ram:TypeCode>130</ram:TypeCode></ram:AdditionalReferencedDocument>";
|
||||||
|
} else if (currentItem.getAdditionalReferencedDocumentID() != null) {
|
||||||
xml += "<ram:AdditionalReferencedDocument><ram:ID>" + currentItem.getAdditionalReferencedDocumentID() + "</ram:ID><ram:TypeCode>130</ram:TypeCode></ram:AdditionalReferencedDocument>";
|
xml += "<ram:AdditionalReferencedDocument><ram:ID>" + currentItem.getAdditionalReferencedDocumentID() + "</ram:ID><ram:TypeCode>130</ram:TypeCode></ram:AdditionalReferencedDocument>";
|
||||||
|
|
||||||
}
|
}
|
||||||
xml += "</ram:SpecifiedSupplyChainTradeSettlement>"
|
xml += "</ram:SpecifiedSupplyChainTradeSettlement>"
|
||||||
+ "<ram:SpecifiedTradeProduct>";
|
+ "<ram:SpecifiedTradeProduct>";
|
||||||
|
|||||||
@@ -503,9 +503,16 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
+ "<ram:LineTotalAmount>" + currencyFormat(lc.getItemTotalNetAmount())
|
+ "<ram:LineTotalAmount>" + currencyFormat(lc.getItemTotalNetAmount())
|
||||||
+ "</ram:LineTotalAmount>" // currencyID=\"EUR\"
|
+ "</ram:LineTotalAmount>" // currencyID=\"EUR\"
|
||||||
+ "</ram:SpecifiedTradeSettlementLineMonetarySummation>";
|
+ "</ram:SpecifiedTradeSettlementLineMonetarySummation>";
|
||||||
if (currentItem.getAdditionalReferencedDocumentID() != null) {
|
if (currentItem.getAdditionalReferences() != null) {
|
||||||
|
for (final IReferencedDocument currentReference : currentItem.getAdditionalReferences()) {
|
||||||
|
xml += "<ram:AdditionalReferencedDocument>" +
|
||||||
|
"<ram:IssuerAssignedID>" + XMLTools.encodeXML(currentReference.getIssuerAssignedID()) + "</ram:IssuerAssignedID>" +
|
||||||
|
"<ram:TypeCode>130</ram:TypeCode>" +
|
||||||
|
"<ram:ReferenceTypeCode>" + XMLTools.encodeXML(currentReference.getReferenceTypeCode()) + "</ram:ReferenceTypeCode>" +
|
||||||
|
"</ram:AdditionalReferencedDocument>";
|
||||||
|
}
|
||||||
|
} else if (currentItem.getAdditionalReferencedDocumentID() != null) {
|
||||||
xml += "<ram:AdditionalReferencedDocument><ram:IssuerAssignedID>" + currentItem.getAdditionalReferencedDocumentID() + "</ram:IssuerAssignedID><ram:TypeCode>130</ram:TypeCode></ram:AdditionalReferencedDocument>";
|
xml += "<ram:AdditionalReferencedDocument><ram:IssuerAssignedID>" + currentItem.getAdditionalReferencedDocumentID() + "</ram:IssuerAssignedID><ram:TypeCode>130</ram:TypeCode></ram:AdditionalReferencedDocument>";
|
||||||
|
|
||||||
}
|
}
|
||||||
xml += "</ram:SpecifiedLineTradeSettlement>"
|
xml += "</ram:SpecifiedLineTradeSettlement>"
|
||||||
+ "</ram:IncludedSupplyChainTradeLineItem>";
|
+ "</ram:IncludedSupplyChainTradeLineItem>";
|
||||||
|
|||||||
Reference in New Issue
Block a user