From 9af73473b7a116de6a1ec451333a840141cd703f Mon Sep 17 00:00:00 2001 From: Sebastian Sieber Date: Tue, 24 Nov 2020 09:46:12 +0100 Subject: [PATCH] Import UnitCode of basisQuantity to product. I don't know which node is the better one to read the unitCode: grossPriceProductTradePrice or netPriceProductTradePrice. I have chosen the last one. --- .../ZUGFeRD/ZUGFeRDImporter.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java index 783f9000..ba496bfe 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java @@ -788,8 +788,7 @@ public class ZUGFeRDImporter { List nodeList = getLineItemNodes(); List lineItemList = new ArrayList<>(); - for (Node n: nodeList - ) { + for (Node n: nodeList) { Item lineItem = new Item(null, null, null); lineItem.setProduct(new Product(null,null,null,null)); @@ -803,13 +802,21 @@ public class ZUGFeRDImporter { node = getNodeByName(nn.getChildNodes(), "ram:NetPriceProductTradePrice"); if (node != null) { - node = getNodeByName(node.getChildNodes(), "ram:ChargeAmount"); - lineItem.setPrice(tryBigDecimal(getNodeValue(node))); + NodeList tradeAgreementChildren = node.getChildNodes(); + node = getNodeByName(tradeAgreementChildren, "ram:ChargeAmount"); + lineItem.setPrice(tryBigDecimal(getNodeValue(node))); + node = getNodeByName(tradeAgreementChildren, "ram:BasisQuantity"); + if(node.getAttributes()!=null) { + Node unitCodeAttribute = node.getAttributes().getNamedItem("unitCode"); + if(unitCodeAttribute != null) { + lineItem.getProduct().setUnit(unitCodeAttribute.getNodeValue()); + } + } } - + node = getNodeByName(nn.getChildNodes(), "ram:GrossPriceProductTradePrice"); if (node != null) { - node = getNodeByName(node.getChildNodes(), "ram:ChargeAmount"); + node = getNodeByName(node.getChildNodes(), "ram:ChargeAmount"); lineItem.setGrossPrice(tryBigDecimal(getNodeValue(node))); } break;