From 23650e68d8668636d074ed41faccb45cf21cb774 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Sat, 25 Nov 2023 19:32:12 +0100 Subject: [PATCH] checking generated PDF/As --- .../mustangproject/ZUGFeRD/PDFAWriteTest.java | 116 ++++++++++++++++++ ...ountingBeispielRE-20201121_508blankoA3.pdf | Bin 0 -> 90499 bytes .../validator/PDFValidatorTest.java | 45 ++++++- 3 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 library/src/test/java/org/mustangproject/ZUGFeRD/PDFAWriteTest.java create mode 100644 library/src/test/resources/MustangGnuaccountingBeispielRE-20201121_508blankoA3.pdf diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/PDFAWriteTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/PDFAWriteTest.java new file mode 100644 index 00000000..506f0e60 --- /dev/null +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/PDFAWriteTest.java @@ -0,0 +1,116 @@ + +/** + * ********************************************************************* + *

+ * Copyright 2019 Jochen Staerk + *

+ * Use is subject to license terms. + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0. + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + *

+ * See the License for the specific language governing permissions and + * limitations under the License. + *

+ * ********************************************************************** + */ +package org.mustangproject.ZUGFeRD; + +import org.junit.FixMethodOrder; +import org.junit.runners.MethodSorters; +import org.mustangproject.*; + +import java.io.File; +import java.io.IOException; +import java.math.BigDecimal; +import java.util.Date; + + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class PDFAWriteTest extends ResourceCase { + final String TARGET_PDF_FROM_A3 = "./target/testout-PDFA3FromA3.pdf"; + final String TARGET_PDF_FROM_A3_UNKNOWN = "./target/testout-PDFA3FromUnkownA3.pdf"; + final String TARGET_PDF_FROM_A1_UNKNOWN = "./target/testout-PDFA3FromUnkownA1.pdf"; + public void testA3KnownExport() { + // test creating factur-x invoices to french authorities, i.e. with SIRET number + // the writing part + TradeParty recipient = new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE"); + Invoice i = createInvoice(recipient); + File tempFile = getResourceAsFile("MustangGnuaccountingBeispielRE-20201121_508blankoA3.pdf");//a3 + int exceptions=0; + try { + ZUGFeRDExporterFromA3 zea3 = new ZUGFeRDExporterFromA3().load(tempFile.getAbsolutePath()); + + zea3.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()) + .setSender(new TradeParty("Test", "teststr", "55232", "teststadt", "DE").addBankDetails(new BankDetails("777666555", "DE4321"))).setOwnTaxID("4711").setOwnVATID("DE19990815") + .setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE") + .setContact(new Contact("nameRep", "phoneRep", "emailRep@test.com"))).setNumber("X12") + .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal(2.5), new BigDecimal(1.0)))); + + zea3.export(TARGET_PDF_FROM_A3); + + } catch (IOException e) { + exceptions++; + } + assertTrue(exceptions==0); + + } + public void testA3UnknownExport() { + // test creating factur-x invoices to french authorities, i.e. with SIRET number + // the writing part + TradeParty recipient = new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE"); + Invoice i = createInvoice(recipient); + + File tempFile = getResourceAsFile("MustangGnuaccountingBeispielRE-20201121_508blankoA3.pdf"); + int exceptions=0; + try { + ZUGFeRDExporterFromA1 zea3 = new ZUGFeRDExporterFromA1().load(tempFile.getAbsolutePath()); + zea3.setTransaction(i); + zea3.export(TARGET_PDF_FROM_A3_UNKNOWN); + + } catch (IOException e) { + exceptions++; + } + assertTrue(exceptions==0); + + } + + public void testA3UnknownExportFromA1() { + // test creating factur-x invoices to french authorities, i.e. with SIRET number + // the writing part + TradeParty recipient = new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE"); + Invoice i = createInvoice(recipient); + File tempFile = getResourceAsFile("MustangGnuaccountingBeispielRE-20201121_508blanko.pdf"); + int exceptions=0; + try { + IZUGFeRDExporter zea3 = new ZUGFeRDExporterFromPDFA().load(tempFile.getAbsolutePath()); + zea3.setTransaction(i); + zea3.setProfile(Profiles.getByName("EN16931")); + zea3.export(TARGET_PDF_FROM_A1_UNKNOWN); + + } catch (IOException e) { + exceptions++; + } + assertTrue(exceptions==0); + + } + + private Invoice createInvoice(TradeParty recipient) { + String orgname = "Test company"; + String number = "123"; + String amountStr = "1.00"; + BigDecimal amount = new BigDecimal(amountStr); + return new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()) + .setSender(new TradeParty(orgname,"teststr","55232","teststadt","DE").addTaxID("DE4711").addVATID("DE0815").setContact(new Contact("Hans Test","+49123456789","test@example.org")).addBankDetails(new BankDetails("DE12500105170648489890","COBADEFXXX"))) + .setRecipient(recipient) + .setReferenceNumber("991-01484-64")//leitweg-id + // not using any VAT, this is also a test of zero-rated goods: + .setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", BigDecimal.ZERO), amount, new BigDecimal(1.0))); + } + +} diff --git a/library/src/test/resources/MustangGnuaccountingBeispielRE-20201121_508blankoA3.pdf b/library/src/test/resources/MustangGnuaccountingBeispielRE-20201121_508blankoA3.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9a0ef0fe625da1fcc5bd505ecc833106d032aed4 GIT binary patch literal 90499 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

-SaL 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 J>(e#i{{U3lHd_Dy literal 0 HcmV?d00001 diff --git a/validator/src/test/java/org/mustangproject/validator/PDFValidatorTest.java b/validator/src/test/java/org/mustangproject/validator/PDFValidatorTest.java index f1376f0e..f267b094 100644 --- a/validator/src/test/java/org/mustangproject/validator/PDFValidatorTest.java +++ b/validator/src/test/java/org/mustangproject/validator/PDFValidatorTest.java @@ -8,6 +8,47 @@ import org.slf4j.LoggerFactory; public class PDFValidatorTest extends ResourceCase { private static final Logger LOGGER = LoggerFactory.getLogger(ZUGFeRDValidator.class.getCanonicalName()); // log + public void testPDFPotentialA3SourceValidation() { + final ValidationContext vc = new ValidationContext(null); + final PDFValidator pv = new PDFValidator(vc); + + try { + + File tempFile = new File("../library/target/testout-PDFA3FromA3.pdf"); + assertTrue(tempFile.exists()); + + pv.setFilename(tempFile.getAbsolutePath()); + pv.validate(); + String actual = pv.getXMLResult(); + assertEquals(true, actual.contains("summary status=\"valid")); + assertEquals(false, actual.contains("summary status=\"invalid")); + + + tempFile = new File("../library/target/testout-PDFA3FromUnkownA3.pdf"); + assertTrue(tempFile.exists()); + + pv.setFilename(tempFile.getAbsolutePath()); + vc.clear(); + pv.validate(); + actual = pv.getXMLResult(); + assertEquals(true, actual.contains("summary status=\"valid")); + assertEquals(false, actual.contains("summary status=\"invalid")); + + tempFile = new File("../library/target/testout-PDFA3FromUnkownA1.pdf"); + assertTrue(tempFile.exists()); + + pv.setFilename(tempFile.getAbsolutePath()); + vc.clear(); + pv.validate(); + actual = pv.getXMLResult(); + assertEquals(true, actual.contains("summary status=\"valid")); + assertEquals(false, actual.contains("summary status=\"invalid")); + + } catch (final IrrecoverableValidationError e) { + // ignore, will be in XML output anyway + } + + } public void testPDFValidation() { final ValidationContext vc = new ValidationContext(null); final PDFValidator pv = new PDFValidator(vc); @@ -36,7 +77,7 @@ public class PDFValidatorTest extends ResourceCase { assertEquals(true, actual.contains("validationReport profileName=\"PDF/A-3")); assertEquals(true, actual.contains("batchSummary totalJobs=\"1\" failedToParse=\"0\" encrypted=\"0\"")); assertEquals(true, - actual.contains("validationReports compliant=\"1\" nonCompliant=\"0\" failedJobs=\"0\">")); + actual.contains("validationReports compliant=\"1\" nonCompliant=\"0\" failedJobs=\"0\">")); // test some xml // assertEquals(true, actual.contains("")); + actual.contains("validationReports compliant=\"1\" nonCompliant=\"0\" failedJobs=\"0\">")); assertEquals(false, actual.contains("