From c30ce8d03aa11fc7036d7525422f48273a7717b2 Mon Sep 17 00:00:00 2001 From: Bharti Date: Tue, 19 Nov 2024 13:04:17 +0100 Subject: [PATCH] UBL updates : adding delivery (incomplete) --- .../java/org/mustangproject/TradeParty.java | 46 +++++++++++++++++++ .../ZUGFeRD/ZUGFeRDInvoiceImporter.java | 4 +- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/org/mustangproject/TradeParty.java b/library/src/main/java/org/mustangproject/TradeParty.java index fd5fc2aa..a8c90eb9 100644 --- a/library/src/main/java/org/mustangproject/TradeParty.java +++ b/library/src/main/java/org/mustangproject/TradeParty.java @@ -74,6 +74,50 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { if (currentItemNode.getLocalName() != null) { String currentUBLChild = currentItemNode.getLocalName(); + if (currentUBLChild.equals("Delivery")) { + NodeList delivery = currentItemNode.getChildNodes(); + for (int deliveryIndex = 0; deliveryIndex < delivery.getLength(); deliveryIndex++) { + if (delivery.item(deliveryIndex).getLocalName() != null) { + Node currentNode = delivery.item(deliveryIndex); + if (currentNode.getLocalName().equals("DeliveryLocation")) { + NodeList deliveryLocation = currentNode.getChildNodes(); + for (int deliveryLocationIndex = 0; deliveryLocationIndex < deliveryLocation.getLength(); deliveryLocationIndex++) { + if (deliveryLocation.item(deliveryLocationIndex).getLocalName() != null){ + if (deliveryLocation.item(deliveryLocationIndex).getLocalName().equals("ID")) { + //Node currentNode = partyID.item(partyIDIndex); + setID(deliveryLocation.item(deliveryLocationIndex).getTextContent()); + if ((deliveryLocation.item(deliveryLocationIndex).getAttributes() != null && + (deliveryLocation.item(deliveryLocationIndex).getAttributes().getNamedItem("schemeID") != null)) + ) { + //SchemedID gid = new SchemedID().setScheme(nodes.item(nodeIndex).getAttributes().getNamedItem("schemeID").getNodeValue()).setId(nodes.item(nodeIndex).getTextContent()); + // addGlobalID(gid); + SchemedID sID = new SchemedID().setScheme(deliveryLocation.item(deliveryLocationIndex).getAttributes().getNamedItem("schemeID").getTextContent()); + addGlobalID(sID); + + //&& ((currentNode.getAttributes().getNamedItem("schemeID").getNodeValue().equals("0110") && currentNode.getAttributes().getNamedItem("schemeID").getNodeValue().equals("0100")) + } + + } + if (deliveryLocation.item(deliveryLocationIndex).getLocalName().equals("Address")) { + NodeList address = deliveryLocation.item(deliveryLocationIndex).getChildNodes(); + for (int addressIndex = 0; addressIndex < address.getLength(); addressIndex++) { + if (address.item(addressIndex).getLocalName() != null) { + if (address.item(addressIndex).getLocalName().equals("StreetName")) { + //Node currentNode = partyID.item(partyIDIndex); + setStreet(address.item(addressIndex).getTextContent()); + } + } + } + } + + } + } + } + + } + } + } + if (currentUBLChild.equals("Party")) { NodeList party = currentItemNode.getChildNodes(); @@ -173,6 +217,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { } } } + if (currentTopElementName.equals("PostalAddress")) { NodeList postal = party.item(partyIndex).getChildNodes(); @@ -280,6 +325,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { } } + } } } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index b1404251..d4479b96 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -295,7 +295,7 @@ public class ZUGFeRDInvoiceImporter { XPath xpath = xpathFact.newXPath(); XPathExpression xpr = xpath.compile("//*[local-name()=\"SellerTradeParty\"]|//*[local-name()=\"AccountingSupplierParty\"]/*"); NodeList SellerNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET); - XPathExpression shipEx = xpath.compile("//*[local-name()=\"ShipToTradeParty\"]"); + XPathExpression shipEx = xpath.compile("//*[local-name()=\"ShipToTradeParty\"]|//*[local-name()=\"DeliveryLocation\"]"); NodeList deliveryNodes = (NodeList) shipEx.evaluate(getDocument(), XPathConstants.NODESET); if (deliveryNodes != null) { zpp.setDeliveryAddress(new TradeParty(deliveryNodes)); @@ -371,7 +371,7 @@ public class ZUGFeRDInvoiceImporter { deliveryDate = new SimpleDateFormat("yyyy-MM-dd").parse(deliveryDt); } } - xpr = xpath.compile("//*[local-name()=\"ApplicableHeaderTradeDelivery\"]"); + xpr = xpath.compile("//*[local-name()=\"ApplicableHeaderTradeDelivery\"]|//*[local-name()=\"Delivery\"]"); NodeList headerTradeDeliveryNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET); for (int i = 0; i < headerTradeDeliveryNodes.getLength(); i++) {