From 5469e5c30d5b89089f0b02af2f7a6f7fd7c33cb4 Mon Sep 17 00:00:00 2001 From: langfr Date: Thu, 11 Jul 2024 17:08:13 +0100 Subject: [PATCH] Return all BankDetails from parsed CII-Invoice xml. Closes #408. --- .../ZUGFeRD/ZUGFeRDInvoiceImporter.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index 33eaf0c9..d2921474 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -6,7 +6,9 @@ import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; +import java.util.List; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; @@ -209,7 +211,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { xpr = xpath.compile("//*[local-name()=\"ApplicableHeaderTradeSettlement\"]|//*[local-name()=\"ApplicableSupplyChainTradeSettlement\"]"); NodeList headerTradeSettlementNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET); - String IBAN = null, BIC = null; + List bankDetails = new ArrayList<>(); for (int i = 0; i < headerTradeSettlementNodes.getLength(); i++) { // nodes.item(i).getTextContent())) { @@ -244,6 +246,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { NodeList paymentMeansChilds = headerTradeSettlementChilds.item(settlementChildIndex).getChildNodes(); for (int paymentMeansChildIndex = 0; paymentMeansChildIndex < paymentMeansChilds .getLength(); paymentMeansChildIndex++) { + String IBAN = null, BIC = null; if ((paymentMeansChilds.item(paymentMeansChildIndex).getLocalName() != null) && (paymentMeansChilds .item(paymentMeansChildIndex).getLocalName().equals("PayeePartyCreditorFinancialAccount"))) { NodeList accountChilds = paymentMeansChilds.item(paymentMeansChildIndex).getChildNodes(); @@ -266,6 +269,13 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { } } } + if (IBAN != null) { + BankDetails bd = new BankDetails(IBAN); + if (BIC != null) { + bd.setBIC(BIC); + } + bankDetails.add(bd); + } } } } @@ -289,7 +299,11 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { .getLength(); paymentTermChildIndex++) { if ((paymentTermChilds.item(paymentTermChildIndex).getLocalName() != null) && (paymentTermChilds .item(paymentTermChildIndex).getLocalName().equals("ID"))) { - IBAN = paymentTermChilds.item(paymentTermChildIndex).getTextContent(); + String IBAN = paymentTermChilds.item(paymentTermChildIndex).getTextContent(); + if (IBAN != null) { + BankDetails bd = new BankDetails(IBAN); + bankDetails.add(bd); + } } } } @@ -298,13 +312,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { zpp.setDueDate(dueDate).setDeliveryDate(deliveryDate).setIssueDate(issueDate) .setSender(new TradeParty(SellerNodes)).setRecipient(new TradeParty(BuyerNodes)).setNumber(number); - if (IBAN != null) { - BankDetails bd = new BankDetails(IBAN); - if (BIC != null) { - bd.setBIC(BIC); - } - zpp.getSender().addBankDetails(bd); - } + bankDetails.forEach(bankDetail -> zpp.getSender().addBankDetails(bankDetail)); if (buyerOrderIssuerAssignedID != null) { zpp.setBuyerOrderReferencedDocumentID(buyerOrderIssuerAssignedID);