From 2a00af8768d60f5c18d05b17b56169045f8f7086 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Thu, 10 Oct 2024 10:53:41 +0200 Subject: [PATCH] - also parse BICs in InvoiceImporter not only IBANs --- History.md | 2 +- .../ZUGFeRD/ZUGFeRDInvoiceImporter.java | 17 +++++++++-------- .../ZUGFeRD/ZF2ZInvoiceImporterTest.java | 6 ++++++ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/History.md b/History.md index 8c34c866..839afd35 100644 --- a/History.md +++ b/History.md @@ -1,4 +1,4 @@ - +- also parse BICs in InvoiceImporter not only IBANs - #509 CLI currently does not write a logfile 2.14.1 diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index e330853b..72c6b7bd 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -237,8 +237,8 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { if ((headerTradeSettlementChilds.item(settlementChildIndex).getLocalName() != null) && (headerTradeSettlementChilds.item(settlementChildIndex).getLocalName().equals("SpecifiedTradeSettlementPaymentMeans"))) { NodeList paymentMeansChilds = headerTradeSettlementChilds.item(settlementChildIndex).getChildNodes(); + String IBAN = null, BIC = null; 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(); for (int accountChildIndex = 0; accountChildIndex < accountChilds.getLength(); accountChildIndex++) { @@ -247,7 +247,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { } } } - if ((paymentMeansChilds.item(paymentMeansChildIndex).getLocalName() != null) && (paymentMeansChilds.item(paymentMeansChildIndex).getLocalName().equals("PayeePartyCreditorFinancialInstitution"))) { + if ((paymentMeansChilds.item(paymentMeansChildIndex).getLocalName() != null) && (paymentMeansChilds.item(paymentMeansChildIndex).getLocalName().equals("PayeeSpecifiedCreditorFinancialInstitution"))) { NodeList accountChilds = paymentMeansChilds.item(paymentMeansChildIndex).getChildNodes(); for (int accountChildIndex = 0; accountChildIndex < accountChilds.getLength(); accountChildIndex++) { if ((accountChilds.item(accountChildIndex).getLocalName() != null) && (accountChilds.item(accountChildIndex).getLocalName().equals("BICID"))) {//CII @@ -255,13 +255,14 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { } } } - if (IBAN != null) { - BankDetails bd = new BankDetails(IBAN); - if (BIC != null) { - bd.setBIC(BIC); - } - bankDetails.add(bd); + + } + if (IBAN != null) { + BankDetails bd = new BankDetails(IBAN); + if (BIC != null) { + bd.setBIC(BIC); } + bankDetails.add(bd); } } } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java index 175aa9f1..b79ce8c8 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java @@ -287,6 +287,12 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase { assertFalse(hasExceptions); TransactionCalculator tc = new TransactionCalculator(invoice); assertEquals(new BigDecimal("1.00"), tc.getGrandTotal()); + assertTrue(invoice.getTradeSettlement().length==1); + assertTrue(invoice.getTradeSettlement()[0] instanceof IZUGFeRDTradeSettlementPayment); + IZUGFeRDTradeSettlementPayment paym=(IZUGFeRDTradeSettlementPayment)invoice.getTradeSettlement()[0]; + assertEquals("DE12500105170648489890", paym.getOwnIBAN()); + assertEquals("COBADEFXXX", paym.getOwnBIC()); + assertTrue(invoice.getPayee() != null); assertEquals("VR Factoring GmbH", invoice.getPayee().getName());