diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java index c0aee220..70afed71 100644 --- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java +++ b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java @@ -49,7 +49,252 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { // //////// TESTS // ////////////////////////////////////////////////////////////////////////////////////////// + public void testCustomZF2Export() throws Exception { + final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20171118_506custom.pdf"; + // the writing part + + try { + InputStream SOURCE_PDF = this.getClass() + .getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf"); + + ZUGFeRDExporter zea1 = new ZUGFeRDExporterFromA1Factory().setProducer("My Application").setCreator("Test").setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel.EN16931) + .load(SOURCE_PDF); + + final byte[] UTF8ByteOrderMark = new byte[] { (byte)0xef, (byte)0xbb, + (byte)0xbf }; + /* we have much more information than just in the basic profile (comfort or extended) but it's perfectly valid to provide more information, just not less. */ + String ownZUGFeRDXML = new String(UTF8ByteOrderMark)+"\n" + + "\n" + + " \n" + + " false\n" + + " \n" + + " urn:cen.eu:en16931:2017:compliant:factur-x.eu:1p0:extended\n" + + " \n" + + " \n" + + " \n" + + " RE-20171118/506\n" + + " RECHNUNG\n" + + " 380\n" + + " 20171118\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " 1\n" + + " \n" + + " \n" + + " Künstlerische Gestaltung (Stunde): Einer Beispielrechnung\n" + + " \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" + + " \n" + + " 2\n" + + " \n" + + " \n" + + " Luftballon: Bunt, ca. 500ml\n" + + " \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" + + " \n" + + " \n" + + " 3\n" + + " \n" + + " \n" + + " Heiße Luft pro Liter\n" + + " \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" + + " \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" + + " 20171117\n" + + " \n" + + " \n" + + " \n" + + " RE-20171118/506\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 09.12.2017\n" + + " 20171209\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" + + ""; + zea1.setZUGFeRDXMLData(ownZUGFeRDXML.getBytes("UTF-8")); + + ByteArrayOutputStream baos=new ByteArrayOutputStream(); + zea1.disableAutoClose(true); + zea1.export(TARGET_PDF); + zea1.export(baos); + zea1.close(); + String pdfContent=baos.toString("UTF-8"); + assertFalse(pdfContent.indexOf("(via mustangproject.org")==-1); + assertFalse(pdfContent.indexOf("EN16931") == -1); + + } 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-20171118/506"); + } /** * The exporter test bases on @{code * ./src/test/MustangGnuaccountingBeispielRE-20140703_502blanko.pdf}, adds @@ -58,7 +303,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { * 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 testCustomExport() throws Exception { + public void testCustomZF1Export() throws Exception { final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20170509_505custom.pdf"; // the writing part