From 87d3fdec3f53740f5218a310115516ef6c078041 Mon Sep 17 00:00:00 2001 From: Bharti Date: Wed, 27 Nov 2024 19:53:31 +0100 Subject: [PATCH] UBL updates --- .../main/java/org/mustangproject/Item.java | 10 ++ .../main/java/org/mustangproject/Product.java | 2 +- .../java/org/mustangproject/TradeParty.java | 112 +++++++++--------- .../ZUGFeRD/ZUGFeRDInvoiceImporter.java | 3 +- 4 files changed, 70 insertions(+), 57 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Item.java b/library/src/main/java/org/mustangproject/Item.java index 3ddcf266..2f6269b9 100644 --- a/library/src/main/java/org/mustangproject/Item.java +++ b/library/src/main/java/org/mustangproject/Item.java @@ -111,11 +111,21 @@ public class Item implements IZUGFeRDExportableItem { product.setUnit(icn.getAttributes().getNamedItem("unitCode").getNodeValue()); }); + itemMap.getAsNodeMap("OrderLineReference") + .flatMap(bordNodes -> bordNodes.getAsString("LineID")) + .ifPresent(this::addReferencedLineID); + + + + itemMap.getAllNodes("DocumentReference").map(ReferencedDocument::fromNode) + .forEach(this::addAdditionalReference); + itemMap.getAsNodeMap("SpecifiedLineTradeAgreement", "SpecifiedSupplyChainTradeAgreement").ifPresent(icnm -> { icnm.getAsNodeMap("BuyerOrderReferencedDocument") .flatMap(bordNodes -> bordNodes.getAsString("LineID")) .ifPresent(this::addReferencedLineID); + icnm.getAsNodeMap("NetPriceProductTradePrice").ifPresent(npptpNodes -> { npptpNodes.getAsBigDecimal("ChargeAmount").ifPresent(this::setPrice); npptpNodes.getAsBigDecimal("BasisQuantity").ifPresent(this::setBasisQuantity); diff --git a/library/src/main/java/org/mustangproject/Product.java b/library/src/main/java/org/mustangproject/Product.java index ddbed336..1537bae4 100644 --- a/library/src/main/java/org/mustangproject/Product.java +++ b/library/src/main/java/org/mustangproject/Product.java @@ -22,7 +22,7 @@ import java.util.Map; @JsonInclude(JsonInclude.Include.NON_EMPTY) public class Product implements IZUGFeRDExportableProduct { - protected String unit, name, sellerAssignedID, buyerAssignedID,ID; + protected String unit, name, sellerAssignedID, buyerAssignedID; protected String description=""; protected String taxExemptionReason=null; protected String taxCategoryCode=null; diff --git a/library/src/main/java/org/mustangproject/TradeParty.java b/library/src/main/java/org/mustangproject/TradeParty.java index f8a6f9e2..1ae7b2e9 100644 --- a/library/src/main/java/org/mustangproject/TradeParty.java +++ b/library/src/main/java/org/mustangproject/TradeParty.java @@ -130,31 +130,67 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { } } +// if (party.item(partyIndex).getLocalName().equals("AccountingSupplierParty")) { +// NodeList payeeParty = party.item(partyIndex).getChildNodes(); +// for (int payeePartyIndex = 0; payeePartyIndex < payeeParty.getLength(); payeePartyIndex++) { +// if (payeeParty.item(payeePartyIndex).getLocalName() != null) { + if (currentTopElementName.equals("PartyIdentification")) { + NodeList partyID = party.item(partyIndex).getChildNodes(); + for (int partyIDIndex = 0; partyIDIndex < partyID.getLength(); partyIDIndex++) { + if (partyID.item(partyIDIndex).getLocalName() != null) { + if (partyID.item(partyIDIndex).getLocalName().equals("ID")) { + Node currentNode = partyID.item(partyIDIndex); + if ((currentNode.getAttributes() != null && + (currentNode.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(currentNode.getAttributes().getNamedItem("schemeID").getTextContent()).setId(currentNode.getTextContent()); + addGlobalID(sID); - if (currentTopElementName.equals("PartyIdentification")) { - NodeList partyID = party.item(partyIndex).getChildNodes(); - for (int partyIDIndex = 0; partyIDIndex < partyID.getLength(); partyIDIndex++) { - if (partyID.item(partyIDIndex).getLocalName() != null) { - if (partyID.item(partyIDIndex).getLocalName().equals("ID")) { - Node currentNode = partyID.item(partyIDIndex); + //&& ((currentNode.getAttributes().getNamedItem("schemeID").getNodeValue().equals("0110") && currentNode.getAttributes().getNamedItem("schemeID").getNodeValue().equals("0100")) + } +// else { +// setID(currentNode.getTextContent()); +// } - if ((currentNode.getAttributes() != null && - (currentNode.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(currentNode.getAttributes().getNamedItem("schemeID").getTextContent(), currentNode.getTextContent()); - addGlobalID(sID); - - //&& ((currentNode.getAttributes().getNamedItem("schemeID").getNodeValue().equals("0110") && currentNode.getAttributes().getNamedItem("schemeID").getNodeValue().equals("0100")) - } else { - setID(currentNode.getTextContent()); + } + } } - } - } - } - } +// } +// } +// } + +// if (currentTopElementName.equals("AccountingCustomerParty")) { +// NodeList partyID = party.item(partyIndex).getChildNodes(); +// for (int partyIDIndex = 0; partyIDIndex < partyID.getLength(); partyIDIndex++) { +// if (partyID.item(partyIDIndex).getLocalName() != null) { +// if (partyID.item(partyIDIndex).getLocalName().equals("ID")) { +// Node currentNode = partyID.item(partyIDIndex); +// //setID(currentNode.getTextContent()); +// +// if ((currentNode.getAttributes() != null && +// (currentNode.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(currentNode.getAttributes().getNamedItem("schemeID").getTextContent(), currentNode.getTextContent()); +// //addGlobalID(sID); +// // SchemedID sID = new SchemedID().setScheme(deliveryLocation.item(deliveryLocationIndex).getAttributes().getNamedItem("schemeID").getTextContent()); +// // addGlobalID(sID); +// SchemedID sID = new SchemedID().setScheme(currentNode.getAttributes().getNamedItem("schemeID").getTextContent()).setId(currentNode.getTextContent()); +// addGlobalID(sID); +// +// //&& ((currentNode.getAttributes().getNamedItem("schemeID").getNodeValue().equals("0110") && currentNode.getAttributes().getNamedItem("schemeID").getNodeValue().equals("0100")) +// } else { +// setID(currentNode.getTextContent()); +// } +// +// } +// } +// } +// } if (currentTopElementName.equals("PartyTaxScheme")) { @@ -297,40 +333,6 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { NodeList contact = nodes.item(nodeIndex).getChildNodes(); setContact(new Contact(contact)); } - if (currentUBLChild.equals("PayeeParty")) { - NodeList payeeParty = nodes.item(nodeIndex).getChildNodes(); - for (int payeePartyIndex = 0; payeePartyIndex < payeeParty.getLength(); payeePartyIndex++) { - if (payeeParty.item(payeePartyIndex).getLocalName() != null) { - if (payeeParty.item(payeePartyIndex).getLocalName().equals("PartyIdentification")) { - NodeList partyID = payeeParty.item(payeePartyIndex).getChildNodes(); - for (int partyIDIndex = 0; partyIDIndex < partyID.getLength(); partyIDIndex++) { - if (partyID.item(partyIDIndex).getLocalName() != null) { - if (partyID.item(partyIDIndex).getLocalName().equals("ID")) { - Node currentNode = partyID.item(partyIDIndex); - - if ((currentNode.getAttributes() != null && - (currentNode.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(currentNode.getAttributes().getNamedItem("schemeID").getTextContent(), currentNode.getTextContent()); - addGlobalID(sID); - - //&& ((currentNode.getAttributes().getNamedItem("schemeID").getNodeValue().equals("0110") && currentNode.getAttributes().getNamedItem("schemeID").getNodeValue().equals("0100")) - } else { - setID(currentNode.getTextContent()); - } - - } - } - } - } - - - } - } - - } } } } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index 049dff20..36bfaf23 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -305,6 +305,7 @@ public class ZUGFeRDInvoiceImporter { zpp.setDeliveryAddress(new TradeParty(deliveryNodes)); } + //UBL... XPathExpression shipExUBL = xpath.compile("//*[local-name()=\"Delivery\"]"); Node deliveryNode = (Node) shipExUBL.evaluate(getDocument(), XPathConstants.NODE); @@ -380,7 +381,7 @@ public class ZUGFeRDInvoiceImporter { xpr = xpath.compile("//*[local-name()=\"BuyerTradeParty\"]|//*[local-name()=\"AccountingCustomerParty\"]/*"); NodeList BuyerNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET); - xpr = xpath.compile("//*[local-name()=\"PayeeTradeParty\"]|//*[local-name()=\"PayeeParty\"]/*"); + xpr = xpath.compile("//*[local-name()=\"PayeeTradeParty\"]|//*[local-name()=\"PayeeParty\"]//*"); NodeList payeeNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET); xpr = xpath.compile("//*[local-name()=\"ExchangedDocument\"]|//*[local-name()=\"HeaderExchangedDocument\"]");