diff --git a/.gitignore b/.gitignore
index de7b2f4b..ece11c66 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,12 @@ target/
pom.xml.*
bin/
/.gradle/
+
+# ignore intelliJ foobar
+*.iml
+.idea
+
+# ignore test files
+ZUGFeRD-*-test
+
+dependency-reduced-pom.xml
\ No newline at end of file
diff --git a/ZUGFeRD2-invoice.xml b/ZUGFeRD2-invoice.xml
index cf4be5c7..ae3a1a03 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,14 @@ Migrated by Mustangproject XSLT
EUR
42
- Überweisung
+ Überweisung
DE88 2008 0000 0970 3757 00
+ 44421800
COBADEFFXXX
+ 41441604
Commerzbank
diff --git a/pom.xml b/pom.xml
index f3d5aef5..508ced61 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,8 +39,8 @@
-Xdoclint:none
1.7
- 1.7
- 1.7
+ 1.8
+ 1.8
diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java
index 3077e610..da6ebed3 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
*/
@@ -95,7 +101,13 @@ public interface IZUGFeRDExportableTransaction {
*/
String getOwnIBAN();
- /**
+ /**
+ * IBAN of the sender
+ * @return the Account Number of the invoice sender's bank account
+ */
+ String getOwnKto();
+
+ /**
* Tax ID (not VAT ID) of the sender
* @return Tax ID (not VAT ID) of the sender
*/
diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
index 58407e7b..dfac61cc 100644
--- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
+++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
@@ -344,9 +344,11 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
+ " Überweisung\n" //$NON-NLS-1$
+ " \n" //$NON-NLS-1$
+ " "+trans.getOwnIBAN()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " "+trans.getOwnKto()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ " \n" //$NON-NLS-1$
+ " \n" //$NON-NLS-1$
+ " "+trans.getOwnBIC()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " "+ trans.getOwnBLZ()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
// + " "+trans.getOwnBankName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ " \n" //$NON-NLS-1$
+ " \n"; //$NON-NLS-1$
diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java
index 582c5596..0b6989bb 100644
--- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java
+++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java
@@ -161,7 +161,7 @@ public class ZUGFeRDExporter implements Closeable {
public static String getFilenameForVersion(int ver) {
if (ver == 1) {
return "ZUGFeRD-invoice.xml";
- } else if (ver == 2)&&(isFacturX) {
+ } else if ((ver == 2) || (isFacturX)) {
return "factur-x.xml";
} else {
throw new IllegalArgumentException("Version not supported");
diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java
index bf76a855..bac9e128 100644
--- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java
+++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java
@@ -63,8 +63,10 @@ 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 KTO;
private String holder;
private String amount;
private String dueDate;
@@ -127,7 +129,7 @@ public class ZUGFeRDImporter {
//start
InputStream XMP=doc.getDocumentCatalog().getMetadata().exportXMPMetadata();
- xmpString=convertStreamToString(XMP);
+ xmpString=convertStreamToString(XMP);
etn = names.getEmbeddedFiles();
if (etn == null) {
return;
@@ -283,9 +285,12 @@ public class ZUGFeRDImporter {
Node detail = bookingDetails.item(detailIndex);
if ((detail.getLocalName() != null) && (detail.getLocalName().equals("IBANID"))) { //$NON-NLS-1$
setIBAN(detail.getTextContent());
-
}
- }
+ if ((detail.getLocalName() != null) && (detail.getLocalName().equals("ProprietaryID"))) { //$NON-NLS-1$
+ setKTO(detail.getTextContent());
+
+ }
+ }
}
ndList = document.getElementsByTagNameNS("*", "PayeeSpecifiedCreditorFinancialInstitution");// ZF1 //$NON-NLS-1$
@@ -299,6 +304,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 +401,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
@@ -433,7 +459,21 @@ public class ZUGFeRDImporter {
return IBAN;
}
- /**
+ /**
+ *
+ * @return the sender's KTO
+ */
+ public String getKTO() {
+ if (!parsed) {
+ throw new RuntimeException("use extract() before requesting a value");
+ }
+ if (KTO==null) {
+ parse();
+ }
+ return KTO;
+ }
+
+ /**
*
* @return the sender's bank name
*/
@@ -451,7 +491,11 @@ public class ZUGFeRDImporter {
this.IBAN = IBAN;
}
- /**
+ private void setKTO(String KTO) {
+ this.KTO = KTO;
+ }
+
+ /**
*
* @return the name of the owner of the sender's bank account
*/
diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java
index f50cc697..ff9fd022 100644
--- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java
+++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java
@@ -363,6 +363,9 @@ class ZUGFeRDTransactionModelConverter {
IDType iban = xmlFactory.createIDType();
iban.setValue(trans.getOwnIBAN());
bankAccount.setIBANID(iban);
+ IDType kto = xmlFactory.createIDType();
+ kto.setValue(trans.getOwnKto());
+ bankAccount.setProprietaryID(kto);
paymentData.setPayeePartyCreditorFinancialAccount(bankAccount);
CreditorFinancialInstitutionType bankData = xmlFactory
@@ -373,6 +376,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..2ac05c96 100644
--- a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransactionImpl.java
+++ b/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransactionImpl.java
@@ -30,6 +30,8 @@ public class IZUGFeRDExportableTransactionImpl implements IZUGFeRDExportableTran
private IZUGFeRDAllowanceCharge[] zFLogisticsServiceCharges;
private IZUGFeRDExportableItem[] zFItems;
private IZUGFeRDExportableContact recipient;
+ private String ownKto;
+ private String ownBLZ;
private String ownBIC;
private String ownBankName;
private String ownIBAN;
@@ -91,6 +93,16 @@ public class IZUGFeRDExportableTransactionImpl implements IZUGFeRDExportableTran
return recipient;
}
+ @Override
+ public String getOwnKto() {
+ return ownKto;
+ }
+
+ @Override
+ public String getOwnBLZ() {
+ return ownBLZ;
+ }
+
@Override
public String getOwnBIC() {
return ownBIC;
@@ -211,6 +223,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;
@@ -221,6 +238,11 @@ public class IZUGFeRDExportableTransactionImpl implements IZUGFeRDExportableTran
return this;
}
+ public IZUGFeRDExportableTransactionImpl setOwnKto(String ownKto) {
+ this.ownKto = ownKto;
+ return this;
+ }
+
public IZUGFeRDExportableTransactionImpl setOwnIBAN(String ownIBAN) {
this.ownIBAN = ownIBAN;
return this;
diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java
index a184e89e..2245a3dc 100644
--- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java
+++ b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java
@@ -216,10 +216,12 @@ public class MustangReaderWriterCustomXMLTest extends TestCase {
" 42\n" +
" Überweisung\n" +
" \n" +
- " DE88 2008 0000 0970 3757 00\n" +
- " \n" +
+ " DE88 2008 0000 0970 3757 00\n" +
+ " 44421800\n" +
+ " \n" +
" \n" +
- " COBADEFFXXX\n" +
+ " COBADEFFXXX\n" +
+ " 41441604\n" +
" Commerzbank\n" +
" \n" +
" \n" +
@@ -276,22 +278,28 @@ public class MustangReaderWriterCustomXMLTest extends TestCase {
String amount = null;
String bic = null;
+ String blz = null;
String iban = null;
+ String kto = null;
String holder = null;
String ref = null;
if (zi.canParse()) {
zi.parse();
amount = zi.getAmount();
+ blz = zi.getBLZ();
bic = zi.getBIC();
iban = zi.getIBAN();
+ kto = zi.getKTO();
holder = zi.getHolder();
ref = zi.getForeignReference();
}
assertEquals(amount, "571.04");
+ assertEquals(blz, "41441604");
assertEquals(bic, "COBADEFFXXX");
assertEquals(iban, "DE88 2008 0000 0970 3757 00");
+ assertEquals(kto, "44421800");
assertEquals(holder, "Bei Spiel GmbH");
assertEquals(ref, "RE-20171118/506");
}
@@ -350,9 +358,13 @@ public class MustangReaderWriterCustomXMLTest extends TestCase {
+ "\n" + "42\n"
+ "Überweisung\n" + "\n"
+ "DE88 2008 0000 0970 3757 00\n"
+ + "44421800\n"
+ "\n"
- + "\n" + "COBADEFFXXX\n"
- + "Commerzbank\n" + "\n"
+ + "\n"
+ + "COBADEFFXXX\n"
+ + "41441604\n"
+ + "Commerzbank\n"
+ + "\n"
+ "\n" + "\n"
+ "11.20\n"
+ "VAT\n"
@@ -467,7 +479,9 @@ public class MustangReaderWriterCustomXMLTest extends TestCase {
String amount = null;
String bic = null;
+ String blz = null;
String iban = null;
+ String kto = null;
String holder = null;
String ref = null;
@@ -475,14 +489,18 @@ public class MustangReaderWriterCustomXMLTest extends TestCase {
zi.parse();
amount = zi.getAmount();
bic = zi.getBIC();
+ blz = zi.getBLZ();
iban = zi.getIBAN();
+ kto = zi.getKTO();
holder = zi.getHolder();
ref = zi.getForeignReference();
}
assertEquals(amount, "571.04");
assertEquals(bic, "COBADEFFXXX");
+ assertEquals(blz, "41441604");
assertEquals(iban, "DE88 2008 0000 0970 3757 00");
+ assertEquals(kto, "44421800");
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..e813dbe4 100644
--- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java
+++ b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java
@@ -59,6 +59,18 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp
return "RE-20170509/505";
}
+ @Override
+ public String getOwnKto()
+ {
+ return "44421800";
+ }
+
+ @Override
+ public String getOwnBLZ()
+ {
+ return "41441604";
+ }
+
@Override
public String getOwnBIC()
{
@@ -364,7 +376,7 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp
// //////// TESTS //////////////////////////////////////////////////////////////////////////////////////////
/**
- * The importer test imports from ./src/test/MustangGnuaccountingBeispielRE-20151008_504.pdf to check the values.
+ * The importer test imports from ./src/test/MustangGnuaccountingBeispielRE-20170509_505.pdf to check the values.
* --> as only Name Ascending is supported for Test Unit sequence, I renamed the this test-A-Export to run before
* testZExport
*
@@ -379,7 +391,9 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp
String amount = null;
String bic = null;
+ String blz = null;
String iban = null;
+ String kto = null;
String holder = null;
String ref = null;
String dueDate = null;
@@ -389,7 +403,9 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp
zi.parse();
amount = zi.getAmount();
bic = zi.getBIC();
+ blz = zi.getBLZ();
iban = zi.getIBAN();
+ kto = zi.getKTO();
holder = zi.getHolder();
dueDate = zi.getDueDate();
ref = zi.getForeignReference();
@@ -397,7 +413,9 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp
assertEquals(amount, "571.04");
assertEquals(bic, getOwnBIC());
+ assertEquals(blz, getOwnBLZ());
assertEquals(iban, getOwnIBAN());
+ assertEquals(kto, getOwnKto());
assertEquals(holder, getOwnOrganisationName());
assertEquals(dueDate, "20170530");
@@ -439,7 +457,9 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp
String amount = null;
String bic = null;
+ String blz = null;
String iban = null;
+ String kto = null;
String holder = null;
String ref = null;
@@ -448,14 +468,18 @@ public class MustangReaderWriterEdgeTest extends TestCase implements IZUGFeRDExp
zi.parse();
amount = zi.getAmount();
bic = zi.getBIC();
+ blz = zi.getBLZ();
iban = zi.getIBAN();
+ kto = zi.getKTO();
holder = zi.getHolder();
ref = zi.getForeignReference();
}
assertEquals(amount, "571.04");
assertEquals(bic, getOwnBIC());
+ assertEquals(blz, getOwnBLZ());
assertEquals(iban, getOwnIBAN());
+ assertEquals(kto, getOwnKto());
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..621fb874 100644
--- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java
+++ b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java
@@ -56,7 +56,17 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
return "RE-20171118/506";
}
- @Override
+ @Override
+ public String getOwnKto() {
+ return "44421800";
+ }
+
+ @Override
+ public String getOwnBLZ() {
+ return "41441604";
+ }
+
+ @Override
public String getOwnBIC() {
return "COBADEFFXXX";
}
@@ -345,23 +355,29 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
// Reading ZUGFeRD
String amount = null;
+ String blz = null;
String bic = null;
String iban = null;
+ String kto = null;
String holder = null;
String ref = null;
if (zi.canParse()) {
zi.parse();
amount = zi.getAmount();
+ blz = zi.getBLZ();
bic = zi.getBIC();
iban = zi.getIBAN();
+ kto = zi.getKTO();
holder = zi.getHolder();
ref = zi.getForeignReference();
}
// 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(kto, "44421800");
assertEquals(holder, "Bei Spiel GmbH");
assertEquals(ref, "RE-20170509/505");
@@ -514,6 +530,7 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
String amount = null;
String bic = null;
String iban = null;
+ String kto = null;
String holder = null;
String ref = null;
if (zi.canParse()) {
@@ -521,6 +538,7 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
amount = zi.getAmount();
bic = zi.getBIC();
iban = zi.getIBAN();
+ kto = zi.getKTO();
holder = zi.getHolder();
ref = zi.getForeignReference();
}
@@ -528,6 +546,7 @@ public class MustangReaderWriterTest extends TestCase implements IZUGFeRDExporta
assertEquals(amount, "571.04");
assertEquals(bic, getOwnBIC());
assertEquals(iban, getOwnIBAN());
+ assertEquals(kto, getOwnKto());
assertEquals(holder, getOwnOrganisationName());
assertEquals(ref, getNumber());
diff --git a/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505.pdf b/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505.pdf
index 14976a45..d2bcf218 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..70db824b 100644
--- a/src/test/resources/migration/input/ZUGFeRD1-invoice-adjusted.xml
+++ b/src/test/resources/migration/input/ZUGFeRD1-invoice-adjusted.xml
@@ -77,9 +77,11 @@
Überweisung
DE88 2008 0000 0970 3757 00
+ 44421800
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..4b3ddba2 100644
--- a/src/test/resources/migration/input/ZUGFeRD1-invoice.xml
+++ b/src/test/resources/migration/input/ZUGFeRD1-invoice.xml
@@ -77,9 +77,11 @@
Überweisung
DE88 2008 0000 0970 3757 00
+ 44421800
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..12043217 100644
--- a/src/test/resources/migration/reference/ZUGFeRD2-invoice.xml
+++ b/src/test/resources/migration/reference/ZUGFeRD2-invoice.xml
@@ -177,9 +177,11 @@ Migrated by Mustangproject XSLT
Überweisung
DE88 2008 0000 0970 3757 00
+ 44421800
COBADEFFXXX
+ 41441604
Commerzbank