From d764fb4784ff1800f89be6bfd5204ac84d98bc82 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Thu, 26 Nov 2020 09:39:47 +0100 Subject: [PATCH] closes #201 --- History.md | 6 +++ .../main/java/org/mustangproject/Invoice.java | 17 +++++++ .../ZUGFeRD/ZUGFeRD2PullProvider.java | 2 +- .../org/mustangproject/ZUGFeRD/XRTest.java | 44 +++++++++++++++++++ .../mustangproject/ZUGFeRD/ZF2PushTest.java | 4 +- .../mustangproject/validator/LibraryTest.java | 2 +- 6 files changed, 71 insertions(+), 4 deletions(-) diff --git a/History.md b/History.md index 838ba158..fa2e51df 100644 --- a/History.md +++ b/History.md @@ -1,3 +1,9 @@ +2.0.3 +======= + + +- #201 correct embedded files in XRechnung + 2.0.2 ======= 2020-11-25 diff --git a/library/src/main/java/org/mustangproject/Invoice.java b/library/src/main/java/org/mustangproject/Invoice.java index 68c49339..1d0c121f 100644 --- a/library/src/main/java/org/mustangproject/Invoice.java +++ b/library/src/main/java/org/mustangproject/Invoice.java @@ -40,6 +40,7 @@ public class Invoice implements IExportableTransaction { protected ArrayList ZFItems = null; protected ArrayList notes = null; protected String contractReferencedDocument = null; + protected ArrayList xmlEmbeddedFiles=null; protected Date detailedDeliveryDateStart = null; protected Date detailedDeliveryPeriodEnd = null; @@ -78,6 +79,22 @@ public class Invoice implements IExportableTransaction { return this; } + public Invoice embedFileInXML(FileAttachment fa) { + if (xmlEmbeddedFiles == null) { + xmlEmbeddedFiles=new ArrayList(); + } + xmlEmbeddedFiles.add(fa); + return this; + } + + public FileAttachment[] getAdditionalReferencedDocuments() { + if (xmlEmbeddedFiles == null) { + return null; + } + return xmlEmbeddedFiles.toArray(new FileAttachment[0]); + + } + @Override public String getNumber() { diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index f31176df..54d1c169 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -442,7 +442,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { + " 916\n" + " " + f.getDescription() + "\n" + " " + documentContent + "\n" + + " filename=\"" + f.getFilename() + "\">" + documentContent + "\n" + " \n"; } } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java index 6166dd51..ac94775d 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java @@ -39,6 +39,7 @@ import static org.xmlunit.assertj.XmlAssert.assertThat; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class XRTest extends TestCase { final String TARGET_XML = "./target/testout-XR.xml"; + final String TARGET_EDGE_XML = "./target/testout-XR-Edge.xml"; public void testXRExport() { // the writing part @@ -76,5 +77,48 @@ public class XRTest extends TestCase { } } + public void testXREdgeExport() { + + // the writing part + + String orgname = "Test company"; + String number = "123"; + String amountStr = "1.00"; + BigDecimal amount = new BigDecimal(amountStr); + byte[] b = {12, 13}; + FileAttachment fe1=new FileAttachment("one.pdf", "application/pdf", "Alternative", b); + FileAttachment fe2=new FileAttachment("two.pdf", "application/pdf", "Alternative", b); + Invoice i = 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(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")) + .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))) + .embedFileInXML(fe1).embedFileInXML(fe2); + + + ZUGFeRD2PullProvider zf2p = new ZUGFeRD2PullProvider(); + + zf2p.setProfile(Profiles.getByName("XRechnung")); + zf2p.generateXML(i); + String theXML = new String(zf2p.getXML()); + assertTrue(theXML.contains("