From 34ee9b6267945fe0b40faf82374675f5cece94da Mon Sep 17 00:00:00 2001 From: jstaerk Date: Sat, 4 Dec 2021 15:25:00 +0100 Subject: [PATCH] corrected profile for order-x --- .../java/org/mustangproject/EStandard.java | 6 ++++ .../ZUGFeRD/OXPullProvider.java | 36 +++++++++++-------- .../org/mustangproject/ZUGFeRD/Profiles.java | 35 +++++++++++++++--- .../org/mustangproject/ZUGFeRD/OXTest.java | 6 +--- 4 files changed, 58 insertions(+), 25 deletions(-) create mode 100644 library/src/main/java/org/mustangproject/EStandard.java diff --git a/library/src/main/java/org/mustangproject/EStandard.java b/library/src/main/java/org/mustangproject/EStandard.java new file mode 100644 index 00000000..69c43648 --- /dev/null +++ b/library/src/main/java/org/mustangproject/EStandard.java @@ -0,0 +1,6 @@ +package org.mustangproject; + +public enum EStandard { + facturx, orderx, zugferd, cii, ubl + +} diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java index efb6f26b..cf3effdc 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/OXPullProvider.java @@ -25,6 +25,7 @@ import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; +import org.mustangproject.EStandard; import org.mustangproject.FileAttachment; import org.mustangproject.XMLTools; @@ -48,10 +49,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider protected IExportableTransaction trans; protected TransactionCalculator calc; private String paymentTermsDescription; - protected Profile profile = Profiles.getByName("EN16931"); - - - + protected Profile profile = Profiles.getByName(EStandard.orderx,"basic", 1); @Override @@ -108,7 +106,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider } String xml = "\n" - +""+testBooleanStr+"\n" // + + "\n" + + "A1\n" + + "\n" + " \n" + " " + getProfile().getID() + "\n" + " \n" @@ -318,9 +319,9 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider if (trans.getSpecifiedProcuringProjectID() != null) { xml = xml + " \n" - + " " - + XMLTools.encodeXML(trans.getSpecifiedProcuringProjectID()) + "\n"; - if(trans.getSpecifiedProcuringProjectName()!= null) { + + " " + + XMLTools.encodeXML(trans.getSpecifiedProcuringProjectID()) + "\n"; + if (trans.getSpecifiedProcuringProjectName() != null) { xml += " " + XMLTools.encodeXML(trans.getSpecifiedProcuringProjectName()) + "\n"; } xml += " \n"; @@ -337,7 +338,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider + " "; if (trans.getDeliveryDate() != null) { - xml += DATE.udtFormat(trans.getDeliveryDate()); + xml += DATE.udtFormat(trans.getDeliveryDate()); } else { throw new IllegalStateException("No delivery date provided"); } @@ -499,10 +500,10 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider xml = xml + " \n" + " " + XMLTools.encodeXML(trans.getInvoiceReferencedDocumentID()) + "\n"; - if(trans.getInvoiceReferencedIssueDate()!= null){ - xml += "" - + DATE.qdtFormat(trans.getInvoiceReferencedIssueDate()) - + "\n"; + if (trans.getInvoiceReferencedIssueDate() != null) { + xml += "" + + DATE.qdtFormat(trans.getInvoiceReferencedIssueDate()) + + "\n"; } xml += " \n"; } @@ -536,6 +537,11 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider profile = p; } + @Override + public Profile getProfile() { + return profile; + } + private String buildPaymentTermsXml() { final IZUGFeRDPaymentTerms paymentTerms = trans.getPaymentTerms(); @@ -553,7 +559,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider paymentTermsXml += "" + paymentTerms.getDescription() + ""; if (dueDate != null) { paymentTermsXml += ""; - paymentTermsXml += DATE.udtFormat(dueDate) ; + paymentTermsXml += DATE.udtFormat(dueDate); paymentTermsXml += ""; } @@ -568,7 +574,7 @@ public class OXPullProvider extends ZUGFeRD2PullProvider implements IXMLProvider if (discountTerms.getBaseDate() != null) { final Date baseDate = discountTerms.getBaseDate(); paymentTermsXml += ""; - paymentTermsXml += DATE.udtFormat(baseDate); + paymentTermsXml += DATE.udtFormat(baseDate); paymentTermsXml += ""; paymentTermsXml += "" diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/Profiles.java b/library/src/main/java/org/mustangproject/ZUGFeRD/Profiles.java index dc0d6e4f..992306c7 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/Profiles.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/Profiles.java @@ -20,6 +20,8 @@ */ package org.mustangproject.ZUGFeRD; +import org.mustangproject.EStandard; + import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -41,18 +43,41 @@ public class Profiles { }).collect(Collectors.toMap(data -> (String) data[0], data -> (Profile) data[1])); + static Map ox1Map = Stream.of(new Object[][]{ + {"BASIC", new Profile("BASIC", "urn:order-x.eu:1p0:basic")}, + {"COMFORT", new Profile("COMFORT", "urn:order-x.eu:1p0:comfort")}, + {"EXTENDED", new Profile("EXTENDED", "urn:order-x.eu:1p0:extended")}, + }).collect(Collectors.toMap(data -> (String) data[0], data -> (Profile) data[1])); + + + public static Profile getByName(EStandard standard, String name, int version) { + if (standard != EStandard.orderx) { + return getByName(name, version); + } else { + Profile result = null; + result = ox1Map.get(name.toUpperCase()); + if (result == null) { + throw new RuntimeException("Profile not found"); + } + return result; + } + } + public static Profile getByName(String name, int version) { - Profile result=null; - if (version==1) { - result=zf1Map.get(name.toUpperCase()); + Profile result = null; + if (version == 1) { + result = zf1Map.get(name.toUpperCase()); } else { - result=zf2Map.get(name.toUpperCase()); + result = zf2Map.get(name.toUpperCase()); + } + if (result == null) { + throw new RuntimeException("Profile not found"); } - if (result==null) { throw new RuntimeException("Profile not found"); } return result; } + public static Profile getByName(String name) { return getByName(name, ZUGFeRDExporterFromA3.DefaultZUGFeRDVersion); } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/OXTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/OXTest.java index f0cd421e..40851918 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/OXTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/OXTest.java @@ -288,11 +288,7 @@ public class OXTest extends MustangReaderTestCase implements IExportableTransact assertEquals("496.00", zi.getAmount()); assertEquals(zi.getHolder(), getOwnOrganisationName()); assertEquals(zi.getForeignReference(), getNumber()); - try { - assertEquals(zi.getVersion(), 2); - } catch (Exception e) { - e.printStackTrace(); - } + }