From 55ae424338329bbb8a23d6ae41f3f0736892b489 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Thu, 21 Oct 2021 14:11:26 +0200 Subject: [PATCH] parse referencedDocuments --- .../mustangproject/ReferencedDocument.java | 7 +++- .../ZUGFeRD/ZUGFeRDInvoiceImporter.java | 38 ++++++++++++++++++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/org/mustangproject/ReferencedDocument.java b/library/src/main/java/org/mustangproject/ReferencedDocument.java index ea416dd4..9653ebd4 100644 --- a/library/src/main/java/org/mustangproject/ReferencedDocument.java +++ b/library/src/main/java/org/mustangproject/ReferencedDocument.java @@ -4,11 +4,16 @@ import org.mustangproject.ZUGFeRD.IReferencedDocument; public class ReferencedDocument implements IReferencedDocument { - String issuerAssignedID; String typeCode; String referenceTypeCode; + public ReferencedDocument(String issuerAssignedID, String typeCode, String referenceTypeCode) { + this.issuerAssignedID = issuerAssignedID; + this.typeCode = typeCode; + this.referenceTypeCode = referenceTypeCode; + } + public void setIssuerAssignedID(String issuerAssignedID) { this.issuerAssignedID = issuerAssignedID; } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index 42d4cbd4..7cee84d0 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -14,6 +14,7 @@ import java.math.RoundingMode; import java.nio.charset.StandardCharsets; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { @@ -165,6 +166,8 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { String lineTotal = "0"; String unitCode = "0"; + ArrayList rdocs=null; + //nodes.item(i).getTextContent())) { Node currentItemNode = nodes.item(i); NodeList itemChilds = currentItemNode.getChildNodes(); @@ -172,6 +175,33 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { if ((itemChilds.item(itemChildIndex).getLocalName() != null) && (itemChilds.item(itemChildIndex).getLocalName().equals("SpecifiedLineTradeAgreement"))) { NodeList tradeLineChilds = itemChilds.item(itemChildIndex).getChildNodes(); for (int tradeLineChildIndex = 0; tradeLineChildIndex < tradeLineChilds.getLength(); tradeLineChildIndex++) { + + if ((tradeLineChilds.item(tradeLineChildIndex).getLocalName() != null) && tradeLineChilds.item(tradeLineChildIndex).getLocalName().equals("AdditionalReferencedDocument")) { + String IssuerAssignedID=""; + String TypeCode=""; + String ReferenceTypeCode=""; + + NodeList refDocChilds = tradeLineChilds.item(tradeLineChildIndex).getChildNodes(); + for (int refDocIndex = 0; refDocIndex < refDocChilds.getLength(); refDocIndex++) { + if ((refDocChilds.item(refDocIndex).getLocalName() != null) && (refDocChilds.item(refDocIndex).getLocalName().equals("IssuerAssignedID"))) { + IssuerAssignedID = refDocChilds.item(refDocIndex).getTextContent(); + } + if ((refDocChilds.item(refDocIndex).getLocalName() != null) && (refDocChilds.item(refDocIndex).getLocalName().equals("TypeCode"))) { + TypeCode = refDocChilds.item(refDocIndex).getTextContent(); + } + if ((refDocChilds.item(refDocIndex).getLocalName() != null) && (refDocChilds.item(refDocIndex).getLocalName().equals("ReferenceTypeCode"))) { + ReferenceTypeCode = refDocChilds.item(refDocIndex).getTextContent(); + } + } + + ReferencedDocument rd=new ReferencedDocument(IssuerAssignedID, TypeCode, ReferenceTypeCode); + if (rdocs==null) { + rdocs=new ArrayList(); + } + rdocs.add(rd); + + } + if ((tradeLineChilds.item(tradeLineChildIndex).getLocalName() != null) && tradeLineChilds.item(tradeLineChildIndex).getLocalName().equals("NetPriceProductTradePrice")) { NodeList netChilds = tradeLineChilds.item(tradeLineChildIndex).getChildNodes(); for (int netIndex = 0; netIndex < netChilds.getLength(); netIndex++) { @@ -231,7 +261,13 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { if ((recalcPrice) && (!qty.equals(BigDecimal.ZERO))) { prc = new BigDecimal(lineTotal.trim()).divide(qty,4, RoundingMode.HALF_UP); } - zpp.addItem(new Item(new Product(name, description, unitCode, new BigDecimal(vatPercent.trim())), prc, qty)); + Item it=new Item(new Product(name, description, unitCode, new BigDecimal(vatPercent.trim())), prc, qty); + if (rdocs!=null) { + for (ReferencedDocument rdoc: rdocs) { + it.addReferencedDocument(rdoc); + } + } + zpp.addItem(it); }