From 90f720c0ebc200b7346639d342503cc11ab55055 Mon Sep 17 00:00:00 2001 From: langfr Date: Tue, 20 Aug 2024 22:16:57 +0100 Subject: [PATCH 01/33] Add LegalOrganisation.TradingBusinessName and DefinedTradeContact also for Recipient. --- .../org/mustangproject/LegalOrganisation.java | 61 +++++++++++++++---- .../java/org/mustangproject/TradeParty.java | 4 ++ .../ZUGFeRD/IZUGFeRDLegalOrganisation.java | 18 +++--- .../ZUGFeRD/ZUGFeRD2PullProvider.java | 11 +++- .../ZUGFeRD/ProfilesMinimumBasicWLTest.java | 11 ++-- .../mustangproject/validator/LibraryTest.java | 27 +++++++- 6 files changed, 101 insertions(+), 31 deletions(-) diff --git a/library/src/main/java/org/mustangproject/LegalOrganisation.java b/library/src/main/java/org/mustangproject/LegalOrganisation.java index 9ed0aa62..320d7412 100644 --- a/library/src/main/java/org/mustangproject/LegalOrganisation.java +++ b/library/src/main/java/org/mustangproject/LegalOrganisation.java @@ -2,6 +2,8 @@ package org.mustangproject; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import org.mustangproject.ZUGFeRD.*; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; /*** * A organisation, i.e. usually a company @@ -9,35 +11,68 @@ import org.mustangproject.ZUGFeRD.*; @JsonIgnoreProperties(ignoreUnknown = true) public class LegalOrganisation implements IZUGFeRDLegalOrganisation { - protected String ID = null; - protected String SchemeID = null; + protected SchemedID schemedID = null; + protected String tradingBusinessName = null; public LegalOrganisation() { } public LegalOrganisation(String ID, String scheme) { - this.ID=ID; - this.SchemeID=scheme; + this.schemedID = new SchemedID(ID, scheme); + } + + public LegalOrganisation(SchemedID schemedID, String tradingBusinessName) { + this.schemedID = schemedID; + this.tradingBusinessName=tradingBusinessName; + } + + /*** + * XML parsing constructor + * @param nodes the nodelist returned e.g. from xpath + */ + public LegalOrganisation(NodeList nodes) { + if (nodes.getLength() > 0) { + /* + will parse sth like + + 4711 + Test GmbH & Co.KG + + */ + for (int nodeIndex = 0; nodeIndex < nodes.getLength(); nodeIndex++) { + Node currentItemNode = nodes.item(nodeIndex); + if (currentItemNode.getLocalName() != null) { + if (currentItemNode.getLocalName().equals("GlobalID")) { + if (currentItemNode.getAttributes().getNamedItem("schemeID") != null) { + SchemedID gid = new SchemedID().setScheme(currentItemNode.getAttributes().getNamedItem("schemeID").getNodeValue()).setId(currentItemNode.getTextContent()); + this.setSchemedID(gid); + } + } + if (currentItemNode.getLocalName().equals("TradingBusinessName")) { + setTradingBusinessName(currentItemNode.getFirstChild().getNodeValue()); + } + } + } + } } @Override - public String getID() { - return ID; + public SchemedID getSchemedID() { + return this.schemedID; } @Override - public String getSchemeID() { - return SchemeID; + public String getTradingBusinessName() { + return this.tradingBusinessName; } - public LegalOrganisation setID(String id) { - this.ID=id; + public LegalOrganisation setSchemedID(SchemedID schemedID) { + this.schemedID = schemedID; return this; } - public LegalOrganisation setSchemeID(String scheme) { - SchemeID=scheme; + public LegalOrganisation setTradingBusinessName(String tradingBusinessName) { + this.tradingBusinessName = tradingBusinessName; return this; } - } diff --git a/library/src/main/java/org/mustangproject/TradeParty.java b/library/src/main/java/org/mustangproject/TradeParty.java index 2580fbef..40922376 100644 --- a/library/src/main/java/org/mustangproject/TradeParty.java +++ b/library/src/main/java/org/mustangproject/TradeParty.java @@ -308,6 +308,10 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { addGlobalID(gid); } } + if (itemChilds.item(itemChildIndex).getLocalName().equals("SpecifiedLegalOrganization")) { + NodeList organization = itemChilds.item(itemChildIndex).getChildNodes(); + setLegalOrganisation(new LegalOrganisation(organization)); + } if (itemChilds.item(itemChildIndex).getLocalName().equals("DefinedTradeContact")) { NodeList contact = itemChilds.item(itemChildIndex).getChildNodes(); setContact(new Contact(contact)); diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDLegalOrganisation.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDLegalOrganisation.java index 9de017cf..09bf14fc 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDLegalOrganisation.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDLegalOrganisation.java @@ -18,17 +18,19 @@ *********************************************************************** */ package org.mustangproject.ZUGFeRD; -public interface IZUGFeRDLegalOrganisation { +import org.mustangproject.SchemedID; - /*** - * - * @return the ID of the legal organisation - */ - public String getID(); +public interface IZUGFeRDLegalOrganisation { /** * - * @return the scheme attribute of the legal organization=the type of the identification, e.g. 0002=Siren + * @return the scheme attribute of the legal organization=the type of the identification, e.g. 0002=Siren, and its value */ - public String getSchemeID(); + public SchemedID getSchemedID(); + + /*** + * + * @return the TradingBusinessName of the legal organisation + */ + public String getTradingBusinessName(); } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index 8577e5a0..64bfb738 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -139,13 +139,18 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } xml += "" + XMLTools.encodeXML(party.getName()) + ""; - if (party.getLegalOrganisation() != null) { + if (party.getLegalOrganisation() != null && (profile == Profiles.getByName("EN16931") || profile == Profiles.getByName("Extended") || profile == Profiles.getByName("XRechnung"))) { xml += " "; - xml += "" + XMLTools.encodeXML(party.getLegalOrganisation().getID()) + ""; + if (party.getLegalOrganisation().getSchemedID() != null) { + xml += "" + XMLTools.encodeXML(party.getLegalOrganisation().getSchemedID().getID()) + ""; + } + if (party.getLegalOrganisation().getTradingBusinessName() != null) { + xml += "" + XMLTools.encodeXML(party.getLegalOrganisation().getTradingBusinessName()) + ""; + } xml += ""; } - if ((party.getContact() != null) && (isSender || profile == Profiles.getByName("Extended") || profile == Profiles.getByName("XRechnung"))) { + if ((party.getContact() != null) && (isSender || profile == Profiles.getByName("EN16931") || profile == Profiles.getByName("Extended") || profile == Profiles.getByName("XRechnung"))) { xml += ""; if (party.getContact().getName() != null) { xml += "" + XMLTools.encodeXML(party.getContact().getName()) diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ProfilesMinimumBasicWLTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ProfilesMinimumBasicWLTest.java index 016dd9f2..af75615f 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ProfilesMinimumBasicWLTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ProfilesMinimumBasicWLTest.java @@ -36,7 +36,8 @@ import java.util.Date; */ public class ProfilesMinimumBasicWLTest extends TestCase { - final String TARGET_PDF_FX_MINIMUM = "./target/testout-Minimum.pdf"; + final String TARGET_PDF_FX_MINIMUM_INV = "./target/testout-Minimum-INV.pdf"; + final String TARGET_PDF_FX_MINIMUM_CN = "./target/testout-Minimum-CN.pdf"; public void testMinimumCreditNote() { String ownNumber = "NUMFACTURE"; @@ -67,7 +68,7 @@ public class ProfilesMinimumBasicWLTest extends TestCase { .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal(123), new BigDecimal(1))) .setCreditNote(); ze.setTransaction(i); - ze.export(TARGET_PDF_FX_MINIMUM); + ze.export(TARGET_PDF_FX_MINIMUM_CN); // check for pdf-a schema extension // assertFalse(pdfContent.indexOf("EN 16931") == -1); @@ -79,7 +80,7 @@ public class ProfilesMinimumBasicWLTest extends TestCase { } // now check the contents (like MustangReaderTest) - ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF_FX_MINIMUM); + ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF_FX_MINIMUM_CN); // Reading ZUGFeRD assertEquals("146.37",zi.getAmount()); @@ -121,7 +122,7 @@ public class ProfilesMinimumBasicWLTest extends TestCase { .setNumber(ownNumber).setTotalPrepaidAmount(new BigDecimal("1")) .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal(123), new BigDecimal(1))); ze.setTransaction(i); - ze.export(TARGET_PDF_FX_MINIMUM); + ze.export(TARGET_PDF_FX_MINIMUM_INV); // check for pdf-a schema extension // assertFalse(pdfContent.indexOf("EN 16931") == -1); @@ -133,7 +134,7 @@ public class ProfilesMinimumBasicWLTest extends TestCase { } // now check the contents (like MustangReaderTest) - ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF_FX_MINIMUM); + ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF_FX_MINIMUM_INV); // Reading ZUGFeRD assertEquals("145.37",zi.getAmount()); diff --git a/validator/src/test/java/org/mustangproject/validator/LibraryTest.java b/validator/src/test/java/org/mustangproject/validator/LibraryTest.java index 2e1b1a17..03b7c782 100644 --- a/validator/src/test/java/org/mustangproject/validator/LibraryTest.java +++ b/validator/src/test/java/org/mustangproject/validator/LibraryTest.java @@ -244,8 +244,31 @@ public class LibraryTest extends ResourceCase { .isEqualTo(0); } - public void testMinimumProfileValidity() { - File tempFile = new File("../library/target/testout-Minimum.pdf"); + public void testMinimumProfileValidityInvoice() { + File tempFile = new File("../library/target/testout-Minimum-INV.pdf"); + ZUGFeRDValidator zfv = new ZUGFeRDValidator(); + + String res = zfv.validate(tempFile.getAbsolutePath()); + + assertThat(res).valueByXPath("count(//error)") + .asInt() + .isEqualTo(0); + assertThat(res).valueByXPath("/validation/summary/@status") + .asString() + .isEqualTo("valid");// expect to be valid because XR notices are, well, only notices + assertThat(res).valueByXPath("/validation/xml/summary/@status") + .asString() + .isEqualTo("valid"); + /** end of errors due to version mismatch*/ + + + assertThat(res).valueByXPath("count(//notice)") + .asInt() + .isEqualTo(0); + } + + public void testMinimumProfileValidityCreditNote() { + File tempFile = new File("../library/target/testout-Minimum-CN.pdf"); ZUGFeRDValidator zfv = new ZUGFeRDValidator(); String res = zfv.validate(tempFile.getAbsolutePath()); From 81328c939b465cff93ce0844e0cb834fafde58c8 Mon Sep 17 00:00:00 2001 From: langfr Date: Wed, 21 Aug 2024 00:01:22 +0100 Subject: [PATCH 02/33] Fix ClassCastException in CLI (Main.java). --- .../java/org/mustangproject/commandline/Main.java | 11 ++++++++--- .../ZUGFeRD/ZUGFeRDExporterFromPDFA.java | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java b/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java index c7ac50af..1bf377c5 100755 --- a/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java +++ b/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java @@ -722,9 +722,6 @@ public class Main { ((ZUGFeRDExporterFromPDFA) ze).ignorePDFAErrors(); } } - for (FileAttachment attachment : attachments) { - ((ZUGFeRDExporterFromA3) ze).attachFile(attachment.getFilename(), attachment.getData(), attachment.getMimetype(), attachment.getRelation()); - } ze.load(pdfName); ze.setProducer("Mustang-cli") @@ -737,6 +734,14 @@ public class Main { ze.setXML(Files.readAllBytes(Paths.get(xmlName))); + for (FileAttachment attachment : attachments) { + if (((ZUGFeRDExporterFromPDFA) ze).getExporter() instanceof ZUGFeRDExporterFromA3 ) { + ((ZUGFeRDExporterFromA3) ((ZUGFeRDExporterFromPDFA) ze).getExporter()).attachFile(attachment.getFilename(), attachment.getData(), attachment.getMimetype(), attachment.getRelation()); + } else { + System.err.println("IZUGFeRDExporter ze is not of type 'ZUGFeRDExporterFromA3'"); + } + } + ze.export(outName); System.out.println("Written to " + outName); diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromPDFA.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromPDFA.java index 9a4f2c2f..d6d4fa55 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromPDFA.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromPDFA.java @@ -72,7 +72,7 @@ public class ZUGFeRDExporterFromPDFA implements IZUGFeRDExporter { } - protected IZUGFeRDExporter getExporter() { + public IZUGFeRDExporter getExporter() { if (theExporter==null) { throw new RuntimeException("In ZUGFeRDExporterFromPDFA, source must always be loaded before other operations are performed."); } From d0f49749e0803bb785e6abcb3101fedd6ca0536b Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 21 Aug 2024 06:50:36 +0200 Subject: [PATCH 03/33] closees #452 --- History.md | 6 +- .../ZUGFeRD/ZUGFeRDExporterFromA3.java | 98 +++++++++---------- 2 files changed, 51 insertions(+), 53 deletions(-) diff --git a/History.md b/History.md index 36878c7e..f4f94f14 100644 --- a/History.md +++ b/History.md @@ -1,5 +1,6 @@ - #420 - #441 +- #431 support reasoncodes - Enhance Charges/Allowances with reasonCode. #432 - Fix build warnings from editing and building. #415 - ZUGFeRDVisualizer.toPDF(): generate PDF/A-3b. #400 @@ -7,8 +8,9 @@ and XML (zii.getFileAttachmentsXML) - #436 and #370. (langfr) - refactor(ZUGFeRDVisualizer): improve PDF visualization performance #438 - - +- trying to default product on empty description +- #452 +- 2.12.0 ======= 2024-07-20 diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3.java index 0dd548e5..dea69a6f 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3.java @@ -85,6 +85,7 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte this.ignorePDFAErrors = true; return this; } + protected PDFAConformanceLevel conformanceLevel = PDFAConformanceLevel.UNICODE; protected ArrayList fileAttachments = new ArrayList<>(); @@ -223,17 +224,16 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte * @return the filename of the file to be embedded */ public String getFilenameForVersion(int ver, Profile profile) { + if (profile.getName().equals("XRECHNUNG")) { + return "xrechnung.xml"; + } if (isFacturX) { return "factur-x.xml"; } else { if (ver == 1) { return "ZUGFeRD-invoice.xml"; } else { - if (profile.getName().equals("XRECHNUNG")) { - return "xrechnung.xml"; - } else { - return "zugferd-invoice.xml"; - } + return "zugferd-invoice.xml"; } } } @@ -247,7 +247,7 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte * @deprecated It's now the default anyway */ @Deprecated - public ZUGFeRDExporterFromA3 setFacturX() { + public ZUGFeRDExporterFromA3 setFacturX() { isFacturX = true; return this; } @@ -260,10 +260,9 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte * * @param XRechnungVersion the XRechnung version */ - public void setXRechnungSpecificVersion(String XRechnungVersion) - { - this.XRechnungVersion = XRechnungVersion; - } + public void setXRechnungSpecificVersion(String XRechnungVersion) { + this.XRechnungVersion = XRechnungVersion; + } /*** @@ -308,13 +307,13 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte * @throws IOException if anything is wrong in the target location */ @Override - public void export(String ZUGFeRDfilename) throws IOException { + public void export(String ZUGFeRDfilename) throws IOException { if (!documentPrepared) { prepareDocument(); } if ((!fileAttached) && (attachZUGFeRDHeaders)) { throw new IOException( - "File must be attached (usually with setTransaction) before perfoming this operation"); + "File must be attached (usually with setTransaction) before perfoming this operation"); } doc.save(ZUGFeRDfilename, CompressParameters.NO_COMPRESSION); if (!disableAutoClose) { @@ -336,13 +335,13 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte * @throws IOException if anything is wrong in the OutputStream */ @Override - public void export(OutputStream output) throws IOException { + public void export(OutputStream output) throws IOException { if (!documentPrepared) { prepareDocument(); } if ((!fileAttached) && (attachZUGFeRDHeaders)) { throw new IOException( - "File must be attached (usually with setTransaction) before perfoming this operation"); + "File must be attached (usually with setTransaction) before perfoming this operation"); } doc.save(output, CompressParameters.NO_COMPRESSION); if (!disableAutoClose) { @@ -440,7 +439,7 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte cosArray.add(fs); doc.getDocumentCatalog().getCOSObject().setItem("AF", cosArray); } else if ((AFEntry instanceof COSObject) && - ((COSObject) AFEntry).getObject() instanceof COSArray) { + ((COSObject) AFEntry).getObject() instanceof COSArray) { COSArray cosArray = (COSArray) ((COSObject) AFEntry).getObject(); cosArray.add(fs); } else { @@ -534,19 +533,18 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte */ protected void addXMP(XMPMetadata metadata) { - String metaDataVersion = null; // default will be used + String metaDataVersion = null; // default will be used - // The XRechnung version may be settable from outside. - if ((this.XRechnungVersion != null) && (this.profile != null) && - this.profile.getName().equalsIgnoreCase(Profiles.getByName("XRECHNUNG").getName())) - { - metaDataVersion = this.XRechnungVersion; - } + // The XRechnung version may be settable from outside. + if ((this.XRechnungVersion != null) && (this.profile != null) && + this.profile.getName().equalsIgnoreCase(Profiles.getByName("XRECHNUNG").getName())) { + metaDataVersion = this.XRechnungVersion; + } if (attachZUGFeRDHeaders) { XMPSchemaZugferd zf = new XMPSchemaZugferd(metadata, ZFVersion, isFacturX, xmlProvider.getProfile(), - getNamespaceForVersion(ZFVersion), getPrefixForVersion(ZFVersion), - getFilenameForVersion(ZFVersion, xmlProvider.getProfile()), metaDataVersion); + getNamespaceForVersion(ZFVersion), getPrefixForVersion(ZFVersion), + getFilenameForVersion(ZFVersion, xmlProvider.getProfile()), metaDataVersion); metadata.addSchema(zf); } @@ -557,8 +555,7 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte } private void removeCidSet(PDDocument doc) - throws IOException - { + throws IOException { // https://github.com/ZUGFeRD/mustangproject/issues/249 COSName cidSet = COSName.getPDFName("CIDSet"); @@ -577,8 +574,8 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte PDType0Font typedFont = (PDType0Font) pdFont; if (typedFont.getDescendantFont() instanceof PDCIDFontType2) { - @SuppressWarnings ("unused") - PDCIDFontType2 f = (PDCIDFontType2) typedFont.getDescendantFont(); + @SuppressWarnings("unused") + PDCIDFontType2 f = (PDCIDFontType2) typedFont.getDescendantFont(); PDFontDescriptor fontDescriptor = pdFont.getFontDescriptor(); fontDescriptor.getCOSObject().removeItem(cidSet); @@ -637,7 +634,7 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte * @throws IOException if anything is wrong with already loaded PDF */ @Override - public IExporter setTransaction(IExportableTransaction trans) throws IOException { + public IExporter setTransaction(IExportableTransaction trans) throws IOException { this.trans = trans; return prepare(); } @@ -647,22 +644,20 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte xmlProvider.generateXML(trans); String filename = getFilenameForVersion(ZFVersion, xmlProvider.getProfile()); - String relationship = "Alternative"; - // ZUGFeRD 2.1.1 Technical Supplement | Part A | 2.2.2. Data Relationship - // See documentation ZUGFeRD211_EN/Documentation/ZUGFeRD-2.1.1 - Specification_TA_Part-A.pdf - // https://www.ferd-net.de/standards/zugferd-2.1.1/index.html - if ((this.profile != null) && (ZFVersion >= 2)) - { - if (this.profile.getName().equalsIgnoreCase(Profiles.getByName("MINIMUM").getName()) || - this.profile.getName().equalsIgnoreCase(Profiles.getByName("BASICWL").getName())) - { - relationship = "Data"; - } - } + String relationship = "Alternative"; + // ZUGFeRD 2.1.1 Technical Supplement | Part A | 2.2.2. Data Relationship + // See documentation ZUGFeRD211_EN/Documentation/ZUGFeRD-2.1.1 - Specification_TA_Part-A.pdf + // https://www.ferd-net.de/standards/zugferd-2.1.1/index.html + if ((this.profile != null) && (ZFVersion >= 2)) { + if (this.profile.getName().equalsIgnoreCase(Profiles.getByName("MINIMUM").getName()) || + this.profile.getName().equalsIgnoreCase(Profiles.getByName("BASICWL").getName())) { + relationship = "Data"; + } + } PDFAttachGenericFile(doc, filename, relationship, - "Invoice metadata conforming to ZUGFeRD standard (http://www.ferd-net.de/front_content.php?idcat=231&lang=4)", - "text/xml", xmlProvider.getXML()); + "Invoice metadata conforming to ZUGFeRD standard (http://www.ferd-net.de/front_content.php?idcat=231&lang=4)", + "text/xml", xmlProvider.getXML()); for (FileAttachment attachment : fileAttachments) { PDFAttachGenericFile(doc, attachment.getFilename(), attachment.getRelation(), attachment.getDescription(), attachment.getMimetype(), attachment.getData()); @@ -674,12 +669,12 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte /** * Reads the XMPMetadata from the PDDocument, if it exists. * Otherwise creates XMPMetadata. + * * @return the finished XMPMetadata object * @throws IOException when e.g. XmpParsingException */ protected XMPMetadata getXmpMetadata() - throws IOException - { + throws IOException { PDMetadata meta = doc.getDocumentCatalog().getMetadata(); if ((meta != null) && (meta.getLength() > 0)) { try { @@ -701,6 +696,7 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte /** * Sets the producer if the overwrite flag is set or the producer is not already set. * Sets the PDFVersion to 1.4 if the field is empty. + * * @param xmp the metadata as XML */ protected void writeAdobePDFSchema(XMPMetadata xmp) { @@ -823,11 +819,11 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte /** * Adds an OutputIntent and the sRGB color profile if no OutputIntent exist + * * @throws IOException if the ICC file cannot be read or attached to doc */ protected void addSRGBOutputIntend() - throws IOException - { + throws IOException { if (!doc.getDocumentCatalog().getOutputIntents().isEmpty()) { return; } @@ -892,12 +888,12 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte public ZUGFeRDExporterFromA3 setZUGFeRDVersion(EStandard est, int version) { this.ZFVersion = version; - if ((version<1) || (version>2)) { + if ((version < 1) || (version > 2)) { throw new IllegalArgumentException("Version not supported"); } - int generation=version; - if ((est==EStandard.facturx)&&(version==1)) { - generation=2; + int generation = version; + if ((est == EStandard.facturx) && (version == 1)) { + generation = 2; } if (generation == 1) { ZUGFeRD1PullProvider z1p = new ZUGFeRD1PullProvider(); From a07cef4fd911dd3580bf19fff8c007f802c138f2 Mon Sep 17 00:00:00 2001 From: Mauritz Funke Date: Wed, 21 Aug 2024 14:45:10 +0200 Subject: [PATCH 04/33] Adds a function to get the total amount of a charge without specifying an item --- .../src/main/java/org/mustangproject/Charge.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Charge.java b/library/src/main/java/org/mustangproject/Charge.java index c1810c57..a16f5e66 100644 --- a/library/src/main/java/org/mustangproject/Charge.java +++ b/library/src/main/java/org/mustangproject/Charge.java @@ -116,12 +116,20 @@ public class Charge implements IZUGFeRDAllowanceCharge { @Override public BigDecimal getTotalAmount(IAbsoluteValueProvider currentItem) { + if (percent!=null) { + return currentItem.getValue().multiply(getPercent().divide(new BigDecimal(100))); + } else if(totalAmount != null) { + return totalAmount; + } else { + throw new RuntimeException("percent must be set"); + } + } + + public BigDecimal getTotalAmount() { if (totalAmount!=null) { return totalAmount; - } else if (percent!=null) { - return currentItem.getValue().multiply(getPercent().divide(new BigDecimal(100))); } else { - throw new RuntimeException("Either totalAmount or percent must be set"); + throw new RuntimeException("totalAmount must be set"); } } From 2dacde9cfbf6e4bdab4273a8aa7b8983ddc00311 Mon Sep 17 00:00:00 2001 From: Mauritz Funke Date: Wed, 21 Aug 2024 15:00:21 +0200 Subject: [PATCH 05/33] Revert "Adds a function to get the total amount of a charge without specifying an item" This reverts commit a07cef4fd911dd3580bf19fff8c007f802c138f2. --- .../src/main/java/org/mustangproject/Charge.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Charge.java b/library/src/main/java/org/mustangproject/Charge.java index a16f5e66..c1810c57 100644 --- a/library/src/main/java/org/mustangproject/Charge.java +++ b/library/src/main/java/org/mustangproject/Charge.java @@ -116,20 +116,12 @@ public class Charge implements IZUGFeRDAllowanceCharge { @Override public BigDecimal getTotalAmount(IAbsoluteValueProvider currentItem) { - if (percent!=null) { - return currentItem.getValue().multiply(getPercent().divide(new BigDecimal(100))); - } else if(totalAmount != null) { - return totalAmount; - } else { - throw new RuntimeException("percent must be set"); - } - } - - public BigDecimal getTotalAmount() { if (totalAmount!=null) { return totalAmount; + } else if (percent!=null) { + return currentItem.getValue().multiply(getPercent().divide(new BigDecimal(100))); } else { - throw new RuntimeException("totalAmount must be set"); + throw new RuntimeException("Either totalAmount or percent must be set"); } } From ae07c77c43585a165054a55a28aeb8532425a962 Mon Sep 17 00:00:00 2001 From: Mauritz Funke Date: Wed, 21 Aug 2024 15:02:56 +0200 Subject: [PATCH 06/33] Adds a function to get the total amount of a charge without specifying an item --- .../src/main/java/org/mustangproject/Charge.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Charge.java b/library/src/main/java/org/mustangproject/Charge.java index c1810c57..a16f5e66 100644 --- a/library/src/main/java/org/mustangproject/Charge.java +++ b/library/src/main/java/org/mustangproject/Charge.java @@ -116,12 +116,20 @@ public class Charge implements IZUGFeRDAllowanceCharge { @Override public BigDecimal getTotalAmount(IAbsoluteValueProvider currentItem) { + if (percent!=null) { + return currentItem.getValue().multiply(getPercent().divide(new BigDecimal(100))); + } else if(totalAmount != null) { + return totalAmount; + } else { + throw new RuntimeException("percent must be set"); + } + } + + public BigDecimal getTotalAmount() { if (totalAmount!=null) { return totalAmount; - } else if (percent!=null) { - return currentItem.getValue().multiply(getPercent().divide(new BigDecimal(100))); } else { - throw new RuntimeException("Either totalAmount or percent must be set"); + throw new RuntimeException("totalAmount must be set"); } } From 3466f6e3db8caaba5626857c269ce50b03489f95 Mon Sep 17 00:00:00 2001 From: gundermann Date: Thu, 22 Aug 2024 10:38:03 +0200 Subject: [PATCH 07/33] changed additional references by line from String to List and implemented it on Item --- .../main/java/org/mustangproject/Item.java | 23 +++++++++++++++++++ .../ZUGFeRD/IZUGFeRDExportableItem.java | 6 ++--- .../ZUGFeRD/ZUGFeRD1PullProvider.java | 4 ++-- .../ZUGFeRD/ZUGFeRD2PullProvider.java | 11 ++++++--- 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Item.java b/library/src/main/java/org/mustangproject/Item.java index 321b4723..0dc76b83 100644 --- a/library/src/main/java/org/mustangproject/Item.java +++ b/library/src/main/java/org/mustangproject/Item.java @@ -465,6 +465,29 @@ public class Item implements IZUGFeRDExportableItem { return referencedDocuments.toArray(new IReferencedDocument[0]); } + + /*** + * adds item level references along with their typecodes and issuerassignedIDs (contract ID, cost centre, ...) + * @param doc the ReferencedDocument to add + * @return fluent setter + */ + public Item addAdditionalReference(ReferencedDocument doc) { + if (referencedDocuments == null) { + referencedDocuments = new ArrayList<>(); + } + referencedDocuments.add(doc); + return this; + } + + @Override + public IReferencedDocument[] getAdditionalReferences() { + if (referencedDocuments == null) { + return null; + } + return referencedDocuments.toArray(new IReferencedDocument[0]); + } + + /*** * specify a item level delivery period * (apart from the document level delivery period, and the document level diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java index f6e03242..3c20e519 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java @@ -91,10 +91,10 @@ public interface IZUGFeRDExportableItem extends IAbsoluteValueProvider{ } /*** - * the ID of an additionally referenced document for this item - * @return the id as string + * allows to specify multiple references (billing information) + * @return the referenced documents */ - default String getAdditionalReferencedDocumentID() { + default IReferencedDocument[] getAdditionalReferences() { return null; } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java index ba43dd94..0b028806 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java @@ -387,8 +387,8 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider { + "" + currencyFormat(lc.getItemTotalNetAmount()) + "" + ""; - if (currentItem.getAdditionalReferencedDocumentID() != null) { - xml += "" + currentItem.getAdditionalReferencedDocumentID() + "130"; + if (currentItem.getAdditionalReferences() != null) { + xml += "" + currentItem.getAdditionalReferences()[0].getIssuerAssignedID() + "130"; } xml += "" diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index 64bfb738..bbadfdae 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -503,9 +503,14 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { + "" + currencyFormat(lc.getItemTotalNetAmount()) + "" // currencyID=\"EUR\" + ""; - if (currentItem.getAdditionalReferencedDocumentID() != null) { - xml += "" + currentItem.getAdditionalReferencedDocumentID() + "130"; - + if (currentItem.getAdditionalReferences() != null) { + for (final IReferencedDocument currentReference : currentItem.getAdditionalReferences()) { + xml += "" + + "" + XMLTools.encodeXML(currentReference.getIssuerAssignedID()) + "" + + "130" + + "" + XMLTools.encodeXML(currentReference.getReferenceTypeCode()) + "" + + ""; + } } xml += "" + ""; From 44d63a075ee00b46ee7fb44c500cf605fe978fe2 Mon Sep 17 00:00:00 2001 From: MellowGiant Date: Thu, 22 Aug 2024 11:27:42 +0200 Subject: [PATCH 08/33] changed additional references by line from String to List and implemented it on Item --- .../main/java/org/mustangproject/Item.java | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Item.java b/library/src/main/java/org/mustangproject/Item.java index 0dc76b83..cb1c83fa 100644 --- a/library/src/main/java/org/mustangproject/Item.java +++ b/library/src/main/java/org/mustangproject/Item.java @@ -26,6 +26,7 @@ public class Item implements IZUGFeRDExportableItem { protected Product product; protected ArrayList notes = null; protected ArrayList referencedDocuments = null; + protected ArrayList additionalReference = null; protected ArrayList Allowances = new ArrayList<>(), Charges = new ArrayList<>(); @@ -248,6 +249,35 @@ public class Item implements IZUGFeRDExportableItem { } } } + + if (tradeSettlementName.equals("AdditionalReferencedDocument")) { + String IssuerAssignedID = ""; + String TypeCode = ""; + String ReferenceTypeCode = ""; + + NodeList refDocChilds = tradeSettlementChilds.item(tradeSettlementChildIndex).getChildNodes(); + for (int refDocIndex = 0; refDocIndex < refDocChilds.getLength(); refDocIndex++) { + String localName = refDocChilds.item(refDocIndex).getLocalName(); + if ((localName != null) && (localName.equals("IssuerAssignedID"))) { + IssuerAssignedID = refDocChilds.item(refDocIndex).getTextContent(); + } + if ((localName != null) && (localName.equals("TypeCode"))) { + TypeCode = refDocChilds.item(refDocIndex).getTextContent(); + } + if ((localName != null) && (localName.equals("ReferenceTypeCode"))) { + ReferenceTypeCode = refDocChilds.item(refDocIndex).getTextContent(); + } + } + + ReferencedDocument rd = new ReferencedDocument(IssuerAssignedID, TypeCode, + ReferenceTypeCode); + if (rdocs == null) { + rdocs = new ArrayList<>(); + } + rdocs.add(rd); + + } + } } } @@ -472,19 +502,19 @@ public class Item implements IZUGFeRDExportableItem { * @return fluent setter */ public Item addAdditionalReference(ReferencedDocument doc) { - if (referencedDocuments == null) { - referencedDocuments = new ArrayList<>(); + if (additionalReference == null) { + additionalReference = new ArrayList<>(); } - referencedDocuments.add(doc); + additionalReference.add(doc); return this; } @Override public IReferencedDocument[] getAdditionalReferences() { - if (referencedDocuments == null) { + if (additionalReference == null) { return null; } - return referencedDocuments.toArray(new IReferencedDocument[0]); + return additionalReference.toArray(new IReferencedDocument[0]); } From 40f35d8764e3286060fb142e1f2ae59ffc9ff806 Mon Sep 17 00:00:00 2001 From: MellowGiant Date: Thu, 22 Aug 2024 11:40:22 +0200 Subject: [PATCH 09/33] changed additional references by line from String to List and implemented it on Item --- library/src/main/java/org/mustangproject/Item.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Item.java b/library/src/main/java/org/mustangproject/Item.java index cb1c83fa..11d78f2f 100644 --- a/library/src/main/java/org/mustangproject/Item.java +++ b/library/src/main/java/org/mustangproject/Item.java @@ -64,6 +64,7 @@ public class Item implements IZUGFeRDExportableItem { String referencedLineID = null; ArrayList rdocs = null; + ArrayList additionalReferences = null; // nodes.item(i).getTextContent())) { @@ -271,10 +272,10 @@ public class Item implements IZUGFeRDExportableItem { ReferencedDocument rd = new ReferencedDocument(IssuerAssignedID, TypeCode, ReferenceTypeCode); - if (rdocs == null) { - rdocs = new ArrayList<>(); + if (additionalReferences == null) { + additionalReferences = new ArrayList<>(); } - rdocs.add(rd); + additionalReferences.add(rd); } @@ -304,6 +305,11 @@ public class Item implements IZUGFeRDExportableItem { addReferencedDocument(rdoc); } } + if (additionalReferences != null) { + for (ReferencedDocument rdoc : additionalReferences) { + addAdditionalReference(rdoc); + } + } addReferencedLineID( referencedLineID ); } From 0b43024e8fda0eace98ff69622678a549a788fd8 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Tue, 27 Aug 2024 14:28:32 +0200 Subject: [PATCH 10/33] closes #455 --- History.md | 2 ++ .../java/org/mustangproject/BankDetails.java | 8 +++++ .../main/java/org/mustangproject/Product.java | 3 +- .../ZUGFeRD/IZUGFeRDTradeSettlement.java | 4 +++ .../IZUGFeRDTradeSettlementPayment.java | 3 ++ .../ZUGFeRD/ZUGFeRDVisualizer.java | 32 +++++++++++-------- .../ZUGFeRD/DeSerializationTest.java | 2 +- 7 files changed, 38 insertions(+), 16 deletions(-) diff --git a/History.md b/History.md index f4f94f14..4e609a73 100644 --- a/History.md +++ b/History.md @@ -10,6 +10,8 @@ - refactor(ZUGFeRDVisualizer): improve PDF visualization performance #438 - trying to default product on empty description - #452 +- #447 legalorganisation tradingbusinessname +- #455 - 2.12.0 ======= diff --git a/library/src/main/java/org/mustangproject/BankDetails.java b/library/src/main/java/org/mustangproject/BankDetails.java index b72817ca..c6edcc86 100644 --- a/library/src/main/java/org/mustangproject/BankDetails.java +++ b/library/src/main/java/org/mustangproject/BankDetails.java @@ -1,5 +1,7 @@ package org.mustangproject; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import org.mustangproject.ZUGFeRD.IZUGFeRDTradeSettlementPayment; /** @@ -18,6 +20,10 @@ public class BankDetails implements IZUGFeRDTradeSettlementPayment { * the "name" of the bank account (holder) */ protected String accountName=null; + /*** + * bean constructor + */ + public BankDetails() { } /*** * constructor for IBAN only :-) @@ -80,12 +86,14 @@ public class BankDetails implements IZUGFeRDTradeSettlementPayment { * */ @Override @Deprecated + @JsonIgnore public String getOwnBIC() { return getBIC(); } @Override @Deprecated + @JsonIgnore public String getOwnIBAN() { return getIBAN(); } diff --git a/library/src/main/java/org/mustangproject/Product.java b/library/src/main/java/org/mustangproject/Product.java index b90a70cd..df5e329f 100644 --- a/library/src/main/java/org/mustangproject/Product.java +++ b/library/src/main/java/org/mustangproject/Product.java @@ -11,7 +11,8 @@ import java.util.HashMap; */ @JsonIgnoreProperties(ignoreUnknown = true) public class Product implements IZUGFeRDExportableProduct { - protected String unit, name, description, sellerAssignedID, buyerAssignedID; + protected String unit, name, sellerAssignedID, buyerAssignedID; + protected String description=""; protected BigDecimal VATPercent; protected boolean isReverseCharge = false; protected boolean isIntraCommunitySupply = false; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlement.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlement.java index 038c5d36..3dd18d74 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlement.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlement.java @@ -18,12 +18,15 @@ *********************************************************************** */ package org.mustangproject.ZUGFeRD; +import com.fasterxml.jackson.annotation.JsonIgnore; + public interface IZUGFeRDTradeSettlement { /*** * gets the applicableHeaderTradeSettlement * @return zf2 xml */ + @JsonIgnore String getSettlementXML(); @@ -31,6 +34,7 @@ public interface IZUGFeRDTradeSettlement { * gets the applicableHeaderTradePayment * @return zf2 xml */ + @JsonIgnore default String getPaymentXML() { return null; } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java index 2247ae06..9731a9a5 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java @@ -18,6 +18,7 @@ *********************************************************************** */ package org.mustangproject.ZUGFeRD; +import com.fasterxml.jackson.annotation.JsonIgnore; import org.mustangproject.XMLTools; public interface IZUGFeRDTradeSettlementPayment extends IZUGFeRDTradeSettlement { @@ -27,6 +28,7 @@ public interface IZUGFeRDTradeSettlementPayment extends IZUGFeRDTradeSettlement * * @return payment information text */ + @JsonIgnore default String getOwnPaymentInfoText() { return null; } @@ -59,6 +61,7 @@ public interface IZUGFeRDTradeSettlementPayment extends IZUGFeRDTradeSettlement @Override + @JsonIgnore default String getSettlementXML() { String accountNameStr=""; if (getAccountName()!=null) { diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java index 185e8ba8..5223b31b 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java @@ -96,6 +96,7 @@ public class ZUGFeRDVisualizer { private TransformerFactory mFactory = null; private Templates mXsltXRTemplate = null; private Templates mXsltUBLTemplate = null; + private Templates mXsltCIOTemplate = null; private Templates mXsltHTMLTemplate = null; private Templates mXsltPDFTemplate = null; private Templates mXsltZF1HTMLTemplate = null; @@ -151,6 +152,8 @@ public class ZUGFeRDVisualizer { String zf2Signature = "CrossIndustryInvoice"; String ublSignature = "Invoice"; String ublCreditNoteSignature = "CreditNote"; + String cioSignature = "SCRDMCCBDACIOMessageStructure" + + ""; boolean doPostProcessing = false; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); @@ -173,6 +176,10 @@ public class ZUGFeRDVisualizer { //zf2 or fx applyUBLCreditNote2XSLT(fis, iaos); doPostProcessing = true; + } else if (root.getLocalName().equals(cioSignature)) { + //zf2 or fx + applyCIO2XSLT(fis, iaos); + doPostProcessing = true; } else { throw new IllegalArgumentException("File does not look like CII or UBL"); } @@ -277,20 +284,6 @@ public class ZUGFeRDVisualizer { } catch (FileNotFoundException | TransformerException e) { LOGGER.error("Failed to apply FOP", e); } - /* - FopConfParser parser = null; - try { - //parsing configuration - parser = new FopConfParser(CLASS_LOADER.getResourceAsStream("fop-config.xconf"), new URI("file:///")); - - } catch (SAXException e) { - throw new UncheckedIOException(new IOException(e)); - } catch (IOException e) { - throw new UncheckedIOException(e); - } catch (URISyntaxException e) { - Logger.getLogger(ZUGFeRDVisualizer.class.getName()).log(Level.SEVERE, null, e); - }*/ -// FopFactoryBuilder builder = parser.getFopFactoryBuilder(); DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder(); Configuration cfg = null; @@ -351,6 +344,17 @@ public class ZUGFeRDVisualizer { transformer.transform(new StreamSource(xmlFile), new StreamResult(HTMLOutstream)); } + protected void applyCIO2XSLT(final InputStream xmlFile, final OutputStream HTMLOutstream) + throws TransformerException { + if (mXsltCIOTemplate == null) { + mXsltCIOTemplate = mFactory.newTemplates( + new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/cio-xr.xsl"))); + } + Transformer transformer = mXsltCIOTemplate.newTransformer(); + + transformer.transform(new StreamSource(xmlFile), new StreamResult(HTMLOutstream)); + } + protected void applyUBL2XSLT(final InputStream xmlFile, final OutputStream HTMLOutstream) throws TransformerException { if (mXsltUBLTemplate == null) { diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java index 4b9bbb34..d6a425d4 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java @@ -36,7 +36,7 @@ public class DeSerializationTest extends TestCase { public void testJackson() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); - Invoice i = new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty("some org", "teststr", "55232", "teststadt", "DE").addTaxID("taxID")).setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE4711").setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE"))).setNumber("0185").addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal("1"), new BigDecimal(1.0))); + Invoice i = new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty("some org", "teststr", "55232", "teststadt", "DE").addTaxID("taxID").addBankDetails(new BankDetails("DE3600000123456", "ABCDEFG1001").setAccountName("Donald Duck"))).setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE4711").setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE"))).setNumber("0185").addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal("1"), new BigDecimal(1.0))); String jsonArray = mapper.writeValueAsString(i); // [{"stringValue":"a","intValue":1,"booleanValue":true}, From 53b9f0ad06d7e240e310b281b13c3686a69ba294 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Tue, 27 Aug 2024 14:52:00 +0200 Subject: [PATCH 11/33] updated history --- History.md | 23 +- .../src/main/resources/stylesheets/cio-xr.xsl | 2225 +++++++++++++++++ 2 files changed, 2239 insertions(+), 9 deletions(-) create mode 100644 library/src/main/resources/stylesheets/cio-xr.xsl diff --git a/History.md b/History.md index 4e609a73..55f0a4e2 100644 --- a/History.md +++ b/History.md @@ -1,18 +1,23 @@ -- #420 -- #441 -- #431 support reasoncodes +2.13.0 +======= +2024-08-27 + +- Item Attributes and Country of Origin missing on Product. #420 +- Avoid NullPointerException if dueDate is not set. #441 +- support reasoncodes #431 - Enhance Charges/Allowances with reasonCode. #432 - Fix build warnings from editing and building. #415 - ZUGFeRDVisualizer.toPDF(): generate PDF/A-3b. #400 - allow access to invoice attachments via ZUGFeRDInvoiceImporter zii.getFileAttachmentsPDF() and XML (zii.getFileAttachmentsXML) -- #436 and #370. (langfr) +- No interface for required field CreditorReferenceID #436 and +- X-Rechnung direct-debit missing mandatory field BT-90 #370. (langfr) - refactor(ZUGFeRDVisualizer): improve PDF visualization performance #438 -- trying to default product on empty description -- #452 -- #447 legalorganisation tradingbusinessname -- #455 -- +- product creation without description now possible empty description +- filename of embedded file was not xrechnung.xml when using profile xrechnung #452 +- allow legalorganisation to have a tradingbusinessname #447 +- JSon deserialization does not work with BankDetails #455 + 2.12.0 ======= 2024-07-20 diff --git a/library/src/main/resources/stylesheets/cio-xr.xsl b/library/src/main/resources/stylesheets/cio-xr.xsl new file mode 100644 index 00000000..415e2dfe --- /dev/null +++ b/library/src/main/resources/stylesheets/cio-xr.xsl @@ -0,0 +1,2225 @@ + + + + + + Author: KoSIT Bremen (kosit@finanzen.bremen.de) + Fassung vom: 2020-06-30+02:00 + Überführt eine zur EN 16931 konforme elektronische Rechnung in der konkreten Syntax UNCEFACT.CII.D16B in eine Instanz gemäß des Schemas für den Namensraum urn:ce.eu:en16931:2017:xoev-de:kosit:standard:xrechnung-1. + Das Skript setzt voraus, dass das zu verarbeitende Dokument valide bzgl. des XML Schemas und der Schematron-Regeln der Quelle ist. Für nicht valide Dokumente ist das Ergebnis nicht definiert. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ILLEGAL DATE FORMAT: <para>Mit diesem Datentyp wird ein kalendarisches Datum abgebildet, wie es in der ISO 8601 Spezifikation <quote>Calendar date complete representation</quote> beschrieben ist (siehe ISO 8601:2004, Abschnitt 5.2.1.1). Das Datum beinhaltet keine Zeitangabe. Das konkret zu verwendende Format ist abhängig von der genutzten Syntax.</para> +<para>Der Datentyp basiert auf dem Typ <quote>Date Time. Type</quote>, wie in ISO 15000-5:2014 Anhang B definiert.</para> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Liefert einen XPath-Pfad, welches $n eindeutig identifiziert. + + + + + + + + + + + Liefert einen XPath-Pfad, welches $n eindeutig identifiziert. + + + + + / + + + [ + + ] + + + + /@ + + + From a69b1ea60d8e405681a9a242d61660c5061288a6 Mon Sep 17 00:00:00 2001 From: MellowGiant Date: Tue, 27 Aug 2024 15:28:18 +0200 Subject: [PATCH 12/33] getAdditionalReferencedDocumentID() reinserted and marked as deprecated --- .../mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java | 10 ++++++++++ .../mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java | 3 ++- .../mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java index 3c20e519..e5e25cae 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java @@ -90,6 +90,16 @@ public interface IZUGFeRDExportableItem extends IAbsoluteValueProvider{ return BigDecimal.ONE.setScale(4); } + /*** + * the ID of an additionally referenced document for this item + * @deprecated use {@link #getAdditionalReferences()} instead. + * @return the id as string + */ + @Deprecated + default String getAdditionalReferencedDocumentID() { + return null; + } + /*** * allows to specify multiple references (billing information) * @return the referenced documents diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java index 0b028806..b98abebc 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java @@ -389,7 +389,8 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider { + ""; if (currentItem.getAdditionalReferences() != null) { xml += "" + currentItem.getAdditionalReferences()[0].getIssuerAssignedID() + "130"; - + } else if (currentItem.getAdditionalReferencedDocumentID() != null) { + xml += "" + currentItem.getAdditionalReferencedDocumentID() + "130"; } xml += "" + ""; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index bbadfdae..eaefecaa 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -511,6 +511,8 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { "" + XMLTools.encodeXML(currentReference.getReferenceTypeCode()) + "" + ""; } + } else if (currentItem.getAdditionalReferencedDocumentID() != null) { + xml += "" + currentItem.getAdditionalReferencedDocumentID() + "130"; } xml += "" + ""; From 136c8a8865795adf47195cff8b5de539f3a8b1ea Mon Sep 17 00:00:00 2001 From: MellowGiant Date: Tue, 27 Aug 2024 15:33:19 +0200 Subject: [PATCH 13/33] variable name changed from "additionalReferences" to "addRefs" to avoid confusion with "additionalReference" --- library/src/main/java/org/mustangproject/Item.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Item.java b/library/src/main/java/org/mustangproject/Item.java index 11d78f2f..d4d417c6 100644 --- a/library/src/main/java/org/mustangproject/Item.java +++ b/library/src/main/java/org/mustangproject/Item.java @@ -64,7 +64,7 @@ public class Item implements IZUGFeRDExportableItem { String referencedLineID = null; ArrayList rdocs = null; - ArrayList additionalReferences = null; + ArrayList addRefs = null; // nodes.item(i).getTextContent())) { @@ -272,10 +272,10 @@ public class Item implements IZUGFeRDExportableItem { ReferencedDocument rd = new ReferencedDocument(IssuerAssignedID, TypeCode, ReferenceTypeCode); - if (additionalReferences == null) { - additionalReferences = new ArrayList<>(); + if (addRefs == null) { + addRefs = new ArrayList<>(); } - additionalReferences.add(rd); + addRefs.add(rd); } @@ -305,8 +305,8 @@ public class Item implements IZUGFeRDExportableItem { addReferencedDocument(rdoc); } } - if (additionalReferences != null) { - for (ReferencedDocument rdoc : additionalReferences) { + if (addRefs != null) { + for (ReferencedDocument rdoc : addRefs) { addAdditionalReference(rdoc); } } From 5a963a7ecf4c0437077ced14b3ac6bb37b128fcd Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 13:56:45 +0200 Subject: [PATCH 14/33] #451 corrected so that file attachments are also possible if source is a PDF/A-1 (and destination PDF/A-3) --- History.md | 5 ++++- .../java/org/mustangproject/commandline/Main.java | 6 +----- .../org/mustangproject/ZUGFeRD/IZUGFeRDExporter.java | 3 +++ .../ZUGFeRD/ZUGFeRDExporterFromPDFA.java | 11 +++++++++++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/History.md b/History.md index 55f0a4e2..1c04da09 100644 --- a/History.md +++ b/History.md @@ -17,7 +17,10 @@ - filename of embedded file was not xrechnung.xml when using profile xrechnung #452 - allow legalorganisation to have a tradingbusinessname #447 - JSon deserialization does not work with BankDetails #455 - +- Fix ClassCastException in CLI (Main.java). #451 +- Re-Formatted and re-organized POMs #446 +- changed additional references by line from String to List and implemented it on Item #454 + 2.12.0 ======= 2024-07-20 diff --git a/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java b/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java index 1bf377c5..e33b5879 100755 --- a/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java +++ b/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java @@ -735,11 +735,7 @@ public class Main { ze.setXML(Files.readAllBytes(Paths.get(xmlName))); for (FileAttachment attachment : attachments) { - if (((ZUGFeRDExporterFromPDFA) ze).getExporter() instanceof ZUGFeRDExporterFromA3 ) { - ((ZUGFeRDExporterFromA3) ((ZUGFeRDExporterFromPDFA) ze).getExporter()).attachFile(attachment.getFilename(), attachment.getData(), attachment.getMimetype(), attachment.getRelation()); - } else { - System.err.println("IZUGFeRDExporter ze is not of type 'ZUGFeRDExporterFromA3'"); - } + ze.attachFile(attachment.getFilename(), attachment.getData(), attachment.getMimetype(), attachment.getRelation()); } ze.export(outName); diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExporter.java index f056da5c..fd4ffb4c 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExporter.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.io.InputStream; import jakarta.activation.DataSource; +import org.mustangproject.FileAttachment; public interface IZUGFeRDExporter extends Closeable, IExporter { /** @@ -64,6 +65,8 @@ public interface IZUGFeRDExporter extends Closeable, IExporter { public String getNamespaceForVersion(int ver); public String getPrefixForVersion(int ver) ; public IZUGFeRDExporter disableAutoClose(boolean disableAutoClose); + public void attachFile(FileAttachment file); + public void attachFile(String filename, byte[] data, String mimetype, String relation); public IXMLProvider getProvider(); } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromPDFA.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromPDFA.java index d6d4fa55..498ae7dc 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromPDFA.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromPDFA.java @@ -34,6 +34,7 @@ import org.apache.xmpbox.XMPMetadata; import org.apache.xmpbox.schema.PDFAIdentificationSchema; import org.apache.xmpbox.xml.DomXmpParser; import org.apache.xmpbox.xml.XmpParsingException; +import org.mustangproject.FileAttachment; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -72,6 +73,7 @@ public class ZUGFeRDExporterFromPDFA implements IZUGFeRDExporter { } + public IZUGFeRDExporter getExporter() { if (theExporter==null) { throw new RuntimeException("In ZUGFeRDExporterFromPDFA, source must always be loaded before other operations are performed."); @@ -247,5 +249,14 @@ public class ZUGFeRDExporterFromPDFA implements IZUGFeRDExporter { public void export(OutputStream output) throws IOException { getExporter().export(output); } + + public void attachFile(FileAttachment file) { + theExporter.attachFile(file); + } + + public void attachFile(String filename, byte[] data, String mimetype, String relation) { + theExporter.attachFile(filename, data, mimetype, relation); + } + } From 9b68da434484773ea6d5d8d4ec72c6fd7e8c712d Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 13:57:54 +0200 Subject: [PATCH 15/33] added CIO test files for later CIO tests --- .../ORDER-X_EX01_ORDER_FULL_DATA-COMFORT.pdf | Bin 0 -> 239358 bytes ...-X_EX01_ORDER_FULL_DATA-COMFORTorder-x.xml | 815 ++++++++++++++++++ 2 files changed, 815 insertions(+) create mode 100644 library/src/test/resources/ORDER-X_EX01_ORDER_FULL_DATA-COMFORT.pdf create mode 100644 library/src/test/resources/ORDER-X_EX01_ORDER_FULL_DATA-COMFORTorder-x.xml diff --git a/library/src/test/resources/ORDER-X_EX01_ORDER_FULL_DATA-COMFORT.pdf b/library/src/test/resources/ORDER-X_EX01_ORDER_FULL_DATA-COMFORT.pdf new file mode 100644 index 0000000000000000000000000000000000000000..56ec9944b458f6bedd4994cea64e6555838457c3 GIT binary patch literal 239358 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 literal 0 HcmV?d00001 diff --git a/library/src/test/resources/ORDER-X_EX01_ORDER_FULL_DATA-COMFORTorder-x.xml b/library/src/test/resources/ORDER-X_EX01_ORDER_FULL_DATA-COMFORTorder-x.xml new file mode 100644 index 00000000..0c160973 --- /dev/null +++ b/library/src/test/resources/ORDER-X_EX01_ORDER_FULL_DATA-COMFORTorder-x.xml @@ -0,0 +1,815 @@ + + + + + + false + + + A1 + + + urn:order-x.eu:1p0:comfort + + + + PO123456789 + Doc Name + 220 + + 202003311232 + + + false + + 9 + AC + + Content of Note + AAI + + + + 20200331 + + + 20200630 + + + + + + + 1 + + WEEE Tax of 0,50 euros per item included + TXD + + + + 1234567890123 + 987654321 + 654987321 + Product Name + Product Description + Product Batch ID (lot ID) + Product Brand Name + + Characteristic_Code + Characteristic Description + 5 meters + + + Class_code + Name Class Codification + + + Product Instances Batch ID + Product Instances Supplier Serial ID + + + 7B + + 5 + 3 + 1 + + + + FR + + + ADD_REF_PROD_ID + ADD_REF_PROD_URIID + 6 + ADD_REF_PROD_Desc + + + + + 1 + + + QUOT_125487 + 3 + + + ADD_REF_DOC_ID + ADD_REF_DOC_URIID + 5 + 916 + ADD_REF_DOC_Desc + + + OBJECT_125487 + 130 + AWV + + + 10.50 + 1.00 + + + false + + 1.00 + 95 + DISCOUNT + + + + true + + 0.50 + AEW + WEEE + + + + 10.00 + 1.00 + + + CATALOG_REF_ID + 2 + + + 2 + + + + + true + + 6 + 3 + 2 + + + + 202004150900 + + + 202004301800 + + + + + + + VAT + S + 20.00 + + + + false + + 10.00 + 60.00 + 6.00 + 64 + SPECIAL AGREEMENT + + + + true + + 10.00 + 60.00 + 6.00 + FC + FREIGHT SERVICES + + + 60.00 + + + BUYER_ACCOUNTING_REF + + + + + + 2 + + WEEE Tax of 0,50 euros per item included + TXD + + + + 548796523 + 598632147 + 698569856 + Product Name + Product Description + Product Batch ID (lot ID) + Product Brand Name + + Characteristic_Code + Characteristic Description + 3 meters + + + Class_code + Name Class Codification + + + Product Instances Batch ID + Product Instances Supplier Serial ID + + + 7B + + 2 + 1 + 3 + + + + FR + + + ADD_REF_PROD_ID + ADD_REF_PROD_URIID + 6 + ADD_REF_PROD_Desc + + + + + 3 + + + QUOT_125487 + 2 + + + ADD_REF_DOC_ID + ADD_REF_DOC_URIID + 5 + 916 + ADD_REF_DOC_Desc + + + OBJECT_125487 + 130 + AWV + + + 19.50 + 2 + + + true + + 0.50 + AEW + WEEE TAX + + + + 20.00 + 2 + + + CATALOG_REF_ID + 2 + + + 3 + + + + + true + + 10.00 + 5 + 2 + + + 20200415 + + + + + + VAT + S + 20.00 + + + + false + + 1.00 + 100.00 + 1.00 + 64 + SPECIAL AGREEMENT + + + + true + + 1.00 + 100.00 + 1.00 + FC + FREIGHT SERVICES + + + 100.00 + + + BUYER_ACCOUNTING_REF + + + + + + 3 + + Content of Note + AAI + + + + 854721548 + 698325417 + 598674321 + Product Name + Product Description + Product Batch ID (lot ID) + Product Brand Name + + Characteristic_Code + Characteristic Description + 3 meters + + + Class_code + Name Class Codification + + + Product Instances Batch ID + Product Instances Supplier Serial ID + + + 7B + + 2 + 1 + 3 + + + + FR + + + ADD_REF_PROD_ID + ADD_REF_PROD_URIID + 6 + ADD_REF_PROD_Desc + + + + + 4 + + + QUOT_125487 + 1 + + + ADD_REF_DOC_ID + ADD_REF_DOC_URIID + 5 + 916 + ADD_REF_DOC_Desc + + + OBJECT_125487 + 130 + AWV + + + 30 + 1 + + + false + + 5 + + + + 25 + 1 + + + CATALOG_REF_ID + 5 + + + 4 + + + + + true + + 6 + 3 + 2 + + + + 20200415 + + + 20200430 + + + + + + + VAT + S + 20.00 + + + + false + + 10.00 + 150.00 + 15.00 + 64 + SPECIAL AGREEMENT + + + + true + + 10.00 + 150.00 + 15.00 + FC + FREIGHT SERVICES + + + 150.00 + + + BUYER_ACCOUNTING_REF + + + + + BUYER_REF_BU123 + + SUPPLIER_ID_321654 + 123654879 + SELLER_NAME + SELLER_ADD_LEGAL_INFORMATION + + 123456789 + SELLER_TRADING_NAME + + + SELLER_CONTACT_NAME + SELLER_CONTACT_DEP + SR + + +33 6 25 64 98 75 + + + contact@seller.com + + + + 75001 + SELLER_ADDR_1 + SELLER_ADDR_2 + SELLER_ADDR_3 + SELLER_CITY + FR + + + sales@seller.com + + + FR 32 123 456 789 + + + SELLER_TAX_ID + + + + BY_ID_9587456 + 98765432179 + BUYER_NAME + + 987654321 + BUYER_TRADING_NAME + + + BUYER_CONTACT_NAME + BUYER_CONTACT_DEP + LB + + +33 6 65 98 75 32 + + + contact@buyer.com + + + + 69001 + BUYER_ADDR_1 + BUYER_ADDR_2 + BUYER_ADDR_3 + BUYER_CITY + FR + + + operation@buyer.com + + + FR 05 987 654 321 + + + BUYER_TAX_ID + + + + BUYER_REQ_ID_25987 + 654987321 + BUYER_REQ_NAME + + 654987321 + BUYER_REQ_TRADING_NAME + + + BUYER_REQ_CONTACT_NAME + BUYER_REQ_CONTACT_DEP + PD + + +33 6 54 98 65 32 + + + requisitioner@buyer.com + + + + 69001 + BUYER_REQ_ADDR_1 + BUYER_REQ_ADDR_2 + BUYER_REQ_ADDR_3 + BUYER_REQ_CITY + FR + + + purchase@buyer.com + + + FR 92 654 987 321 + + + + FCA + Free Carrier + 7 + + DEL_TERMS_LOC_ID + DEL_TERMS_LOC_Name + + + + SALES_REF_ID_459875 + + + PO123456789 + + + QUOT_125487 + + + CONTRACT_2020-25987 + + + REQ_875498 + + + ADD_REF_DOC_ID + ADD_REF_DOC_URIID + 916 + ADD_REF_DOC_Desc + + + TENDER_ID + 50 + + + OBJECT_ID + 130 + AWV + + + CATALOG_ID + + + BLANKET_ORDER_ID + + + PREV_ORDER_C_ID + + + PREV_ORDER_R_ID + + + PROJECT_ID + Project Reference + + + + + SHIP_TO_ID + 5897546912 + SHIP_TO_NAME + + 951632874 + SHIP_TO_TRADING_NAME + + + SHIP_TO_CONTACT_NAME + SHIP_TO_CONTACT_DEP + SD + + +33 6 85 96 32 41 + + + shipto@customer.com + + + + 69003 + SHIP_TO_ADDR_1 + SHIP_TO_ADDR_2 + SHIP_TO_ADDR_3 + SHIP_TO_CITY + FR + + + delivery@buyer.com + + + FR 66 951 632 874 + + + + SHIP_FROM_ID + 875496123 + SHIP_FROM_NAME + + 548963127 + SHIP_FROM_TRADING_NAME + + + SHIP_FROM_CONTACT_NAME + SHIP_FROM_CONTACT_DEP + SD + + +33 6 85 96 32 41 + + + shipfrom@seller.com + + + + 75003 + SHIP_FROM_ADDR_1 + SHIP_FROM_ADDR_2 + SHIP_FROM_ADDR_3 + SHIP_FROM_CITY + FR + + + warehouse@seller.com + + + FR 16 548 963 127 + + + + + 20200415 + + + + 202004150900 + + + 202004301800 + + + + + + EUR + + INVOICEE_ID_9587456 + 98765432179 + INVOICEE_NAME + + 987654321 + INVOICEE_TRADING_NAME + + + INVOICEE_CONTACT_NAME + INVOICEE_CONTACT_DEP + LB + + +33 6 65 98 75 32 + + + invoicee@buyer.com + + + + 69001 + INVOICEE_ADDR_1 + INVOICEE_ADDR_2 + INVOICEE_ADDR_3 + INVOICEE_CITY + FR + + + invoicee@buyer.com + + + FR 05 987 654 321 + + + INVOICEE_TAX_ID + + + + 30 + Credit Transfer + + + + false + + 10.00 + 310 + 31.00 + 64 + SPECIAL AGREEMENT + + VAT + S + 20.00 + + + + + true + + 10.00 + 210.00 + 21.00 + FC + FREIGHT SERVICES + + VAT + S + 20.00 + + + + PAYMENT_TERMS_DESC + + + 310.00 + 21.00 + 31.00 + 300.00 + 60.00 + 360.00 + + + BUYER_ACCOUNT_REF + + + + \ No newline at end of file From a18526f32986c460d666a3e979ef3ab43a3503cb Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:08:49 +0200 Subject: [PATCH 16/33] updated release date --- History.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/History.md b/History.md index 1c04da09..5933d2d4 100644 --- a/History.md +++ b/History.md @@ -1,6 +1,6 @@ 2.13.0 ======= -2024-08-27 +2024-08-28 - Item Attributes and Country of Origin missing on Product. #420 - Avoid NullPointerException if dueDate is not set. #441 From dcd8511f6c3481f04d0e30e65c7d42ca2125b4d8 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:11:23 +0200 Subject: [PATCH 17/33] updated javadocs --- .../main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java | 2 +- .../java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java index 2029e854..4016e2a1 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java @@ -104,7 +104,7 @@ public class ZUGFeRDImporter { /*** * return the file names of all files embedded into the PDF - * @see for XML embedded files please use ZUGFeRDInvoiceImporter.getFileAttachmentsXML + * for XML embedded files please use ZUGFeRDInvoiceImporter.getFileAttachmentsXML * @return a ArrayList of FileAttachments, empty if none */ public List getFileAttachmentsPDF() { diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index 4a28fd44..117254fb 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -423,7 +423,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter { /*** * * @return the file attachments embedded in XML (using base64) decoded as byte array, - * @see for PDF embedded files in FX use getFileAttachmentsPDF() + * for PDF embedded files in FX use getFileAttachmentsPDF() */ public List getFileAttachmentsXML() { return fileAttachments; From 0190c499118b09fc898f4b49a61197b08f4e0de3 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:13:48 +0200 Subject: [PATCH 18/33] [maven-release-plugin] prepare release core-2.13.0 --- Mustang-CLI/pom.xml | 2 +- library/pom.xml | 4 ++-- pom.xml | 7 ++++--- validator/pom.xml | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index aaf4986f..68c9cdb6 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.13.0-SNAPSHOT + 2.13.0 Mustang-CLI diff --git a/library/pom.xml b/library/pom.xml index 66684cac..27f24771 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -5,7 +5,7 @@ org.mustangproject core - 2.13.0-SNAPSHOT + 2.13.0 library jar @@ -207,7 +207,7 @@ package - + diff --git a/pom.xml b/pom.xml index 9355edf7..7626a32c 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.mustangproject core - 2.13.0-SNAPSHOT + 2.13.0 pom Mustang @@ -83,7 +83,8 @@ scm:git:https://github.com/ZUGFeRD/mustangproject.git scm:git:https://github.com/ZUGFeRD/mustangproject.git https://github.com/ZUGFeRD/mustangproject - + core-2.13.0 + @@ -247,7 +248,7 @@ package - + diff --git a/validator/pom.xml b/validator/pom.xml index f3f3a95a..904ef552 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.13.0-SNAPSHOT + 2.13.0 validator From cf138be9b4aee01186095c790f4d426cae92d6d7 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:13:49 +0200 Subject: [PATCH 19/33] [maven-release-plugin] prepare for next development iteration --- Mustang-CLI/pom.xml | 2 +- library/pom.xml | 2 +- pom.xml | 4 ++-- validator/pom.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index 68c9cdb6..6d3b12ad 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.13.0 + 2.13.1-SNAPSHOT Mustang-CLI diff --git a/library/pom.xml b/library/pom.xml index 27f24771..e62636d5 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -5,7 +5,7 @@ org.mustangproject core - 2.13.0 + 2.13.1-SNAPSHOT library jar diff --git a/pom.xml b/pom.xml index 7626a32c..eab363ea 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.mustangproject core - 2.13.0 + 2.13.1-SNAPSHOT pom Mustang @@ -83,7 +83,7 @@ scm:git:https://github.com/ZUGFeRD/mustangproject.git scm:git:https://github.com/ZUGFeRD/mustangproject.git https://github.com/ZUGFeRD/mustangproject - core-2.13.0 + HEAD diff --git a/validator/pom.xml b/validator/pom.xml index 904ef552..7b0152b3 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.13.0 + 2.13.1-SNAPSHOT validator From 390c0431c427e272a7ec94bb1c300fd2e520d31a Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:19:47 +0200 Subject: [PATCH 20/33] Revert "[maven-release-plugin] prepare for next development iteration" This reverts commit cf138be9b4aee01186095c790f4d426cae92d6d7. --- Mustang-CLI/pom.xml | 2 +- library/pom.xml | 2 +- pom.xml | 4 ++-- validator/pom.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index 6d3b12ad..68c9cdb6 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.13.1-SNAPSHOT + 2.13.0 Mustang-CLI diff --git a/library/pom.xml b/library/pom.xml index e62636d5..27f24771 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -5,7 +5,7 @@ org.mustangproject core - 2.13.1-SNAPSHOT + 2.13.0 library jar diff --git a/pom.xml b/pom.xml index eab363ea..7626a32c 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.mustangproject core - 2.13.1-SNAPSHOT + 2.13.0 pom Mustang @@ -83,7 +83,7 @@ scm:git:https://github.com/ZUGFeRD/mustangproject.git scm:git:https://github.com/ZUGFeRD/mustangproject.git https://github.com/ZUGFeRD/mustangproject - HEAD + core-2.13.0 diff --git a/validator/pom.xml b/validator/pom.xml index 7b0152b3..904ef552 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.13.1-SNAPSHOT + 2.13.0 validator From e18744675c372a61e80612ea2fa3fe2e33283fd7 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:19:54 +0200 Subject: [PATCH 21/33] Revert "[maven-release-plugin] prepare release core-2.13.0" This reverts commit 0190c499118b09fc898f4b49a61197b08f4e0de3. --- Mustang-CLI/pom.xml | 2 +- library/pom.xml | 4 ++-- pom.xml | 7 +++---- validator/pom.xml | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index 68c9cdb6..aaf4986f 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.13.0 + 2.13.0-SNAPSHOT Mustang-CLI diff --git a/library/pom.xml b/library/pom.xml index 27f24771..66684cac 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -5,7 +5,7 @@ org.mustangproject core - 2.13.0 + 2.13.0-SNAPSHOT library jar @@ -207,7 +207,7 @@ package - + diff --git a/pom.xml b/pom.xml index 7626a32c..9355edf7 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.mustangproject core - 2.13.0 + 2.13.0-SNAPSHOT pom Mustang @@ -83,8 +83,7 @@ scm:git:https://github.com/ZUGFeRD/mustangproject.git scm:git:https://github.com/ZUGFeRD/mustangproject.git https://github.com/ZUGFeRD/mustangproject - core-2.13.0 - + @@ -248,7 +247,7 @@ package - + diff --git a/validator/pom.xml b/validator/pom.xml index 904ef552..f3f3a95a 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.13.0 + 2.13.0-SNAPSHOT validator From bac6659c419e61720dddaebb2689c33a0b504d39 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:29:44 +0200 Subject: [PATCH 22/33] trying to get autmatic maven central upload to work again --- pom.xml | 48 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 9355edf7..8f9eaf0c 100644 --- a/pom.xml +++ b/pom.xml @@ -8,12 +8,13 @@ Mustang - The Mustang project is a java library to read and write ZUGFeRD - meta data inside your invoice PDFs + The Mustang project is a java library and command line tool to read, write and validate + e-invoices in EN16931 formats, writing CII and reading also UBL and altogether + supporting ZUGFeRD/Factur-X PDFs and XRechnung files http://www.mustangproject.org/ - + library validator @@ -26,7 +27,9 @@ -Xdoclint:none 11 11 - + true + 2.0.13 12.4 2.17.1 @@ -80,9 +83,10 @@ - scm:git:https://github.com/ZUGFeRD/mustangproject.git - scm:git:https://github.com/ZUGFeRD/mustangproject.git - https://github.com/ZUGFeRD/mustangproject + scm:git:git://github.com/dexecutor/dependent-tasks-executor.git + scm:git:git@github.com:dexecutor/dexecutor.git + https://github.com/dexecutor/dependent-tasks-executor + core-2.3.2 @@ -277,6 +281,16 @@ + + + ossrh + https://s01.oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ + + @@ -356,6 +370,26 @@ + + org.apache.maven.plugins + maven-toolchains-plugin + 3.1.0 + + + + toolchain + + + + + + + 11 + adopt + + + + From f4690674a811dd86d2fd34bd39e225bfd844d08b Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:31:23 +0200 Subject: [PATCH 23/33] removing duplicated tag --- pom.xml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index 8f9eaf0c..c205dad5 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ Mustang - The Mustang project is a java library and command line tool to read, write and validate + Mustangproject is a java library and command line tool to read, write and validate e-invoices in EN16931 formats, writing CII and reading also UBL and altogether supporting ZUGFeRD/Factur-X PDFs and XRechnung files @@ -281,16 +281,6 @@ - - - ossrh - https://s01.oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ - - From 1afa52b6021fe4cb99ca58709cacf120f0c1eb2f Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:33:56 +0200 Subject: [PATCH 24/33] [maven-release-plugin] prepare release core-2.13.0 --- Mustang-CLI/pom.xml | 2 +- library/pom.xml | 4 ++-- pom.xml | 6 +++--- validator/pom.xml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index aaf4986f..68c9cdb6 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.13.0-SNAPSHOT + 2.13.0 Mustang-CLI diff --git a/library/pom.xml b/library/pom.xml index 66684cac..27f24771 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -5,7 +5,7 @@ org.mustangproject core - 2.13.0-SNAPSHOT + 2.13.0 library jar @@ -207,7 +207,7 @@ package - + diff --git a/pom.xml b/pom.xml index c205dad5..36f18a4f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.mustangproject core - 2.13.0-SNAPSHOT + 2.13.0 pom Mustang @@ -86,7 +86,7 @@ scm:git:git://github.com/dexecutor/dependent-tasks-executor.git scm:git:git@github.com:dexecutor/dexecutor.git https://github.com/dexecutor/dependent-tasks-executor - core-2.3.2 + core-2.13.0 @@ -251,7 +251,7 @@ package - + diff --git a/validator/pom.xml b/validator/pom.xml index f3f3a95a..904ef552 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.13.0-SNAPSHOT + 2.13.0 validator From 165f25de474e26ba21877fa6cb408105b9504d20 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:33:57 +0200 Subject: [PATCH 25/33] [maven-release-plugin] prepare for next development iteration --- Mustang-CLI/pom.xml | 2 +- library/pom.xml | 2 +- pom.xml | 4 ++-- validator/pom.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index 68c9cdb6..5147b159 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.13.0 + 2.14.0-SNAPSHOT Mustang-CLI diff --git a/library/pom.xml b/library/pom.xml index 27f24771..27f3a819 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -5,7 +5,7 @@ org.mustangproject core - 2.13.0 + 2.14.0-SNAPSHOT library jar diff --git a/pom.xml b/pom.xml index 36f18a4f..f4d11cbb 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.mustangproject core - 2.13.0 + 2.14.0-SNAPSHOT pom Mustang @@ -86,7 +86,7 @@ scm:git:git://github.com/dexecutor/dependent-tasks-executor.git scm:git:git@github.com:dexecutor/dexecutor.git https://github.com/dexecutor/dependent-tasks-executor - core-2.13.0 + core-2.3.2 diff --git a/validator/pom.xml b/validator/pom.xml index 904ef552..8f2bdcf4 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.13.0 + 2.14.0-SNAPSHOT validator From 3a8247de7e46c45ebcfa3ef9ed5f88554ad753cf Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:38:02 +0200 Subject: [PATCH 26/33] Revert "[maven-release-plugin] prepare for next development iteration" This reverts commit 165f25de474e26ba21877fa6cb408105b9504d20. --- Mustang-CLI/pom.xml | 2 +- library/pom.xml | 2 +- pom.xml | 4 ++-- validator/pom.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index 5147b159..68c9cdb6 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.14.0-SNAPSHOT + 2.13.0 Mustang-CLI diff --git a/library/pom.xml b/library/pom.xml index 27f3a819..27f24771 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -5,7 +5,7 @@ org.mustangproject core - 2.14.0-SNAPSHOT + 2.13.0 library jar diff --git a/pom.xml b/pom.xml index f4d11cbb..36f18a4f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.mustangproject core - 2.14.0-SNAPSHOT + 2.13.0 pom Mustang @@ -86,7 +86,7 @@ scm:git:git://github.com/dexecutor/dependent-tasks-executor.git scm:git:git@github.com:dexecutor/dexecutor.git https://github.com/dexecutor/dependent-tasks-executor - core-2.3.2 + core-2.13.0 diff --git a/validator/pom.xml b/validator/pom.xml index 8f2bdcf4..904ef552 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -4,7 +4,7 @@ org.mustangproject core - 2.14.0-SNAPSHOT + 2.13.0 validator From 04f27b72c77908adf3e5fa678ad404319cf586ab Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:44:07 +0200 Subject: [PATCH 27/33] reverting pom cleanup --- History.md | 1 - Mustang-CLI/pom.xml | 184 +++++++++++++++++--- library/pom.xml | 231 +++++++++++++++++++------ pom.xml | 403 ++++++++++++-------------------------------- validator/pom.xml | 193 +++++++++++++++++---- 5 files changed, 609 insertions(+), 403 deletions(-) diff --git a/History.md b/History.md index 5933d2d4..321335d9 100644 --- a/History.md +++ b/History.md @@ -18,7 +18,6 @@ - allow legalorganisation to have a tradingbusinessname #447 - JSon deserialization does not work with BankDetails #455 - Fix ClassCastException in CLI (Main.java). #451 -- Re-Formatted and re-organized POMs #446 - changed additional references by line from String to List and implemented it on Item #454 2.12.0 diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index 68c9cdb6..89fa7201 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -1,87 +1,215 @@ - 4.0.0 org.mustangproject core 2.13.0 - + 4.0.0 Mustang-CLI - jar - E-Invoice commandline tool - - - E-invoices commandline tool, allowing to create(embed), split and validate Factur-X/ZUGFeRD files. Validation + e-invoices commandline tool, allowing to create(embed), split and validate Factur-X/ZUGFeRD files. Validation should also work for XRechnung/CII. - - + + jar + UTF-8 + 11 + 11 - org.mustangproject validator - ${project.version} + 2.13.0-SNAPSHOT + - - - + commons-cli commons-cli - ${dep.commons-cli.version} + 1.8.0 org.junit.jupiter junit-jupiter-api + 5.10.2 + test - - - org.xmlunit - xmlunit-core - compile - - - - org.xmlunit - xmlunit-assertj - compile - - org.junit.vintage junit-vintage-engine + 5.10.2 + test + + + org.xmlunit + xmlunit-core + 2.10.0 + + + org.xmlunit + xmlunit-assertj + 2.10.0 + + + + + + jakarta.xml.bind + jakarta.xml.bind-api + 4.0.2 + + + + + + + org.apache.maven.plugins + maven-release-plugin + 2.5.3 + + + org.apache.maven.plugins maven-surefire-plugin + + alphabetical + + org.apache.maven.plugins maven-jar-plugin + 3.4.2 + + + + true + true + + + + org.apache.maven.plugins maven-compiler-plugin + 2.3.2 + + 11 + 11 + org.apache.maven.plugins maven-shade-plugin + 3.5.3 org.mustangproject.commandline.Main + false + + + *:* + + LICENSE + NOTICE + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + commons-logging:commons-logging + + ** + + + + + + package + + shade + + + + + + + + + + + release-sign-artifacts + + + performRelease + true + + + + + + org.apache.maven.plugins + maven-toolchains-plugin + 3.1.0 + + + + toolchain + + + + + + + 11 + adopt + + + + + + + + + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + A business-friendly OSS license + + + + + Jochen Stärk + jstaerk@usegroup.de + + architect + developer + + + diff --git a/library/pom.xml b/library/pom.xml index 27f24771..f4e24d68 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -1,143 +1,178 @@ - - 4.0.0 org.mustangproject core - 2.13.0 + 2.13.0-SNAPSHOT + + 4.0.0 library jar - - Mustang Library to r/w e-invoices - - - FOSS Java library to read, write and validate european electronic invoices and orders in the UN/CEFACT + Library to write, read and validate e-invoices (Factur-X, ZUGFeRD, Order-X, XRechnung/CII) + FOSS Java library to read, write and validate european electronic invoices and orders in the UN/CEFACT Cross Industry Invoice based formats Factur-X/ZUGFeRD, XRechnung and Order-X in your invoice PDFs. - + http://www.mustangproject.org/ + + scm:git:https://github.com/ZUGFeRD/mustangproject.git + scm:git:https://github.com/ZUGFeRD/mustangproject.git + https://github.com/ZUGFeRD/mustangproject + core-2.3.2 + + + + sonatype-oss-public + https://oss.sonatype.org/content/groups/public/ + + true + + + true + + + + + + internal.repo + Temporary Staging Repository + file://${project.build.directory}/mvn-repo + + - + UTF-8 + github + -Xdoclint:none + + 11 + 11 + true + org.slf4j slf4j-api + 2.0.9 - net.sf.saxon Saxon-HE - ${dep.saxon-he.version} - - - + 12.4 + com.fasterxml.jackson.core jackson-databind - ${dep.jackson.version} + 2.17.1 - org.apache.xmlgraphics fop - ${dep.apache.fop.version} + 2.9 - - xml-apis - xml-apis - + + xml-apis + xml-apis + jakarta.xml.bind jakarta.xml.bind-api - ${dep.jakarta.xml-bind.version} + 4.0.2 - org.eclipse.angus angus-activation - ${dep.angus.version} + 2.0.2 org.apache.pdfbox preflight - ${dep.pdfbox.version} + 3.0.2 - org.apache.pdfbox pdfbox - ${dep.pdfbox.version} + 3.0.2 - org.dom4j dom4j - ${dep.dom4j.version} + 2.1.4 - + + org.junit.jupiter + junit-jupiter-api + 5.10.2 + test + + + org.junit.vintage + junit-vintage-engine + 5.10.2 + test + + com.helger en16931-cii2ubl - ${dep.en16931-cii2ubl.version} + 2.2.4 - org.glassfish.jaxb jaxb-runtime - ${dep.jaxb-runtime.version} - - - - org.junit.jupiter - junit-jupiter-api - - - - org.junit.vintage - junit-vintage-engine + 4.0.5 org.xmlunit xmlunit-core + 2.10.0 + test org.xmlunit xmlunit-assertj + 2.10.0 + test - org.slf4j slf4j-simple + 2.0.9 + test - org.apache.maven.plugins maven-surefire-plugin + + alphabetical + - org.apache.maven.plugins maven-compiler-plugin + 3.13.0 + + 11 + 11 + - org.apache.maven.plugins maven-jar-plugin + 3.2.0 **/logback.xml @@ -169,19 +204,26 @@ - org.apache.maven.plugins maven-source-plugin + 3.3.1 + + + attach-sources + + jar-no-fork + + + - org.apache.maven.plugins maven-shade-plugin + 3.5.3 true - false - + false *:* @@ -201,19 +243,100 @@ + package shade - package - + + + + org.codehaus.mojo + templating-maven-plugin + 1.0.0 + + + filtering-java-templates + + filter-sources + + + + + + + + release-sign-artifacts + + + performRelease + true + + + + + + org.apache.maven.plugins + maven-toolchains-plugin + 3.1.0 + + + + toolchain + + + + + + + 11 + adopt + + + + + + + + + + + User List + https://groups.google.com/forum/?hl=de#!forum/mustangproject + + + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + A business-friendly OSS license + + + + + Jochen Stärk + jstaerk@usegroup.de + + architect + developer + + + + Alexander Schmidt + schmidt.alexander@mail.de + + developer + + + diff --git a/pom.xml b/pom.xml index 36f18a4f..b020447b 100644 --- a/pom.xml +++ b/pom.xml @@ -3,51 +3,130 @@ 4.0.0 org.mustangproject core - 2.13.0 + 2.13.0-SNAPSHOT pom Mustang - - Mustangproject is a java library and command line tool to read, write and validate - e-invoices in EN16931 formats, writing CII and reading also UBL and altogether - supporting ZUGFeRD/Factur-X PDFs and XRechnung files - - - http://www.mustangproject.org/ - library validator Mustang-CLI - + + The Mustang project is a java library to read and write ZUGFeRD meta data inside your invoice PDFs + + http://www.mustangproject.org/ + + scm:git:git://github.com/dexecutor/dependent-tasks-executor.git + scm:git:git@github.com:dexecutor/dexecutor.git + https://github.com/dexecutor/dependent-tasks-executor + core-2.3.2 + + + + + + org.apache.maven.plugins + maven-release-plugin + 2.5.3 + + true + false + forked-path + -Dgpg.passphrase=${gpg.passphrase} + + + + org.apache.maven.scm + maven-scm-provider-gitexe + 1.9.5 + + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.0.1 + + + org.mustangproject.ZUGFeRD.model.* + + + + + maven-deploy-plugin + 3.0.0-M1 + + internal.repo::default::file://${project.build.directory}/mvn-repo + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.13 + true + + ossrh + https://s01.oss.sonatype.org/ + true + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.3.1 + + alphabetical + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-javadoc + + + + + + + + + + ossrh + https://s01.oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ + + UTF-8 github -Xdoclint:none + 11 11 true - - 2.0.13 - 12.4 - 2.17.1 - 2.9 - 4.0.2 - 2.0.2 - 3.0.2 - 2.1.4 - 2.2.4 - 4.0.5 - 5.10.2 - 2.10.0 - - 1.9.0 - 1.26.1 - 8.0.0 - + + + + User List + https://groups.google.com/forum/?hl=de#!forum/mustangproject + + Apache-2.0 @@ -56,7 +135,6 @@ A business-friendly OSS license - Jochen Stärk @@ -74,268 +152,11 @@ - - - - User List - https://groups.google.com/forum/?hl=de#!forum/mustangproject - - - - - scm:git:git://github.com/dexecutor/dependent-tasks-executor.git - scm:git:git@github.com:dexecutor/dexecutor.git - https://github.com/dexecutor/dependent-tasks-executor - core-2.13.0 - - - - - ossrh - https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ - - - ossrh - https://s01.oss.sonatype.org/content/repositories/snapshots - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - - compile - - compile - - - ${maven.compiler.source} - - - - - - - org.apache.maven.plugins - maven-resources-plugin - 3.3.1 - - - - org.apache.maven.plugins - maven-release-plugin - 3.1.1 - - true - false - forked-path - -Dgpg.passphrase=${gpg.passphrase} - - - - org.apache.maven.scm - maven-scm-provider-gitexe - 2.1.0 - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.8.0 - - org.mustangproject.ZUGFeRD.model.* - - - - - maven-deploy-plugin - 3.1.2 - - internal.repo::default::file://${project.build.directory}/mvn-repo - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.7.0 - true - - ossrh - https://s01.oss.sonatype.org/ - true - - - - - org.apache.maven.plugins - maven-surefire-plugin - 3.3.1 - - alphabetical - - - - - org.apache.maven.plugins - maven-source-plugin - 3.3.1 - - - attach-sources - - jar-no-fork - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.4.2 - - - - true - true - - - - - - - test-jar - - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.5.3 - - false - - - *:* - - LICENSE - NOTICE - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - - - commons-logging:commons-logging - - ** - - - - - - - - shade - - package - - - - - - - - - - - org.codehaus.mojo - templating-maven-plugin - 3.0.0 - - - filtering-java-templates - - filter-sources - - - - - - - - - - org.codehaus.mojo - templating-maven-plugin - - - - - - - - org.slf4j - slf4j-api - ${dep.slf4j.version} - - - - jakarta.xml.bind - jakarta.xml.bind-api - ${dep.jakarta.xml-bind.version} - - - - org.junit.jupiter - junit-jupiter-api - ${dep.junit5.version} - test - - - - org.junit.vintage - junit-vintage-engine - ${dep.junit5.version} - test - - - - org.xmlunit - xmlunit-core - ${dep.xmlunit.version} - test - - - - org.xmlunit - xmlunit-assertj - ${dep.xmlunit.version} - test - - - - org.slf4j - slf4j-simple - ${dep.slf4j.version} - test - - - - - - + + + + release-sign-artifacts @@ -349,7 +170,7 @@ org.apache.maven.plugins maven-gpg-plugin - 3.2.4 + 1.6 sign-artifacts diff --git a/validator/pom.xml b/validator/pom.xml index 904ef552..946d9a48 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -1,22 +1,33 @@ - 4.0.0 org.mustangproject core 2.13.0 - + 4.0.0 validator + Library to validate e-invoices (ZUGFeRD, Factur-X and Xrechnung) + jar - - E-Invoices Validator - - - Library to validate e-invoices (ZUGFeRD, Factur-X and Xrechnung - - + + + + sonatype-oss-public + https://oss.sonatype.org/content/groups/public/ + + true + + + true + + + + UTF-8 + false + 11 + 11 @@ -24,82 +35,155 @@ library ${project.version} - jakarta.xml.bind jakarta.xml.bind-api + 4.0.2 + + org.verapdf validation-model-jakarta - ${dep.verapdf.validation-model-jakarta.version} + 1.26.1 - com.helger.schematron ph-schematron-xslt - ${dep.ph-schematron-xslt.version} + 8.0.0 - org.xmlunit xmlunit-core + 2.10.0 + test - org.xmlunit xmlunit-assertj + 2.10.0 + test - org.junit.jupiter junit-jupiter-api + 5.10.2 + test - org.junit.vintage junit-vintage-engine + 5.10.2 + test - org.slf4j slf4j-simple + 2.0.9 + test - + + + + + org.apache.maven.plugins + maven-release-plugin + 2.5.3 + + + org.apache.maven.plugins maven-surefire-plugin + + alphabetical + - + org.apache.maven.plugins maven-jar-plugin + 3.2.0 + + + **/logback.xml + + + + true + true + + + - org.apache.maven.plugins maven-compiler-plugin + 2.3.2 + + 11 + 11 + - + org.apache.maven.plugins maven-shade-plugin + 2.4.3 + + true + false + + + *:* + + LICENSE + NOTICE + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + commons-logging:commons-logging + + ** + + + + + + + package + + shade + + + + + + + + - maven-resources-plugin + 3.1.0 copy-zf-schematron-xml-dependencies + compile copy-resources - compile ${basedir}/src/main/resources/xslt/ZF_221/ @@ -117,11 +201,62 @@ + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + A business-friendly OSS license + + + + + Jochen Stärk + jstaerk@usegroup.de + + architect + developer + + + - - + + release-sign-artifacts + + + performRelease + true + + + + + + org.apache.maven.plugins + maven-toolchains-plugin + 3.1.0 + + + + toolchain + + + + + + + 11 + adopt + + + + + + + + generateXSLTFromSchematron false @@ -131,7 +266,7 @@ com.helger.maven ph-schematron-maven-plugin - ${dep.ph-schematron-xslt.version} + 8.0.0 ${basedir}/src/main/resources/schematron ${basedir}/src/main/resources/xslt From da8fc9a4574814b8fd2f843001fc90e16b782fe3 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:52:21 +0200 Subject: [PATCH 28/33] reverting to poms from 2.12 --- Mustang-CLI/pom.xml | 37 +++++++++++++++++++++++++++++++++---- library/pom.xml | 30 ++++++++++++++++++++++++++---- pom.xml | 10 +++++++--- validator/pom.xml | 29 ++++++++++++++++++++++++++--- 4 files changed, 92 insertions(+), 14 deletions(-) diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index 89fa7201..247cd494 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -1,18 +1,22 @@ - + org.mustangproject core - 2.13.0 + 2.12.0-SNAPSHOT 4.0.0 + org.mustangproject Mustang-CLI e-invoices commandline tool, allowing to create(embed), split and validate Factur-X/ZUGFeRD files. Validation should also work for XRechnung/CII. jar + 2.12.0-SNAPSHOT UTF-8 + 11 11 11 @@ -20,7 +24,7 @@ org.mustangproject validator - 2.13.0-SNAPSHOT + 2.12.0-SNAPSHOT @@ -107,6 +111,18 @@ maven-compiler-plugin 2.3.2 + + + true + org.mustangproject.commandline.main + + + + jar-with-dependencies + + + 11 11 @@ -117,7 +133,8 @@ 3.5.3 - + org.mustangproject.commandline.Main @@ -133,12 +150,24 @@ META-INF/*.RSA + + log4j:log4j + + ** + + commons-logging:commons-logging ** + + com.sun.xml.bind:jaxb-impl + + ** + + diff --git a/library/pom.xml b/library/pom.xml index f4e24d68..76b7e8b7 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -1,13 +1,16 @@ - + org.mustangproject core - 2.13.0-SNAPSHOT + 2.12.0-SNAPSHOT 4.0.0 + org.mustangproject library + 2.12.0-SNAPSHOT jar Library to write, read and validate e-invoices (Factur-X, ZUGFeRD, Order-X, XRechnung/CII) FOSS Java library to read, write and validate european electronic invoices and orders in the UN/CEFACT @@ -44,9 +47,11 @@ github -Xdoclint:none + 11 11 11 - true + true + @@ -165,6 +170,12 @@ maven-compiler-plugin 3.13.0 + + jar-with-dependencies + + + 11 11 @@ -223,8 +234,10 @@ 3.5.3 true - false + false + + *:* @@ -233,6 +246,12 @@ META-INF/*.RSA + + log4j:log4j + + ** + + commons-logging:commons-logging @@ -250,6 +269,9 @@ + diff --git a/pom.xml b/pom.xml index b020447b..0c747e0d 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.mustangproject core - 2.13.0-SNAPSHOT + 2.12.0-SNAPSHOT pom Mustang @@ -63,7 +63,8 @@ maven-deploy-plugin 3.0.0-M1 - internal.repo::default::file://${project.build.directory}/mvn-repo + internal.repo::default::file://${project.build.directory}/mvn-repo + @@ -81,7 +82,6 @@ org.apache.maven.plugins maven-surefire-plugin - 3.3.1 alphabetical @@ -90,6 +90,9 @@ org.apache.maven.plugins maven-source-plugin 3.2.1 + + UTF-8 + attach-javadoc @@ -115,6 +118,7 @@ github -Xdoclint:none + 11 11 11 true @@ -25,15 +27,18 @@ UTF-8 - false + false + + 11 11 11 + ${project.groupId} library - ${project.version} + 2.12.0-SNAPSHOT jakarta.xml.bind @@ -129,6 +134,12 @@ maven-compiler-plugin 2.3.2 + + jar-with-dependencies + + + 11 11 @@ -152,12 +163,24 @@ META-INF/*.RSA + + log4j:log4j + + ** + + commons-logging:commons-logging ** + + com.sun.xml.bind:jaxb-impl + + ** + + From f289b61b03919da0ee0cb673f6959d97d9e9e813 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:55:29 +0200 Subject: [PATCH 29/33] [maven-release-plugin] prepare release core-2.13.0 --- Mustang-CLI/pom.xml | 14 ++++++-------- library/pom.xml | 9 ++++----- pom.xml | 4 ++-- validator/pom.xml | 6 +++--- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index 247cd494..376a33b6 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -1,10 +1,9 @@ - + org.mustangproject core - 2.12.0-SNAPSHOT + 2.13.0 4.0.0 org.mustangproject @@ -13,7 +12,7 @@ should also work for XRechnung/CII. jar - 2.12.0-SNAPSHOT + 2.13.0 UTF-8 11 @@ -24,7 +23,7 @@ org.mustangproject validator - 2.12.0-SNAPSHOT + 2.13.0 @@ -133,8 +132,7 @@ 3.5.3 - + org.mustangproject.commandline.Main @@ -178,7 +176,7 @@ - + diff --git a/library/pom.xml b/library/pom.xml index 76b7e8b7..a37dfffc 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -1,16 +1,15 @@ - + org.mustangproject core - 2.12.0-SNAPSHOT + 2.13.0 4.0.0 org.mustangproject library - 2.12.0-SNAPSHOT + 2.13.0 jar Library to write, read and validate e-invoices (Factur-X, ZUGFeRD, Order-X, XRechnung/CII) FOSS Java library to read, write and validate european electronic invoices and orders in the UN/CEFACT @@ -21,7 +20,7 @@ scm:git:https://github.com/ZUGFeRD/mustangproject.git scm:git:https://github.com/ZUGFeRD/mustangproject.git https://github.com/ZUGFeRD/mustangproject - core-2.3.2 + core-2.13.0 diff --git a/pom.xml b/pom.xml index 0c747e0d..49fe98f7 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.mustangproject core - 2.12.0-SNAPSHOT + 2.13.0 pom Mustang @@ -20,7 +20,7 @@ scm:git:git://github.com/dexecutor/dependent-tasks-executor.git scm:git:git@github.com:dexecutor/dexecutor.git https://github.com/dexecutor/dependent-tasks-executor - core-2.3.2 + core-2.13.0 diff --git a/validator/pom.xml b/validator/pom.xml index ddb06bef..624640dd 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -3,7 +3,7 @@ org.mustangproject core - 2.12.0-SNAPSHOT + 2.13.0 4.0.0 org.mustangproject @@ -11,7 +11,7 @@ Library to validate e-invoices (ZUGFeRD, Factur-X and Xrechnung) jar - 2.12.0-SNAPSHOT + 2.13.0 @@ -38,7 +38,7 @@ ${project.groupId} library - 2.12.0-SNAPSHOT + 2.13.0 jakarta.xml.bind From 0f55d35d057456659d520826a9709c3139015e0f Mon Sep 17 00:00:00 2001 From: jstaerk Date: Wed, 28 Aug 2024 17:55:29 +0200 Subject: [PATCH 30/33] [maven-release-plugin] prepare for next development iteration --- Mustang-CLI/pom.xml | 6 +++--- library/pom.xml | 6 +++--- pom.xml | 4 ++-- validator/pom.xml | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index 376a33b6..8253c62a 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -3,7 +3,7 @@ org.mustangproject core - 2.13.0 + 2.14.0-SNAPSHOT 4.0.0 org.mustangproject @@ -12,7 +12,7 @@ should also work for XRechnung/CII. jar - 2.13.0 + 2.14.0-SNAPSHOT UTF-8 11 @@ -23,7 +23,7 @@ org.mustangproject validator - 2.13.0 + 2.14.0-SNAPSHOT diff --git a/library/pom.xml b/library/pom.xml index a37dfffc..feca7184 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -3,13 +3,13 @@ org.mustangproject core - 2.13.0 + 2.14.0-SNAPSHOT 4.0.0 org.mustangproject library - 2.13.0 + 2.14.0-SNAPSHOT jar Library to write, read and validate e-invoices (Factur-X, ZUGFeRD, Order-X, XRechnung/CII) FOSS Java library to read, write and validate european electronic invoices and orders in the UN/CEFACT @@ -20,7 +20,7 @@ scm:git:https://github.com/ZUGFeRD/mustangproject.git scm:git:https://github.com/ZUGFeRD/mustangproject.git https://github.com/ZUGFeRD/mustangproject - core-2.13.0 + core-2.3.2 diff --git a/pom.xml b/pom.xml index 49fe98f7..fa71ce28 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.mustangproject core - 2.13.0 + 2.14.0-SNAPSHOT pom Mustang @@ -20,7 +20,7 @@ scm:git:git://github.com/dexecutor/dependent-tasks-executor.git scm:git:git@github.com:dexecutor/dexecutor.git https://github.com/dexecutor/dependent-tasks-executor - core-2.13.0 + core-2.3.2 diff --git a/validator/pom.xml b/validator/pom.xml index 624640dd..76edee14 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -3,7 +3,7 @@ org.mustangproject core - 2.13.0 + 2.14.0-SNAPSHOT 4.0.0 org.mustangproject @@ -11,7 +11,7 @@ Library to validate e-invoices (ZUGFeRD, Factur-X and Xrechnung) jar - 2.13.0 + 2.14.0-SNAPSHOT @@ -38,7 +38,7 @@ ${project.groupId} library - 2.13.0 + 2.14.0-SNAPSHOT jakarta.xml.bind From 63bc167a1afdaa67fca1c4048ea42e464c08a476 Mon Sep 17 00:00:00 2001 From: jstaerk Date: Thu, 5 Sep 2024 09:06:24 +0200 Subject: [PATCH 31/33] updated description --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fa71ce28..fb1a86cb 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ Mustang-CLI - The Mustang project is a java library to read and write ZUGFeRD meta data inside your invoice PDFs + Mustangproject is a java library and commandline tool to read, validate, write and convert EN16931 e-invoices, e.g. Factur-X and XRechnung (read and writing CII and reading also UBL). http://www.mustangproject.org/ From 958d268cac28b5387ea5da0edb167e68a664280f Mon Sep 17 00:00:00 2001 From: jstaerk Date: Mon, 9 Sep 2024 08:23:28 +0200 Subject: [PATCH 32/33] closing #461, closing #463 --- History.md | 3 + .../java/org/mustangproject/TradeParty.java | 62 +++++++++++++++---- .../ZUGFeRD/IZUGFeRDExportableTradeParty.java | 9 ++- .../ZUGFeRD/ZUGFeRD2PullProvider.java | 6 +- .../mustangproject/ZUGFeRD/ZF2PushTest.java | 22 ++++++- 5 files changed, 84 insertions(+), 18 deletions(-) diff --git a/History.md b/History.md index 321335d9..c37b08ec 100644 --- a/History.md +++ b/History.md @@ -1,3 +1,6 @@ +- 461 +- 463 + 2.13.0 ======= 2024-08-28 diff --git a/library/src/main/java/org/mustangproject/TradeParty.java b/library/src/main/java/org/mustangproject/TradeParty.java index 40922376..b953008c 100644 --- a/library/src/main/java/org/mustangproject/TradeParty.java +++ b/library/src/main/java/org/mustangproject/TradeParty.java @@ -23,6 +23,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { protected String name, zip, street, location, country; protected String taxID = null, vatID = null; protected String ID = null; + protected String description = null; protected String additionalAddress = null; protected String additionalAddressExtension = null; protected List bankDetails = new ArrayList<>(); @@ -66,14 +67,14 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { Node currentItemNode = nodes.item(nodeIndex); if (currentItemNode.getLocalName() != null) { - String debcurrentChild = currentItemNode.getLocalName(); - if (debcurrentChild.equals("Party")) { + String currentUBLChild = currentItemNode.getLocalName(); + if (currentUBLChild.equals("Party")) { NodeList party = currentItemNode.getChildNodes(); for (int partyIndex = 0; partyIndex < party.getLength(); partyIndex++) { if (party.item(partyIndex).getLocalName() != null) { - String debCN = party.item(partyIndex).getLocalName(); - if (debCN.equals("PartyName")) { + String currentTopElementName = party.item(partyIndex).getLocalName(); + if (currentTopElementName.equals("PartyName")) { NodeList partyName = party.item(partyIndex).getChildNodes(); for (int partyNameIndex = 0; partyNameIndex < partyName.getLength(); partyNameIndex++) { @@ -86,7 +87,20 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { } } } - if (debCN.equals("PostalAddress")) { + + // UBL only: formally it can have a name as well but BT27 party name *should* be stored in + // so overwrite if one exists + if (currentTopElementName.equals("PartyLegalEntity")) { + NodeList legal = party.item(partyIndex).getChildNodes(); + for (int legalChildIndex = 0; legalChildIndex < legal.getLength(); legalChildIndex++) { + if (legal.item(legalChildIndex).getLocalName() != null) { + if (legal.item(legalChildIndex).getLocalName().equals("RegistrationName")) { + setName(legal.item(legalChildIndex).getTextContent()); + } + } + } + } + if (currentTopElementName.equals("PostalAddress")) { NodeList postal = party.item(partyIndex).getChildNodes(); for (int postalChildIndex = 0; postalChildIndex < postal.getLength(); postalChildIndex++) { @@ -144,7 +158,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { } } - if (debCN.equals("Contact")) { + if (currentTopElementName.equals("Contact")) { NodeList contact = party.item(partyIndex).getChildNodes(); setContact(new Contact(contact)); @@ -155,19 +169,19 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { } - if (debcurrentChild.equals("GlobalID")) { + if (currentUBLChild.equals("GlobalID")) { if (nodes.item(nodeIndex).getAttributes().getNamedItem("schemeID") != null) { SchemedID gid = new SchemedID().setScheme(nodes.item(nodeIndex).getAttributes().getNamedItem("schemeID").getNodeValue()).setId(nodes.item(nodeIndex).getTextContent()); addGlobalID(gid); } } - if (debcurrentChild.equals("DefinedTradeContact")) { + if (currentUBLChild.equals("DefinedTradeContact")) { NodeList contact = nodes.item(nodeIndex).getChildNodes(); setContact(new Contact(contact)); } - if (debcurrentChild.equals("PostalTradeAddress")) { + if (currentUBLChild.equals("PostalTradeAddress")) { NodeList postal = nodes.item(nodeIndex).getChildNodes(); for (int postalChildIndex = 0; postalChildIndex < postal.getLength(); postalChildIndex++) { if (postal.item(postalChildIndex).getLocalName() != null) { @@ -195,7 +209,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { } - if (debcurrentChild.equals("SpecifiedTaxRegistration")) { + if (currentUBLChild.equals("SpecifiedTaxRegistration")) { NodeList taxChilds = nodes.item(nodeIndex).getChildNodes(); for (int taxChildIndex = 0; taxChildIndex < taxChilds.getLength(); taxChildIndex++) { if (taxChilds.item(taxChildIndex).getLocalName() != null) { @@ -286,8 +300,8 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { for (int nodeIndex = 0; nodeIndex < nodes.getLength(); nodeIndex++) { //nodes.item(i).getTextContent())) { - String debLN = nodes.item(nodeIndex).getLocalName(); - if (debLN.equals("Party")) { + String topElementName = nodes.item(nodeIndex).getLocalName(); + if (topElementName.equals("Party")) { // take one step back and parse from top parseFromUBL(nodes); return; @@ -302,6 +316,10 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { if (itemChilds.item(itemChildIndex).getLocalName().equals("Name")) { setName(itemChilds.item(itemChildIndex).getTextContent()); } + + if (itemChilds.item(itemChildIndex).getLocalName().equals("Description")) { + setDescription(itemChilds.item(itemChildIndex).getTextContent()); + } if (itemChilds.item(itemChildIndex).getLocalName().equals("GlobalID")) { if (itemChilds.item(itemChildIndex).getAttributes().getNamedItem("schemeID") != null) { SchemedID gid = new SchemedID().setScheme(itemChilds.item(itemChildIndex).getAttributes().getNamedItem("schemeID").getNodeValue()).setId(itemChilds.item(itemChildIndex).getTextContent()); @@ -560,6 +578,26 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { } + /*** + * + * @return String the description, e.g. if it's a vat exempt company + */ + public String getDescription() { + return description; + } + + + /*** + * required, usually done in the constructor: the complete name of the organisation + * @param description human readable description + * @return fluent setter + */ + public TradeParty setDescription(String description) { + this.description = description; + return this; + } + + public String getZIP() { return zip; } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTradeParty.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTradeParty.java index 8af10dbb..a9977f01 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTradeParty.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTradeParty.java @@ -112,12 +112,17 @@ public interface IZUGFeRDExportableTradeParty { } /** - * First and last name of the recipient + * e.g. first and last name of the owner * - * @return First and last name of the recipient + * @return full name of the party */ String getName(); + /** + * @return description, e.g. if it's a small company + */ + default String getDescription() { return null; } + /** * Postal code of the recipient * diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index eaefecaa..f98674c4 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -138,8 +138,10 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { + XMLTools.encodeXML(party.getGlobalID()) + ""; } xml += "" + XMLTools.encodeXML(party.getName()) + ""; - - if (party.getLegalOrganisation() != null && (profile == Profiles.getByName("EN16931") || profile == Profiles.getByName("Extended") || profile == Profiles.getByName("XRechnung"))) { + if (party.getDescription() != null) { + xml += "" + XMLTools.encodeXML(party.getDescription()) + ""; + } + if (party.getLegalOrganisation() != null) { xml += " "; if (party.getLegalOrganisation().getSchemedID() != null) { xml += "" + XMLTools.encodeXML(party.getLegalOrganisation().getSchemedID().getID()) + ""; diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index 4235d8df..5156950f 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -60,7 +60,9 @@ public class ZF2PushTest extends TestCase { final String TARGET_REVERSECHARGEPDF = "./target/testout-ZF2PushReverseCharge.pdf"; public void testPushExport() { - + /*** + * This writes to a filename like an official sample, please consider when changing (probably better not?) + */ // the writing part String orgname = "Bei Spiel GmbH"; String number = "RE-20201121/508"; @@ -92,10 +94,14 @@ public class ZF2PushTest extends TestCase { fail("Exception should not be raised"); } + + // now check the contents (like MustangReaderTest) ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF); assertTrue(zi.getUTF8().contains("DE88200800000970375700")); //the iban assertTrue(zi.getUTF8().contains("Max Mustermann")); //account holder + assertTrue(zi.getUTF8().contains("DueDateDateTime")); //account holder + assertTrue(zi.getUTF8().contains("20201212")); //account holder assertTrue(zi.getUTF8().contains(" Date: Tue, 10 Sep 2024 19:12:48 +0200 Subject: [PATCH 33/33] working on #463 --- .../main/java/org/mustangproject/Product.java | 40 +++++++++++++++++ .../ZUGFeRD/TransactionCalculator.java | 4 ++ .../org/mustangproject/ZUGFeRD/VATAmount.java | 45 +++++++++++++------ .../ZUGFeRD/ZUGFeRD2PullProvider.java | 25 ++++++----- .../model/TaxCategoryCodeTypeConstants.java | 2 +- .../mustangproject/ZUGFeRD/ZF2PushTest.java | 8 ++-- 6 files changed, 96 insertions(+), 28 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Product.java b/library/src/main/java/org/mustangproject/Product.java index df5e329f..73e18fd1 100644 --- a/library/src/main/java/org/mustangproject/Product.java +++ b/library/src/main/java/org/mustangproject/Product.java @@ -13,6 +13,8 @@ import java.util.HashMap; public class Product implements IZUGFeRDExportableProduct { protected String unit, name, sellerAssignedID, buyerAssignedID; protected String description=""; + protected String taxExemptionReason=null; + protected String taxCategoryCode=null; protected BigDecimal VATPercent; protected boolean isReverseCharge = false; protected boolean isIntraCommunitySupply = false; @@ -66,6 +68,44 @@ public class Product implements IZUGFeRDExportableProduct { return this; } + /*** + * + * @return e.g. intra-commnunity supply or small business + */ + @Override + public String getTaxExemptionReason() { + return taxExemptionReason; + } + + /*** + * + * @param taxExemptionReasonText String e.g. Kleinunternehmer gemäß §19 UStG https://github.com/ZUGFeRD/mustangproject/issues/463 + * @return + */ + public Product setTaxExemptionReason(String taxExemptionReasonText) { + taxExemptionReason = taxExemptionReasonText; + return this; + } + + /*** + * + * @return e.g. S (normal tax), Z=zero rated, E (e.g. small business) or K (intrra community supply) + */ + @Override + public String getTaxCategoryCode() { + return taxCategoryCode; + } + + /*** + * + * @param code e.g. S (normal tax), Z=zero rated, E (e.g. small business) or K (intrra community supply) see also https://github.com/ZUGFeRD/mustangproject/issues/463 + * @return + */ + public Product setTaxCategoryCode(String code) { + taxCategoryCode = code; + return this; + } + @Override public String getSellerAssignedID() { diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java b/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java index b67e7598..4d9382ea 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java @@ -172,6 +172,10 @@ public class TransactionCalculator implements IAbsoluteValueProvider { LineCalculator lc = new LineCalculator(currentItem); VATAmount itemVATAmount = new VATAmount(lc.getItemTotalNetAmount(), lc.getItemTotalVATAmount(), currentItem.getProduct().getTaxCategoryCode(), vatDueDateTypeCode); + String reasonText=currentItem.getProduct().getTaxExemptionReason(); + if (reasonText!=null) { + itemVATAmount.setVatExemptionReasonText(reasonText); + } VATAmount current = hm.get(percent.stripTrailingZeros()); if (current == null) { hm.put(percent.stripTrailingZeros(), itemVATAmount); diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/VATAmount.java b/library/src/main/java/org/mustangproject/ZUGFeRD/VATAmount.java index a7a82f61..2a7a7920 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/VATAmount.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/VATAmount.java @@ -32,6 +32,16 @@ import java.math.RoundingMode; */ public class VATAmount { + + protected BigDecimal basis, calculated, applicablePercent; + + protected String categoryCode; + + protected String vatExemptionReasonText; + + protected String dueDateTypeCode; + + public VATAmount(BigDecimal basis, BigDecimal calculated, String categoryCode) { super(); this.basis = basis; @@ -48,35 +58,41 @@ public class VATAmount { this.dueDateTypeCode = dueDateTypeCode; } - BigDecimal basis, calculated, applicablePercent; - - String categoryCode; - - String dueDateTypeCode; - public BigDecimal getApplicablePercent() { return applicablePercent; } - public void setApplicablePercent(BigDecimal applicablePercent) { + public VATAmount setApplicablePercent(BigDecimal applicablePercent) { + this.applicablePercent = applicablePercent; + return this; } public BigDecimal getBasis() { return basis; } - public void setBasis(BigDecimal basis) { + public VATAmount setBasis(BigDecimal basis) { this.basis = basis.setScale(2, RoundingMode.HALF_UP); - + return this; } public BigDecimal getCalculated() { return calculated; } - public void setCalculated(BigDecimal calculated) { + public VATAmount setCalculated(BigDecimal calculated) { this.calculated = calculated; + return this; + } + + public String getVatExemptionReasonText() { + return vatExemptionReasonText; + } + + public VATAmount setVatExemptionReasonText(String theText) { + this.vatExemptionReasonText = theText; + return this; } /** @@ -94,24 +110,27 @@ public class VATAmount { * @deprecated Use {@link #setCategoryCode(String)} instead */ @Deprecated - public void setDocumentCode(String documentCode) { + public VATAmount setDocumentCode(String documentCode) { this.categoryCode = documentCode; + return this; } public String getCategoryCode() { return categoryCode; } - public void setCategoryCode(String categoryCode) { + public VATAmount setCategoryCode(String categoryCode) { this.categoryCode = categoryCode; + return this; } public String getDueDateTypeCode() { return dueDateTypeCode; } - public void setDueDateTypeCode(String dueDateTypeCode) { + public VATAmount setDueDateTypeCode(String dueDateTypeCode) { this.dueDateTypeCode = dueDateTypeCode; + return this; } public VATAmount add(VATAmount v) { diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index f98674c4..1b5b0242 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -51,7 +51,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ZUGFeRD2PullProvider implements IXMLProvider { - private static final Logger LOGGER = LoggerFactory.getLogger (ZUGFeRD2PullProvider.class); + private static final Logger LOGGER = LoggerFactory.getLogger(ZUGFeRD2PullProvider.class); protected byte[] zugferdData; protected IExportableTransaction trans; @@ -93,7 +93,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { try { document = DocumentHelper.parseText(new String(zugferdData)); } catch (final DocumentException e1) { - LOGGER.error ("Failed to parse ZUGFeRD data", e1); + LOGGER.error("Failed to parse ZUGFeRD data", e1); } try { final OutputFormat format = OutputFormat.createPrettyPrint(); @@ -103,7 +103,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { res = sw.toString().getBytes(StandardCharsets.UTF_8); } catch (final IOException e) { - LOGGER.error ("Failed to write ZUGFeRD data", e); + LOGGER.error("Failed to write ZUGFeRD data", e); } return res; @@ -325,7 +325,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { paymentTermsDescription += discount.getAsXRechnung(); } } else if ((paymentTermsDescription == null) && (trans.getDocumentCode() != DocumentCodeTypeConstants.CORRECTEDINVOICE) && (trans.getDocumentCode() != DocumentCodeTypeConstants.CREDITNOTE)) { - if ( trans.getDueDate() != null ) { + if (trans.getDueDate() != null) { paymentTermsDescription = "Please remit until " + germanDateFormat.format(trans.getDueDate()); } } @@ -424,7 +424,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { ""; } if (currentItem.getProduct().getAttributes() != null) { - for ( Entry entry : currentItem.getProduct().getAttributes().entrySet() ) { + for (Entry entry : currentItem.getProduct().getAttributes().entrySet()) { xml += "" + "" + XMLTools.encodeXML(entry.getKey()) + "" + "" + XMLTools.encodeXML(entry.getValue()) + "" + @@ -433,8 +433,8 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } if (currentItem.getProduct().getCountryOfOrigin() != null) { xml += "" + - XMLTools.encodeXML(currentItem.getProduct().getCountryOfOrigin()) + - ""; + XMLTools.encodeXML(currentItem.getProduct().getCountryOfOrigin()) + + ""; } xml += "" @@ -654,12 +654,17 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { final String amountDueDateTypeCode = amount.getDueDateTypeCode(); final boolean displayExemptionReason = CATEGORY_CODES_WITH_EXEMPTION_REASON.contains(amountCategoryCode); if (getProfile() != Profiles.getByName("Minimum")) { + String exemptionReasonTextXML = ""; + if ((displayExemptionReason) && (amount.getVatExemptionReasonText() != null)) { + exemptionReasonTextXML = "" + XMLTools.encodeXML(amount.getVatExemptionReasonText()) + ""; + + } xml += "" + "" + currencyFormat(amount.getCalculated()) + "" //currencyID=\"EUR\" + "VAT" - + (displayExemptionReason ? exemptionReason : "") + + exemptionReasonTextXML + "" + currencyFormat(amount.getBasis()) + "" // currencyID=\"EUR\" + "" + amountCategoryCode + "" + (amountDueDateTypeCode != null ? "" + amountDueDateTypeCode + "" : "") @@ -681,7 +686,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { if ((trans.getZFCharges() != null) && (trans.getZFCharges().length > 0)) { if (profile == Profiles.getByName("XRechnung")) { - for(IZUGFeRDAllowanceCharge charge : trans.getZFCharges()) { + for (IZUGFeRDAllowanceCharge charge : trans.getZFCharges()) { xml += "" + "" + "true" + @@ -724,7 +729,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { if ((trans.getZFAllowances() != null) && (trans.getZFAllowances().length > 0)) { if (profile == Profiles.getByName("XRechnung")) { - for(IZUGFeRDAllowanceCharge allowance : trans.getZFAllowances()) { + for (IZUGFeRDAllowanceCharge allowance : trans.getZFAllowances()) { xml += "" + "" + "false" + diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/model/TaxCategoryCodeTypeConstants.java b/library/src/main/java/org/mustangproject/ZUGFeRD/model/TaxCategoryCodeTypeConstants.java index 62badd8c..c400cbbc 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/model/TaxCategoryCodeTypeConstants.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/model/TaxCategoryCodeTypeConstants.java @@ -30,5 +30,5 @@ public class TaxCategoryCodeTypeConstants { public static final String UNTAXEDSERVICE = "O"; public static final String INTRACOMMUNITY = "K"; - public static Set CATEGORY_CODES_WITH_EXEMPTION_REASON = Stream.of(INTRACOMMUNITY, REVERSECHARGE).collect(Collectors.toSet()); + public static Set CATEGORY_CODES_WITH_EXEMPTION_REASON = Stream.of(INTRACOMMUNITY, REVERSECHARGE, TAXEXEMPT).collect(Collectors.toSet()); } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index 5156950f..227383e6 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -125,7 +125,7 @@ public class ZF2PushTest extends TestCase { String number = "123"; String priceStr = "1.00"; - String senderDescription = "Kein Kleinunternehmer"; + String senderDescription = "Kleinunternehmer"; String taxID = "9990815"; BigDecimal price = new BigDecimal(priceStr); try { @@ -144,7 +144,7 @@ public class ZF2PushTest extends TestCase { .setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE4711") .setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE"))) .setNumber(number) - .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, new BigDecimal(1.0))) + .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)).setTaxExemptionReason("Kleinunternehmer gemäß §19 UStG").setTaxCategoryCode("E"), price, new BigDecimal(1.0))) ); String theXML = new String(ze.getProvider().getXML()); assertTrue(theXML.contains("