diff --git a/ZUGFeRD2-invoice.xml b/ZUGFeRD2-invoice.xml index cf4be5c7..76a793b0 100644 --- a/ZUGFeRD2-invoice.xml +++ b/ZUGFeRD2-invoice.xml @@ -26,7 +26,7 @@ Migrated by Mustangproject XSLT 1 - Künstlerische Gestaltung (Stunde): Einer Beispielrechnung + Künstlerische Gestaltung (Stunde): Einer Beispielrechnung @@ -90,7 +90,7 @@ Migrated by Mustangproject XSLT 3 - Heiße Luft pro Liter + Heiße Luft pro Liter @@ -158,12 +158,13 @@ Migrated by Mustangproject XSLT EUR 42 - Überweisung + Überweisung DE88 2008 0000 0970 3757 00 COBADEFFXXX + 41441604 Commerzbank diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java index 3077e610..a6972a51 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java @@ -83,7 +83,13 @@ public interface IZUGFeRDExportableTransaction { */ String getOwnBIC(); - /*** + /*** + * BLZ of the sender + * @return the BLZ code of the recipient sender's bank + */ + String getOwnBLZ(); + + /*** * Bank name of the sender * @return the name of the sender's bank */ diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java index bf76a855..bd2a2678 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java @@ -63,6 +63,7 @@ public class ZUGFeRDImporter { private boolean containsMeta = false; /** @var the reference (i.e. invoice number) of the sender */ private String foreignReference; + private String BLZ; private String BIC; private String IBAN; private String holder; @@ -127,7 +128,7 @@ public class ZUGFeRDImporter { //start InputStream XMP=doc.getDocumentCatalog().getMetadata().exportXMPMetadata(); - xmpString=convertStreamToString(XMP); + xmpString=convertStreamToString(XMP); etn = names.getEmbeddedFiles(); if (etn == null) { return; @@ -299,6 +300,9 @@ public class ZUGFeRDImporter { if ((detail.getLocalName() != null) && (detail.getLocalName().equals("BICID"))) { //$NON-NLS-1$ setBIC(detail.getTextContent()); } + if ((detail.getLocalName() != null) && (detail.getLocalName().equals("GermanBankleitzahlID"))) { //$NON-NLS-1$ + setBLZ(detail.getTextContent()); + } if ((detail.getLocalName() != null) && (detail.getLocalName().equals("Name"))) { //$NON-NLS-1$ setBankName(detail.getTextContent()); } @@ -393,6 +397,24 @@ public class ZUGFeRDImporter { this.foreignReference = foreignReference; } + /** + * + * @return the sender's bank's BLZ code + */ + public String getBLZ() { + if (!parsed) { + throw new RuntimeException("use extract() before requesting a value"); + } + if (BLZ==null) { + parse(); + } + return BLZ; + } + + private void setBLZ(String blz) { + this.BLZ = blz; + } + /** * * @return the sender's bank's BIC code diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java index f50cc697..ebe3ea98 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java @@ -373,6 +373,10 @@ class ZUGFeRDTransactionModelConverter { TextType bankName = xmlFactory.createTextType(); bankName.setValue(trans.getOwnBankName()); bankData.setName(bankName); + IDType blz = xmlFactory.createIDType(); + blz.setValue(trans.getOwnBLZ()); + bankData.setGermanBankleitzahlID(blz); + paymentData.setPayeeSpecifiedCreditorFinancialInstitution(bankData); return paymentData; } diff --git a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransactionImpl.java b/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransactionImpl.java index fd46abb2..a4225289 100644 --- a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransactionImpl.java +++ b/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransactionImpl.java @@ -30,6 +30,7 @@ public class IZUGFeRDExportableTransactionImpl implements IZUGFeRDExportableTran private IZUGFeRDAllowanceCharge[] zFLogisticsServiceCharges; private IZUGFeRDExportableItem[] zFItems; private IZUGFeRDExportableContact recipient; + private String ownBLZ; private String ownBIC; private String ownBankName; private String ownIBAN; @@ -91,6 +92,11 @@ public class IZUGFeRDExportableTransactionImpl implements IZUGFeRDExportableTran return recipient; } + @Override + public String getOwnBLZ() { + return ownBLZ; + } + @Override public String getOwnBIC() { return ownBIC; @@ -211,6 +217,11 @@ public class IZUGFeRDExportableTransactionImpl implements IZUGFeRDExportableTran return this; } + public IZUGFeRDExportableTransactionImpl setOwnBLZ(String ownBLZ) { + this.ownBLZ = ownBLZ; + return this; + } + public IZUGFeRDExportableTransactionImpl setOwnBIC(String ownBIC) { this.ownBIC = ownBIC; return this; diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java index a184e89e..b7cbd95c 100644 --- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java +++ b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java @@ -219,7 +219,8 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { " DE88 2008 0000 0970 3757 00\n" + " \n" + " \n" + - " COBADEFFXXX\n" + + " COBADEFFXXX\n" + + " 41441604\n" + " Commerzbank\n" + " \n" + " \n" + @@ -276,6 +277,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { String amount = null; String bic = null; + String blz = null; String iban = null; String holder = null; String ref = null; @@ -283,6 +285,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { if (zi.canParse()) { zi.parse(); amount = zi.getAmount(); + blz = zi.getBLZ(); bic = zi.getBIC(); iban = zi.getIBAN(); holder = zi.getHolder(); @@ -290,6 +293,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { } assertEquals(amount, "571.04"); + assertEquals(blz, "41441604"); assertEquals(bic, "COBADEFFXXX"); assertEquals(iban, "DE88 2008 0000 0970 3757 00"); assertEquals(holder, "Bei Spiel GmbH"); @@ -351,8 +355,11 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { + "Überweisung\n" + "\n" + "DE88 2008 0000 0970 3757 00\n" + "\n" - + "\n" + "COBADEFFXXX\n" - + "Commerzbank\n" + "\n" + + "\n" + + "COBADEFFXXX\n" + + "41441604\n" + + "Commerzbank\n" + + "\n" + "\n" + "\n" + "11.20\n" + "VAT\n" @@ -467,6 +474,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { String amount = null; String bic = null; + String blz = null; String iban = null; String holder = null; String ref = null; @@ -475,6 +483,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { zi.parse(); amount = zi.getAmount(); bic = zi.getBIC(); + blz = zi.getBLZ(); iban = zi.getIBAN(); holder = zi.getHolder(); ref = zi.getForeignReference(); @@ -482,6 +491,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { assertEquals(amount, "571.04"); assertEquals(bic, "COBADEFFXXX"); + assertEquals(blz, "41441604"); assertEquals(iban, "DE88 2008 0000 0970 3757 00"); assertEquals(holder, "Bei Spiel GmbH"); assertEquals(ref, "RE-20170509/505"); diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java index 288a0d81..e61a1d33 100644 --- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java +++ b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java @@ -59,6 +59,12 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp return "RE-20170509/505"; } + @Override + public String getOwnBLZ() + { + return "41441604"; + } + @Override public String getOwnBIC() { @@ -379,6 +385,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp String amount = null; String bic = null; + String blz = null; String iban = null; String holder = null; String ref = null; @@ -389,6 +396,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp zi.parse(); amount = zi.getAmount(); bic = zi.getBIC(); + blz = zi.getBLZ(); iban = zi.getIBAN(); holder = zi.getHolder(); dueDate = zi.getDueDate(); @@ -397,6 +405,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp assertEquals(amount, "571.04"); assertEquals(bic, getOwnBIC()); + assertEquals(blz, getOwnBLZ()); assertEquals(iban, getOwnIBAN()); assertEquals(holder, getOwnOrganisationName()); @@ -439,6 +448,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp String amount = null; String bic = null; + String blz = null; String iban = null; String holder = null; String ref = null; @@ -448,6 +458,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp zi.parse(); amount = zi.getAmount(); bic = zi.getBIC(); + blz = zi.getBLZ(); iban = zi.getIBAN(); holder = zi.getHolder(); ref = zi.getForeignReference(); @@ -455,6 +466,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp assertEquals(amount, "571.04"); assertEquals(bic, getOwnBIC()); + assertEquals(blz, getOwnBLZ()); assertEquals(iban, getOwnIBAN()); assertEquals(holder, getOwnOrganisationName()); assertEquals(ref, getNumber()); diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java index b7a63266..ee4b5d2d 100644 --- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java +++ b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java @@ -56,7 +56,12 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta return "RE-20171118/506"; } - @Override + @Override + public String getOwnBLZ() { + return "41441604"; + } + + @Override public String getOwnBIC() { return "COBADEFFXXX"; } @@ -345,6 +350,7 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta // Reading ZUGFeRD String amount = null; + String blz = null; String bic = null; String iban = null; String holder = null; @@ -353,6 +359,7 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta if (zi.canParse()) { zi.parse(); amount = zi.getAmount(); + blz = zi.getBLZ(); bic = zi.getBIC(); iban = zi.getIBAN(); holder = zi.getHolder(); @@ -360,7 +367,8 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta } // this resembles the data written in MustangReaderWriterCustomXMLTest assertEquals(amount, "571.04"); - assertEquals(bic, "COBADEFFXXX"); + assertEquals(blz, "41441604"); + assertEquals(bic, "COBADEFFXXX"); assertEquals(iban, "DE88 2008 0000 0970 3757 00"); assertEquals(holder, "Bei Spiel GmbH"); assertEquals(ref, "RE-20170509/505"); diff --git a/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505.pdf b/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505.pdf index 14976a45..07a14203 100644 Binary files a/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505.pdf and b/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505.pdf differ diff --git a/src/test/resources/migration/input/ZUGFeRD1-invoice-adjusted.xml b/src/test/resources/migration/input/ZUGFeRD1-invoice-adjusted.xml index f3729478..9667d4b5 100644 --- a/src/test/resources/migration/input/ZUGFeRD1-invoice-adjusted.xml +++ b/src/test/resources/migration/input/ZUGFeRD1-invoice-adjusted.xml @@ -80,6 +80,7 @@ COBADEFFXXX + 41441604 Commerzbank diff --git a/src/test/resources/migration/input/ZUGFeRD1-invoice.xml b/src/test/resources/migration/input/ZUGFeRD1-invoice.xml index c9dbbe2c..a0948cb2 100644 --- a/src/test/resources/migration/input/ZUGFeRD1-invoice.xml +++ b/src/test/resources/migration/input/ZUGFeRD1-invoice.xml @@ -80,6 +80,7 @@ COBADEFFXXX + 41441604 Commerzbank diff --git a/src/test/resources/migration/reference/ZUGFeRD2-invoice.xml b/src/test/resources/migration/reference/ZUGFeRD2-invoice.xml index 4247df96..5eb5637c 100644 --- a/src/test/resources/migration/reference/ZUGFeRD2-invoice.xml +++ b/src/test/resources/migration/reference/ZUGFeRD2-invoice.xml @@ -180,6 +180,7 @@ Migrated by Mustangproject XSLT COBADEFFXXX + 41441604 Commerzbank