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