From 37e4e43ed2f95c8d95d869503d7866d121f5a50e Mon Sep 17 00:00:00 2001 From: langfr Date: Sat, 6 Sep 2025 12:04:08 +0100 Subject: [PATCH] Squashed commit of the following: commit f0a44d757de2693e5baa89ac68192ee92632e0a2 Author: langfr Date: Sat Sep 6 12:00:42 2025 +0100 Enable option setting Additional Document Description 2. commit 15524a2ed661fb44f782863da5d7e9fcf4f68e78 Author: langfr Date: Tue Sep 2 21:30:30 2025 +0100 Enable option setting Additional Document Description. Enable setting and reading Additional Document Description. --- .../main/java/org/mustangproject/FileAttachment.java | 12 +++++++++--- .../ZUGFeRD/ZUGFeRDInvoiceImporter.java | 6 ++++++ .../test/java/org/mustangproject/ZUGFeRD/XRTest.java | 5 +++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/org/mustangproject/FileAttachment.java b/library/src/main/java/org/mustangproject/FileAttachment.java index 99a60419..791db6d4 100644 --- a/library/src/main/java/org/mustangproject/FileAttachment.java +++ b/library/src/main/java/org/mustangproject/FileAttachment.java @@ -10,7 +10,7 @@ public class FileAttachment { protected String filename; protected String mimetype; protected String relation = "Unspecified"; - protected String description; + protected String description = "Additional file attachment"; protected byte[] data; @@ -21,19 +21,25 @@ public class FileAttachment { } + public FileAttachment(String filename, String mimetype, String relation, byte[] data, String description) { + this.filename = filename; + this.mimetype = mimetype; + this.relation = relation; + this.data = data; + this.description = description; + } + public FileAttachment(String filename, String mimetype, String relation, byte[] data) { this.filename = filename; this.mimetype = mimetype; this.relation = relation; this.data = data; - this.description = "Additional file attachment"; } public FileAttachment(String filename, String mimetype, byte[] data) { this.filename = filename; this.mimetype = mimetype; this.data = data; - this.description = "Additional file attachment"; } public String getDescription() { diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index fce06f01..cdfe1d29 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -994,6 +994,12 @@ public class ZUGFeRDInvoiceImporter { NodeList attachmentNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET); for (int i = 0; i < attachmentNodes.getLength(); i++) { FileAttachment fa = new FileAttachment(attachmentNodes.item(i).getAttributes().getNamedItem("filename").getNodeValue(), attachmentNodes.item(i).getAttributes().getNamedItem("mimeCode").getNodeValue(), "Data", Base64.getMimeDecoder().decode(XMLTools.trimOrNull(attachmentNodes.item(i)))); + NodeList nl = attachmentNodes.item(i).getParentNode().getChildNodes(); + for (int j = 0; j < nl.getLength(); j++) { + if (nl.item(j).getLocalName() != null && nl.item(j).getLocalName().equals("Name")) { + fa.setDescription(nl.item(j).getTextContent()); + } + } zpp.embedFileInXML(fa); // filename = "Aufmass.png" mimeCode = "image/png" //EmbeddedDocumentBinaryObject cbc:EmbeddedDocumentBinaryObject mimeCode="image/png" filename="Aufmass.png" diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java index 42fd653c..cba6aeca 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java @@ -102,7 +102,7 @@ public class XRTest extends TestCase { BigDecimal amount = new BigDecimal(amountStr); byte[] b = {12, 13}; - FileAttachment fe1 = new FileAttachment("one.pdf", "application/pdf", "Alternative", b); + FileAttachment fe1 = new FileAttachment("one.pdf", "application/pdf", "Alternative", b,"Beschreibung"); Invoice i = new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()) .setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").setEmail("sender@example.com").addTaxID("DE4711").addVATID("DE0815").setContact(new Contact("Hans Test", "+49123456789", "test@example.org")).addBankDetails(new BankDetails("DE12500105170648489890", "COBADEFXXX").setAccountName("kontoInhaber"))) .setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").setEmail("recipient@sample.org")) @@ -121,6 +121,7 @@ public class XRTest extends TestCase { zf2p.setProfile(Profiles.getByName("XRechnung")); zf2p.generateXML(i); String theXML = new String(zf2p.getXML(), StandardCharsets.UTF_8); + System.out.println(theXML); assertTrue(theXML.contains("