diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml
index c8e66c0b..d42a011f 100644
--- a/dependency-reduced-pom.xml
+++ b/dependency-reduced-pom.xml
@@ -4,7 +4,7 @@
org.mustangproject.ZUGFeRD
mustang
Mustang
- 1.4.0
+ 1.4.1-SNAPSHOT
The Mustang project is a java library to read and write ZUGFeRD meta data inside your invoice PDFs
http://www.mustangproject.org/
@@ -98,6 +98,39 @@
true
+
+ org.codehaus.mojo
+ templating-maven-plugin
+ 1.0.0
+
+
+ filtering-java-templates
+
+ filter-sources
+
+
+
+
+
+ org.codehaus.mojo
+ jaxb2-maven-plugin
+ 2.3.1
+
+
+ xjc
+
+ xjc
+
+
+
+
+ 2.1
+ org.mustangproject.ZUGFeRD.model
+
+ src/main/schema/ZUGFeRD1p0.xsd
+
+
+
@@ -113,6 +146,30 @@
+
+ com.helger
+ ph-schematron
+ 4.3.1
+ test
+
+
+ ph-commons
+ com.helger
+
+
+ ph-xml
+ com.helger
+
+
+ ph-jaxb
+ com.helger
+
+
+ Saxon-HE
+ net.sf.saxon
+
+
+
@@ -122,10 +179,12 @@
- 1.6
+ 1.7
github
+ 1.7
-Xdoclint:none
UTF-8
+ 1.7
diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java
new file mode 100644
index 00000000..8653e00c
--- /dev/null
+++ b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java
@@ -0,0 +1,228 @@
+package org.mustangproject.ZUGFeRD;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+import javax.xml.transform.TransformerException;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.junit.FixMethodOrder;
+import org.junit.runners.MethodSorters;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class MustangReaderWriterCustomXMLTest extends TestCase {
+
+ /**
+ * Create the test case
+ *
+ * @param testName
+ * name of the test case
+ */
+ public MustangReaderWriterCustomXMLTest(String testName) {
+ super(testName);
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite() {
+ return new TestSuite(MustangReaderWriterCustomXMLTest.class);
+ }
+
+ // //////// TESTS
+ // //////////////////////////////////////////////////////////////////////////////////////////
+
+ /**
+ * The exporter test bases on @{code
+ * ./src/test/MustangGnuaccountingBeispielRE-20140703_502blanko.pdf}, adds
+ * metadata, writes to @{code ./target/testout-*} and then imports to check the
+ * values. It would not make sense to have it run before the less complex
+ * importer test (which is probably redundant) --> as only Name Ascending is
+ * supported for Test Unit sequence, I renamed the Exporter Test test-Z-Export
+ */
+ public void testZExport() throws Exception {
+
+ final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20170509_505newEdge.pdf";
+ // the writing part
+
+ try {
+ InputStream SOURCE_PDF = this.getClass()
+ .getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
+
+ ZUGFeRDExporter zea1 = new ZUGFeRDExporterFromA1Factory().setProducer("My Application").setCreator("Test")
+ .loadFromPDFA1("./Source.pdf");
+ String ownZUGFeRDXML = "\n"
+ + "\n" + "\n"
+ + "false\n" + "\n"
+ + "\n" + "\n"
+ + "urn:ferd:CrossIndustryDocument:invoice:1p0:extended\n" + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "RE-20170509/505\n" + "RECHNUNG\n"
+ + "380\n" + "\n"
+ + "20170509\n" + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "Bei Spiel GmbH\n" + "\n"
+ + "12345\n" + "Ecke 12\n"
+ + "Stadthausen\n" + "DE\n"
+ + "\n" + "\n"
+ + "22/815/0815/4\n" + "\n"
+ + "\n" + "DE136695976\n"
+ + "\n" + "\n" + "\n"
+ + "Theodor Est\n" + "\n"
+ + "88802\n" + "Bahnstr. 42\n"
+ + "Spielkreis\n" + "DE\n"
+ + "\n" + "\n"
+ + "DE999999999\n" + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "20170507\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "RE-20170509/505\n"
+ + "EUR\n"
+ + "\n" + "42\n"
+ + "Überweisung\n" + "\n"
+ + "DE88 2008 0000 0970 3757 00\n"
+ + "\n"
+ + "\n" + "COBADEFFXXX\n"
+ + "Commerzbank\n" + "\n"
+ + "\n" + "\n"
+ + "11.20\n"
+ + "VAT\n"
+ + "160.00\n"
+ + "S\n"
+ + "7.00\n" + "\n"
+ + "\n"
+ + "63.84\n"
+ + "VAT\n"
+ + "336.00\n"
+ + "S\n"
+ + "19.00\n" + "\n"
+ + "\n"
+ + "Zahlbar ohne Abzug bis zum 30.05.2017\n"
+ + "\n" + "20170530\n"
+ + "\n" + "\n"
+ + "\n"
+ + "496.00\n"
+ + "0.00\n"
+ + "0.00\n"
+ + "496.00\n"
+ + "75.04\n"
+ + "571.04\n"
+ + "571.04\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n" + "1\n"
+ + "\n" + "\n"
+ + "\n"
+ + "160.0000\n"
+ + "1.0000\n"
+ + "\n" + "\n"
+ + "160.0000\n"
+ + "1.0000\n"
+ + "\n" + "\n"
+ + "\n"
+ + "1.0000\n"
+ + "\n" + "\n"
+ + "\n" + "VAT\n"
+ + "S\n"
+ + "7.00\n" + "\n"
+ + "\n"
+ + "160.00\n"
+ + "\n"
+ + "\n" + "\n" + "\n"
+ + "Künstlerische Gestaltung (Stunde): Einer Beispielrechnung\n" + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n" + "2\n"
+ + "\n" + "\n"
+ + "\n"
+ + "0.7900\n"
+ + "1.0000\n"
+ + "\n" + "\n"
+ + "0.7900\n"
+ + "1.0000\n"
+ + "\n" + "\n"
+ + "\n"
+ + "400.0000\n"
+ + "\n" + "\n"
+ + "\n" + "VAT\n"
+ + "S\n"
+ + "19.00\n" + "\n"
+ + "\n"
+ + "316.00\n"
+ + "\n"
+ + "\n" + "\n"
+ + "Luftballon: Bunt, ca. 500ml\n" + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "3\n" + "\n"
+ + "\n" + "\n"
+ + "0.1000\n"
+ + "1.0000\n"
+ + "\n" + "\n"
+ + "0.1000\n"
+ + "1.0000\n"
+ + "\n" + "\n"
+ + "\n"
+ + "200.0000\n"
+ + "\n" + "\n"
+ + "\n" + "VAT\n"
+ + "S\n"
+ + "19.00\n" + "\n"
+ + "\n"
+ + "20.00\n"
+ + "\n"
+ + "\n" + "\n"
+ + "Heiße Luft pro Liter\n" + "\n"
+ + "\n" + "\n"
+ + "\n" + "";
+ zea1.setZUGFeRDXMLData(ownZUGFeRDXML.getBytes());
+ zea1.PDFattachZugferdFile(null);
+
+ zea1.export(TARGET_PDF);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ // now check the contents (like MustangReaderTest)
+ ZUGFeRDImporter zi = new ZUGFeRDImporter();
+ zi.extract(TARGET_PDF);
+ // Reading ZUGFeRD
+
+ String amount = null;
+ String bic = null;
+ String iban = null;
+ String holder = null;
+ String ref = null;
+
+ if (zi.canParse()) {
+ zi.parse();
+ amount = zi.getAmount();
+ bic = zi.getBIC();
+ iban = zi.getIBAN();
+ holder = zi.getHolder();
+ ref = zi.getForeignReference();
+ }
+
+ assertEquals(amount, "571.04");
+ assertEquals(bic, "COBADEFFXXX");
+ assertEquals(iban, "DE88 2008 0000 0970 3757 00");
+ assertEquals(holder, "Bei Spiel GmbH");
+ assertEquals(ref, "RE-20170509/505");
+
+ }
+
+}