diff --git a/History.md b/History.md index 9b468cc0..cd1b1502 100644 --- a/History.md +++ b/History.md @@ -1,3 +1,11 @@ +2.1.1 +======= + +- PR #217 seller order referenced document +- PR #218 allow recipient contact in XRechnung thanks to seeeeew +- only deploy library and validator to maven central, not core nor cli +- a correction should reference the original invoice via invoiceReferencedDocument, not buyerOrderReferencedDocument + 2.1.0 ======= 2020-01-19 diff --git a/NOTICE b/NOTICE index 85b08d6a..f37587ae 100644 --- a/NOTICE +++ b/NOTICE @@ -26,4 +26,8 @@ Copyright (c) 2010 Atos Worldline SAS Based on VeraPDF-library https://github.com/veraPDF/veraPDF-library licensed under the MPL 2.0 Based on PH-Schematron https://github.com/phax/ph-schematron licensed under the APL2.0 +Based on CII2UBL https://github.com/phax/en16931-cii2ubl licensed under the APL2.0 Based on https://github.com/itplr-kosit/xrechnung-schematron licensed under the APL2.0 +Based on https://github.com/itplr-kosit/xrechnung-visualization licensed under the APL2.0 +Based on Saxon-HE https://sourceforge.net/projects/saxon/ licensed under the MPL 2.0 +Based on DOM4j https://dom4j.github.io/ licensed under the BSD license diff --git a/library/pom.xml b/library/pom.xml index 318d2223..a88f9c6c 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -48,6 +48,8 @@ 1.8 1.8 1.8 + true + diff --git a/library/src/main/java/org/mustangproject/Invoice.java b/library/src/main/java/org/mustangproject/Invoice.java index 7562f41a..ba4602f8 100644 --- a/library/src/main/java/org/mustangproject/Invoice.java +++ b/library/src/main/java/org/mustangproject/Invoice.java @@ -33,12 +33,13 @@ import java.util.Date; */ public class Invoice implements IExportableTransaction { - protected String documentName = null, documentCode = null, number = null, ownOrganisationFullPlaintextInfo = null, referenceNumber = null, shipToOrganisationID = null, shipToOrganisationName = null, shipToStreet = null, shipToZIP = null, shipToLocation = null, shipToCountry = null, buyerOrderReferencedDocumentID = null, buyerOrderReferencedDocumentIssueDateTime = null, ownForeignOrganisationID = null, ownOrganisationName = null, currency = null, paymentTermDescription = null; + protected String documentName = null, documentCode = null, number = null, ownOrganisationFullPlaintextInfo = null, referenceNumber = null, shipToOrganisationID = null, shipToOrganisationName = null, shipToStreet = null, shipToZIP = null, shipToLocation = null, shipToCountry = null, buyerOrderReferencedDocumentID = null, invoiceReferencedDocumentID = null, buyerOrderReferencedDocumentIssueDateTime = null, ownForeignOrganisationID = null, ownOrganisationName = null, currency = null, paymentTermDescription = null; protected Date issueDate = null, dueDate = null, deliveryDate = null; protected BigDecimal totalPrepaidAmount = null; protected TradeParty sender = null, recipient = null, deliveryAddress = null; protected ArrayList ZFItems = null; protected ArrayList notes = null; + private String sellerOrderReferencedDocumentID; protected String contractReferencedDocument = null; protected ArrayList xmlEmbeddedFiles=null; @@ -50,7 +51,7 @@ public class Invoice implements IExportableTransaction { protected IZUGFeRDPaymentTerms paymentTerms = null; - public Invoice() { + public Invoice() { ZFItems = new ArrayList(); setCurrency("EUR"); } @@ -60,7 +61,8 @@ public class Invoice implements IExportableTransaction { return documentName; } - public String getContractReferencedDocument() { + @Override + public String getContractReferencedDocument() { return contractReferencedDocument; } @@ -81,13 +83,14 @@ public class Invoice implements IExportableTransaction { public Invoice embedFileInXML(FileAttachment fa) { if (xmlEmbeddedFiles == null) { - xmlEmbeddedFiles=new ArrayList(); + xmlEmbeddedFiles= new ArrayList<>(); } xmlEmbeddedFiles.add(fa); return this; } - public FileAttachment[] getAdditionalReferencedDocuments() { + @Override + public FileAttachment[] getAdditionalReferencedDocuments() { if (xmlEmbeddedFiles == null) { return null; } @@ -115,7 +118,7 @@ public class Invoice implements IExportableTransaction { * @return this object (fluent setter) */ public Invoice setCorrection(String number) { - setBuyerOrderReferencedDocumentID(number); + setInvoiceReferencedDocumentID(number); documentCode = DocumentCodeTypeConstants.CORRECTEDINVOICE; return this; } @@ -209,9 +212,18 @@ public class Invoice implements IExportableTransaction { public String getBuyerOrderReferencedDocumentID() { return buyerOrderReferencedDocumentID; } + @Override + public String getSellerOrderReferencedDocumentID() { + return sellerOrderReferencedDocumentID; + } + + public Invoice setSellerOrderReferencedDocumentID(String sellerOrderReferencedDocumentID) { + this.sellerOrderReferencedDocumentID = sellerOrderReferencedDocumentID; + return this; + } /*** - * usually the order number or in case of a correction the original invoice number + * usually the order number * @param buyerOrderReferencedDocumentID string with number * @return fluent setter */ @@ -220,6 +232,20 @@ public class Invoice implements IExportableTransaction { return this; } + /*** + * usually in case of a correction the original invoice number + * @param invoiceReferencedDocumentID string with number + * @return fluent setter + */ + public Invoice setInvoiceReferencedDocumentID(String invoiceReferencedDocumentID) { + this.invoiceReferencedDocumentID = invoiceReferencedDocumentID; + return this; + } + @Override + public String getInvoiceReferencedDocumentID() { + return invoiceReferencedDocumentID; + } + @Override public String getBuyerOrderReferencedDocumentIssueDateTime() { return buyerOrderReferencedDocumentIssueDateTime; @@ -310,12 +336,14 @@ public class Invoice implements IExportableTransaction { } - public String getOwnLocation() { + @Override + public String getOwnLocation() { return sender.getLocation(); } - public String getOwnCountry() { + @Override + public String getOwnCountry() { return sender.getCountry(); } @@ -405,7 +433,8 @@ public class Invoice implements IExportableTransaction { return this; } - public IZUGFeRDExportableTradeParty getRecipient() { + @Override + public IZUGFeRDExportableTradeParty getRecipient() { return recipient; } @@ -439,8 +468,9 @@ public class Invoice implements IExportableTransaction { public IZUGFeRDAllowanceCharge[] getZFAllowances() { if (Allowances.isEmpty()) { return null; - } else - return Allowances.toArray(new IZUGFeRDAllowanceCharge[0]); + } else { + return Allowances.toArray(new IZUGFeRDAllowanceCharge[0]); + } } @@ -448,8 +478,9 @@ public class Invoice implements IExportableTransaction { public IZUGFeRDAllowanceCharge[] getZFCharges() { if (Charges.isEmpty()) { return null; - } else - return Charges.toArray(new IZUGFeRDAllowanceCharge[0]); + } else { + return Charges.toArray(new IZUGFeRDAllowanceCharge[0]); + } } @@ -457,8 +488,9 @@ public class Invoice implements IExportableTransaction { public IZUGFeRDAllowanceCharge[] getZFLogisticsServiceCharges() { if (LogisticsServiceCharges.isEmpty()) { return null; - } else - return LogisticsServiceCharges.toArray(new IZUGFeRDAllowanceCharge[0]); + } else { + return LogisticsServiceCharges.toArray(new IZUGFeRDAllowanceCharge[0]); + } } @@ -599,7 +631,7 @@ public class Invoice implements IExportableTransaction { */ public Invoice addNote(String text) { if (notes == null) { - notes = new ArrayList(); + notes = new ArrayList<>(); } notes.add(text); return this; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java index 70fa9e50..8f1f12c3 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IExportableTransaction.java @@ -398,6 +398,14 @@ public interface IExportableTransaction { } + /** + * get the ID of the SellerOrderReferencedDocument, which sits in the ApplicableSupplyChainTradeAgreement/ApplicableHeaderTradeAgreement + * + * @return the ID of the document + */ + default String getSellerOrderReferencedDocumentID() { + return null; + } /** * get the ID of the BuyerOrderReferencedDocument, which sits in the ApplicableSupplyChainTradeAgreement * @@ -407,6 +415,14 @@ public interface IExportableTransaction { return null; } + /** + * get the ID of the prceding invoice, which is e.g. to be corrected if this is a correction + * + * @return the ID of the document + */ + default String getInvoiceReferencedDocumentID() { + return null; + } /** * get the issue timestamp of the BuyerOrderReferencedDocument, which sits in the ApplicableSupplyChainTradeAgreement diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java index 65561315..0bc6a335 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java @@ -63,7 +63,7 @@ public interface IZUGFeRDTradeSettlementPayment extends IZUGFeRDTradeSettlement default String getSettlementXML() { String accountNameStr=""; if (getAccountName()!=null) { - accountNameStr="" + XMLTools.encodeXML(getAccountName()) + "\n"; //$NON-NLS-2$ + accountNameStr="" + XMLTools.encodeXML(getAccountName()) + "\n"; } @@ -71,13 +71,13 @@ public interface IZUGFeRDTradeSettlementPayment extends IZUGFeRDTradeSettlement + " 42\n" + " Bank transfer\n" + " \n" - + " " + XMLTools.encodeXML(getOwnIBAN()) + "\n"; //$NON-NLS-2$ + + " " + XMLTools.encodeXML(getOwnIBAN()) + "\n"; xml+= accountNameStr; xml+= " \n" + " \n" - + " " + XMLTools.encodeXML(getOwnBIC()) + "\n" //$NON-NLS-2$ + + " " + XMLTools.encodeXML(getOwnBIC()) + "\n" // + " "+trans.getOwnBankName()+"\n" - // //$NON-NLS-2$ + // + " \n" + " \n"; return xml; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java index 2a55d93b..8e035e4b 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java @@ -20,13 +20,6 @@ */ package org.mustangproject.ZUGFeRD; -import org.dom4j.Document; -import org.dom4j.DocumentException; -import org.dom4j.DocumentHelper; -import org.dom4j.io.OutputFormat; -import org.dom4j.io.XMLWriter; -import org.mustangproject.XMLTools; - import java.io.IOException; import java.io.StringWriter; import java.io.UnsupportedEncodingException; @@ -37,6 +30,13 @@ import java.util.HashMap; import java.util.logging.Level; import java.util.logging.Logger; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.io.OutputFormat; +import org.dom4j.io.XMLWriter; +import org.mustangproject.XMLTools; + public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLProvider { @@ -82,20 +82,20 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr byte[] res = zugferdData; - StringWriter sw = new StringWriter(); + final StringWriter sw = new StringWriter(); Document document = null; try { document = DocumentHelper.parseText(new String(zugferdData)); - } catch (DocumentException e1) { + } catch (final DocumentException e1) { Logger.getLogger(ZUGFeRD1PullProvider.class.getName()).log(Level.SEVERE, null, e1); } try { - OutputFormat format = OutputFormat.createPrettyPrint(); - XMLWriter writer = new XMLWriter(sw, format); + final OutputFormat format = OutputFormat.createPrettyPrint(); + final XMLWriter writer = new XMLWriter(sw, format); writer.write(document); res = sw.toString().getBytes("UTF-8"); - } catch (IOException e) { + } catch (final IOException e) { Logger.getLogger(ZUGFeRD1PullProvider.class.getName()).log(Level.SEVERE, null, e); } @@ -110,7 +110,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr this.calc = new TransactionCalculator(trans); boolean hasDueDate = false; - SimpleDateFormat germanDateFormat = new SimpleDateFormat("dd.MM.yyyy"); + final SimpleDateFormat germanDateFormat = new SimpleDateFormat("dd.MM.yyyy"); String exemptionReason = ""; if (trans.getPaymentTermDescription() != null) { @@ -164,7 +164,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr + " \n" + " \n" + " \n" - + " " + XMLTools.encodeXML(trans.getNumber()) + "\n" //$NON-NLS-2$ + + " " + XMLTools.encodeXML(trans.getNumber()) + "\n" + " RECHNUNG\n" + " " + typecode + "\n" + " " @@ -199,6 +199,12 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr xml += " \n"; + if (trans.getSellerOrderReferencedDocumentID() != null) { + xml = xml + " \n" + + " " + + XMLTools.encodeXML(trans.getSellerOrderReferencedDocumentID()) + "\n" + + " \n"; + } if (trans.getBuyerOrderReferencedDocumentID() != null) { xml = xml + " \n" + " " @@ -230,12 +236,12 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr * " 2013-51112\n" + * " \n" */ - + " \n" + " \n" //$NON-NLS-2$ - + " " + XMLTools.encodeXML(trans.getNumber()) + "\n" //$NON-NLS-2$ + + " \n" + " \n" + + " " + XMLTools.encodeXML(trans.getNumber()) + "\n" + " " + trans.getCurrency() + "\n"; if (trans.getTradeSettlementPayment() != null) { - for (IZUGFeRDTradeSettlementPayment payment : trans.getTradeSettlementPayment()) { + for (final IZUGFeRDTradeSettlementPayment payment : trans.getTradeSettlementPayment()) { if (payment != null) { hasDueDate = true; xml += payment.getSettlementXML(); @@ -243,7 +249,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr } } if (trans.getTradeSettlement() != null) { - for (IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) { + for (final IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) { if (payment != null) { if (payment instanceof IZUGFeRDTradeSettlementPayment) { hasDueDate = true; @@ -253,9 +259,9 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr } } - HashMap VATPercentAmountMap = calc.getVATPercentAmountMap(); - for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { - VATAmount amount = VATPercentAmountMap.get(currentTaxPercent); + final HashMap VATPercentAmountMap = calc.getVATPercentAmountMap(); + for (final BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { + final VATAmount amount = VATPercentAmountMap.get(currentTaxPercent); if (amount != null) { xml += " \n" + " " + currencyFormat(amount.getCalculated()) @@ -265,7 +271,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr + " " + currencyFormat(amount.getBasis()) + "\n" // currencyID=\"EUR\" + " " + amount.getCategoryCode() + "\n" + " " + vatFormat(currentTaxPercent) - + "\n" + " \n"; //$NON-NLS-2$ + + "\n" + " \n"; } } @@ -275,7 +281,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr + " " + paymentTermsDescription + "\n"; if (trans.getTradeSettlement() != null) { - for (IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) { + for (final IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) { if ((payment != null) && (payment instanceof IZUGFeRDTradeSettlementDebit)) { xml += payment.getPaymentXML(); } @@ -294,23 +300,23 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr } xml = xml + " \n" - + " " + currencyFormat(calc.getTotal()) + "\n" //$NON-NLS-2$ + + " " + currencyFormat(calc.getTotal()) + "\n" // currencyID=\"EUR\" + " 0.00\n" // currencyID=\"EUR\" + " 0.00\n" // // currencyID=\"EUR\" // + " 5.80\n" // + " 14.73\n" - + " " + currencyFormat(calc.getTotal()) + "\n" //$NON-NLS-2$ + + " " + currencyFormat(calc.getTotal()) + "\n" // // // currencyID=\"EUR\" + " " + currencyFormat(calc.getGrandTotal().subtract(calc.getTotal())) + "\n" - + " " + currencyFormat(calc.getGrandTotal()) + "\n" //$NON-NLS-2$ + + " " + currencyFormat(calc.getGrandTotal()) + "\n" // // // currencyID=\"EUR\" + " " + currencyFormat(calc.getTotalPrepaid()) + "\n" - + " " + currencyFormat(calc.getGrandTotal().subtract(calc.getTotalPrepaid())) + "\n" //$NON-NLS-2$ + + " " + currencyFormat(calc.getGrandTotal().subtract(calc.getTotalPrepaid())) + "\n" // // // currencyID=\"EUR\" + " \n" @@ -318,17 +324,17 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr int lineID = 0; - for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) { + for (final IZUGFeRDExportableItem currentItem : trans.getZFItems()) { lineID++; if (currentItem.getProduct().getTaxExemptionReason() != null) { exemptionReason = "" + XMLTools.encodeXML(currentItem.getProduct().getTaxExemptionReason()) + ""; } - LineCalculator lc = new LineCalculator(currentItem); + final LineCalculator lc = new LineCalculator(currentItem); xml = xml + " \n" + " \n" - + " " + lineID + "\n" //$NON-NLS-2$ + + " " + lineID + "\n" + " \n" + " \n" + " \n" @@ -352,7 +358,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr + " \n" - + " " //$NON-NLS-2$ + + " " + quantityFormat(currentItem.getQuantity()) + "\n" + " \n" + " \n" @@ -383,7 +389,7 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr xml = xml + " " + XMLTools.encodeXML(currentItem.getProduct().getBuyerAssignedID()) + "\n"; } - xml = xml + " " + XMLTools.encodeXML(currentItem.getProduct().getName()) + "\n" //$NON-NLS-2$ + xml = xml + " " + XMLTools.encodeXML(currentItem.getProduct().getName()) + "\n" + " " + XMLTools.encodeXML(currentItem.getProduct().getDescription()) + "\n" + " \n" @@ -404,11 +410,11 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr xml = xml + " \n" + ""; - byte[] zugferdRaw; + final byte[] zugferdRaw; try { zugferdRaw = xml.getBytes("UTF-8"); zugferdData = XMLTools.removeBOM(zugferdRaw); - } catch (UnsupportedEncodingException e) { + } catch (final UnsupportedEncodingException e) { Logger.getLogger(ZUGFeRD1PullProvider.class.getName()).log(Level.SEVERE, null, e); } } @@ -421,9 +427,9 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr private String buildPaymentTermsXml() { String paymentTermsXml = ""; - IZUGFeRDPaymentTerms paymentTerms = trans.getPaymentTerms(); - IZUGFeRDPaymentDiscountTerms discountTerms = paymentTerms.getDiscountTerms(); - Date dueDate = paymentTerms.getDueDate(); + final IZUGFeRDPaymentTerms paymentTerms = trans.getPaymentTerms(); + final IZUGFeRDPaymentDiscountTerms discountTerms = paymentTerms.getDiscountTerms(); + final Date dueDate = paymentTerms.getDueDate(); if (dueDate != null && discountTerms != null && discountTerms.getBaseDate() != null) { throw new IllegalStateException( "if paymentTerms.dueDate is specified, paymentTerms.discountTerms.baseDate has not to be specified"); @@ -438,14 +444,14 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider implements IXMLPr if (discountTerms != null) { paymentTermsXml += ""; - String currency = trans.getCurrency(); - String basisAmount = currencyFormat(calc.getGrandTotal()); + final String currency = trans.getCurrency(); + final String basisAmount = currencyFormat(calc.getGrandTotal()); paymentTermsXml += "" + basisAmount + ""; paymentTermsXml += "" + discountTerms.getCalculationPercentage().toString() + ""; if (discountTerms.getBaseDate() != null) { - Date baseDate = discountTerms.getBaseDate(); + final Date baseDate = discountTerms.getBaseDate(); paymentTermsXml += ""; paymentTermsXml += "" + zugferdDateFormat.format(baseDate) + ""; paymentTermsXml += ""; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index 0e937e3d..1041b67f 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -20,17 +20,18 @@ */ package org.mustangproject.ZUGFeRD; +import static org.mustangproject.ZUGFeRD.model.DocumentCodeTypeConstants.CORRECTEDINVOICE; + import java.io.IOException; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; -import java.math.RoundingMode; import java.text.SimpleDateFormat; +import java.util.Base64; import java.util.Date; import java.util.HashMap; import java.util.logging.Level; import java.util.logging.Logger; -import java.util.Base64; import org.dom4j.Document; import org.dom4j.DocumentException; @@ -39,9 +40,6 @@ import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; import org.mustangproject.FileAttachment; import org.mustangproject.XMLTools; -import org.mustangproject.ZUGFeRD.model.DocumentCodeTypeConstants; - -import static org.mustangproject.ZUGFeRD.model.DocumentCodeTypeConstants.CORRECTEDINVOICE; public class ZUGFeRD2PullProvider implements IXMLProvider { @@ -82,20 +80,20 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { byte[] res = zugferdData; - StringWriter sw = new StringWriter(); + final StringWriter sw = new StringWriter(); Document document = null; try { document = DocumentHelper.parseText(new String(zugferdData)); - } catch (DocumentException e1) { + } catch (final DocumentException e1) { Logger.getLogger(ZUGFeRD2PullProvider.class.getName()).log(Level.SEVERE, null, e1); } try { - OutputFormat format = OutputFormat.createPrettyPrint(); - XMLWriter writer = new XMLWriter(sw, format); + final OutputFormat format = OutputFormat.createPrettyPrint(); + final XMLWriter writer = new XMLWriter(sw, format); writer.write(document); res = sw.toString().getBytes("UTF-8"); - } catch (IOException e) { + } catch (final IOException e) { Logger.getLogger(ZUGFeRD2PullProvider.class.getName()).log(Level.SEVERE, null, e); } @@ -129,9 +127,9 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { xml = xml + " " + XMLTools.encodeXML(party.getGlobalID()) + "\n"; } - xml += " " + XMLTools.encodeXML(party.getName()) + "\n"; //$NON-NLS-2$ + xml += " " + XMLTools.encodeXML(party.getName()) + "\n"; - if ((party.getContact() != null) && (isSender || profile == Profiles.getByName("Extended"))) { + if ((party.getContact() != null) && (isSender || profile == Profiles.getByName("Extended") || profile == Profiles.getByName("XRechnung"))) { xml = xml + "\n" + " " + XMLTools.encodeXML(party.getContact().getName()) + "\n"; if (party.getContact().getPhone() != null) { @@ -210,7 +208,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { // only in extended profile reason = "" + XMLTools.encodeXML(allowance.getReason()) + ""; } - String allowanceChargeStr = "" + + final String allowanceChargeStr = "" + chargeIndicator + "" + percentage + "" + priceFormat(allowance.getTotalAmount(item)) + "" + reason + @@ -224,7 +222,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { this.calc = new TransactionCalculator(trans); boolean hasDueDate = false; - SimpleDateFormat germanDateFormat = new SimpleDateFormat("dd.MM.yyyy"); + final SimpleDateFormat germanDateFormat = new SimpleDateFormat("dd.MM.yyyy"); String exemptionReason = ""; @@ -265,7 +263,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } String notes = ""; if (trans.getNotes() != null) { - for (String currentNote : trans.getNotes()) { + for (final String currentNote : trans.getNotes()) { notes = notes + "" + XMLTools.encodeXML(currentNote) + ""; } @@ -287,7 +285,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { + " \n" + " \n" + " \n" - + " " + XMLTools.encodeXML(trans.getNumber()) + "\n" //$NON-NLS-2$ + + " " + XMLTools.encodeXML(trans.getNumber()) + "\n" // + " RECHNUNG\n" // + " 380\n" + " " + typecode + "\n" @@ -301,22 +299,22 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { + " \n" + " \n"; int lineID = 0; - for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) { + for (final IZUGFeRDExportableItem currentItem : trans.getZFItems()) { lineID++; if (currentItem.getProduct().getTaxExemptionReason() != null) { exemptionReason = "" + XMLTools.encodeXML(currentItem.getProduct().getTaxExemptionReason()) + ""; } notes = ""; if (currentItem.getNotes() != null) { - for (String currentNote : currentItem.getNotes()) { + for (final String currentNote : currentItem.getNotes()) { notes = notes + "" + XMLTools.encodeXML(currentNote) + ""; } } - LineCalculator lc = new LineCalculator(currentItem); + final LineCalculator lc = new LineCalculator(currentItem); xml = xml + " \n" + " \n" - + " " + lineID + "\n" //$NON-NLS-2$ + + " " + lineID + "\n" + notes + " \n" @@ -332,19 +330,19 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } String allowanceChargeStr = ""; if (currentItem.getItemAllowances() != null && currentItem.getItemAllowances().length > 0) { - for (IZUGFeRDAllowanceCharge allowance : currentItem.getItemAllowances()) { + for (final IZUGFeRDAllowanceCharge allowance : currentItem.getItemAllowances()) { allowanceChargeStr += getAllowanceChargeStr(allowance, currentItem); } } if (currentItem.getItemCharges() != null && currentItem.getItemCharges().length > 0) { - for (IZUGFeRDAllowanceCharge charge : currentItem.getItemCharges()) { + for (final IZUGFeRDAllowanceCharge charge : currentItem.getItemCharges()) { allowanceChargeStr += getAllowanceChargeStr(charge, currentItem); } } - xml = xml + " " + XMLTools.encodeXML(currentItem.getProduct().getName()) + "\n" //$NON-NLS-2$ + xml = xml + " " + XMLTools.encodeXML(currentItem.getProduct().getName()) + "\n" + " " + XMLTools.encodeXML(currentItem.getProduct().getDescription()) + "\n" + " \n" @@ -371,7 +369,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { + " \n" + " \n" - + " " //$NON-NLS-2$ + + " " + quantityFormat(currentItem.getQuantity()) + "\n" + " \n" + " \n" @@ -423,6 +421,12 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { xml += getTradePartyAsXML(trans.getRecipient(), false, false); xml += " \n"; + if (trans.getSellerOrderReferencedDocumentID() != null) { + xml = xml + " \n" + + " " + + XMLTools.encodeXML(trans.getSellerOrderReferencedDocumentID()) + "\n" + + " \n"; + } if (trans.getBuyerOrderReferencedDocumentID() != null) { xml = xml + " \n" + " " @@ -438,7 +442,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { // Additional Documents of XRechnung (Rechnungsbegruendende Unterlagen - BG-24 XRechnung) if (trans.getAdditionalReferencedDocuments() != null) { - for (FileAttachment f : trans.getAdditionalReferencedDocuments()) { + for (final FileAttachment f : trans.getAdditionalReferencedDocuments()) { final String documentContent = new String(Base64.getEncoder().encodeToString(f.getData())); xml = xml + " \n" + " " + f.getFilename() + "\n" @@ -475,12 +479,12 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { * " 2013-51112\n" + * " \n" */ - + " \n" + " \n" //$NON-NLS-2$ - + " " + XMLTools.encodeXML(trans.getNumber()) + "\n" //$NON-NLS-2$ + + " \n" + " \n" + + " " + XMLTools.encodeXML(trans.getNumber()) + "\n" + " " + trans.getCurrency() + "\n"; if (trans.getTradeSettlementPayment() != null) { - for (IZUGFeRDTradeSettlementPayment payment : trans.getTradeSettlementPayment()) { + for (final IZUGFeRDTradeSettlementPayment payment : trans.getTradeSettlementPayment()) { if (payment != null) { hasDueDate = true; xml += payment.getSettlementXML(); @@ -488,7 +492,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } } if (trans.getTradeSettlement() != null) { - for (IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) { + for (final IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) { if (payment != null) { if (payment instanceof IZUGFeRDTradeSettlementPayment) { hasDueDate = true; @@ -501,9 +505,9 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { hasDueDate = false; } - HashMap VATPercentAmountMap = calc.getVATPercentAmountMap(); - for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { - VATAmount amount = VATPercentAmountMap.get(currentTaxPercent); + final HashMap VATPercentAmountMap = calc.getVATPercentAmountMap(); + for (final BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { + final VATAmount amount = VATPercentAmountMap.get(currentTaxPercent); if (amount != null) { xml += " \n" + " " + currencyFormat(amount.getCalculated()) @@ -513,7 +517,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { + " " + currencyFormat(amount.getBasis()) + "\n" // currencyID=\"EUR\" + " " + amount.getCategoryCode() + "\n" + " " + vatFormat(currentTaxPercent) - + "\n" + " \n"; //$NON-NLS-2$ + + "\n" + " \n"; } } @@ -532,7 +536,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { if ((trans.getZFCharges() != null) && (trans.getZFCharges().length > 0)) { - for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { + for (final BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { if (calc.getChargesForPercent(currentTaxPercent).compareTo(BigDecimal.ZERO) != 0) { @@ -555,7 +559,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } if ((trans.getZFAllowances() != null) && (trans.getZFAllowances().length > 0)) { - for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { + for (final BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { if (calc.getAllowancesForPercent(currentTaxPercent).compareTo(BigDecimal.ZERO) != 0) { xml = xml + " \n" + " \n" + @@ -574,15 +578,15 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } - if ((trans.getPaymentTerms() == null)&&((paymentTermsDescription!=null)||(trans.getTradeSettlement()!=null)||(hasDueDate))) { + if ((trans.getPaymentTerms() == null) && ((paymentTermsDescription != null) || (trans.getTradeSettlement() != null) || (hasDueDate))) { xml = xml + "\n"; - if (paymentTermsDescription!=null) { + if (paymentTermsDescription != null) { xml = xml + "" + paymentTermsDescription + "\n"; } if (trans.getTradeSettlement() != null) { - for (IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) { + for (final IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) { if ((payment != null) && (payment instanceof IZUGFeRDTradeSettlementDebit)) { xml += payment.getPaymentXML(); } @@ -601,28 +605,33 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } - String allowanceTotalLine = "" + currencyFormat(calc.getAllowancesForPercent(null)) + ""; + final String allowanceTotalLine = "" + currencyFormat(calc.getAllowancesForPercent(null)) + ""; - String chargesTotalLine = "" + currencyFormat(calc.getChargesForPercent(null)) + ""; + final String chargesTotalLine = "" + currencyFormat(calc.getChargesForPercent(null)) + ""; xml = xml + " \n" - + " " + currencyFormat(calc.getTotal()) + "\n" //$NON-NLS-2$ + + " " + currencyFormat(calc.getTotal()) + "\n" + chargesTotalLine + allowanceTotalLine - + " " + currencyFormat(calc.getTaxBasis()) + "\n" //$NON-NLS-2$ + + " " + currencyFormat(calc.getTaxBasis()) + "\n" // // // currencyID=\"EUR\" + " " - + currencyFormat(calc.getGrandTotal().subtract(calc.getTaxBasis()))+ "\n" - + " " + currencyFormat(calc.getGrandTotal()) + "\n" //$NON-NLS-2$ + + currencyFormat(calc.getGrandTotal().subtract(calc.getTaxBasis())) + "\n" + + " " + currencyFormat(calc.getGrandTotal()) + "\n" // // // currencyID=\"EUR\" + " " + currencyFormat(calc.getTotalPrepaid()) + "\n" - + " " + currencyFormat(calc.getGrandTotal().subtract(calc.getTotalPrepaid())) + "\n" //$NON-NLS-2$ - // // - // currencyID=\"EUR\" - + " \n" - + " \n"; + + " " + currencyFormat(calc.getGrandTotal().subtract(calc.getTotalPrepaid())) + "\n" + + " \n"; + if (trans.getInvoiceReferencedDocumentID() != null) { + xml = xml + " \n" + + " " + + XMLTools.encodeXML(trans.getInvoiceReferencedDocumentID()) + "\n" + + " \n"; + } + + xml = xml + " \n"; // + " \n" // + " \n" // + " \n" @@ -635,12 +644,12 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { xml = xml + " \n" + ""; - byte[] zugferdRaw; + final byte[] zugferdRaw; try { zugferdRaw = xml.getBytes("UTF-8"); zugferdData = XMLTools.removeBOM(zugferdRaw); - } catch (UnsupportedEncodingException e) { + } catch (final UnsupportedEncodingException e) { Logger.getLogger(ZUGFeRD2PullProvider.class.getName()).log(Level.SEVERE, null, e); } } @@ -652,14 +661,14 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { private String buildPaymentTermsXml() { - IZUGFeRDPaymentTerms paymentTerms = trans.getPaymentTerms(); - if (paymentTerms==null) { + final IZUGFeRDPaymentTerms paymentTerms = trans.getPaymentTerms(); + if (paymentTerms == null) { return ""; } String paymentTermsXml = ""; - IZUGFeRDPaymentDiscountTerms discountTerms = paymentTerms.getDiscountTerms(); - Date dueDate = paymentTerms.getDueDate(); + final IZUGFeRDPaymentDiscountTerms discountTerms = paymentTerms.getDiscountTerms(); + final Date dueDate = paymentTerms.getDueDate(); if (dueDate != null && discountTerms != null && discountTerms.getBaseDate() != null) { throw new IllegalStateException( "if paymentTerms.dueDate is specified, paymentTerms.discountTerms.baseDate has not to be specified"); @@ -674,14 +683,14 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { if (discountTerms != null) { paymentTermsXml += ""; - String currency = trans.getCurrency(); - String basisAmount = currencyFormat(calc.getGrandTotal()); + final String currency = trans.getCurrency(); + final String basisAmount = currencyFormat(calc.getGrandTotal()); paymentTermsXml += "" + basisAmount + ""; paymentTermsXml += "" + discountTerms.getCalculationPercentage().toString() + ""; if (discountTerms.getBaseDate() != null) { - Date baseDate = discountTerms.getBaseDate(); + final Date baseDate = discountTerms.getBaseDate(); paymentTermsXml += ""; paymentTermsXml += "" + zugferdDateFormat.format(baseDate) + ""; paymentTermsXml += ""; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java index c66ae41b..5c546aa5 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java @@ -21,23 +21,31 @@ import java.math.BigDecimal; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Scanner; import java.util.logging.Level; import java.util.logging.Logger; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; -import javax.xml.xpath.*; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpression; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFactory; -import org.mustangproject.Item; -import org.mustangproject.Product; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary; import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode; import org.apache.pdfbox.pdmodel.common.PDNameTreeNode; import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification; import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile; +import org.mustangproject.Item; +import org.mustangproject.Product; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -74,7 +82,7 @@ public class ZUGFeRDImporter { public ZUGFeRDImporter(String pdfFilename) { try (InputStream bis = Files.newInputStream(Paths.get(pdfFilename), StandardOpenOption.READ)) { extractLowLevel(bis); - } catch (IOException e) { + } catch (final IOException e) { Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e); throw new ZUGFeRDExportException(e); } @@ -84,7 +92,7 @@ public class ZUGFeRDImporter { public ZUGFeRDImporter(InputStream pdfStream) { try { extractLowLevel(pdfStream); - } catch (IOException e) { + } catch (final IOException e) { Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e); throw new ZUGFeRDExportException(e); } @@ -99,7 +107,7 @@ public class ZUGFeRDImporter { private void extractLowLevel(InputStream pdfStream) throws IOException { try (PDDocument doc = PDDocument.load(pdfStream)) { // PDDocumentInformation info = doc.getDocumentInformation(); - PDDocumentNameDictionary names = new PDDocumentNameDictionary(doc.getDocumentCatalog()); + final PDDocumentNameDictionary names = new PDDocumentNameDictionary(doc.getDocumentCatalog()); //start if (doc.getDocumentCatalog() == null || doc.getDocumentCatalog().getMetadata() == null) { @@ -107,15 +115,15 @@ public class ZUGFeRDImporter { return; } - InputStream XMP = doc.getDocumentCatalog().getMetadata().exportXMPMetadata(); + final InputStream XMP = doc.getDocumentCatalog().getMetadata().exportXMPMetadata(); xmpString = convertStreamToString(XMP); - PDEmbeddedFilesNameTreeNode etn = names.getEmbeddedFiles(); + final PDEmbeddedFilesNameTreeNode etn = names.getEmbeddedFiles(); if (etn == null) { return; } - Map efMap = etn.getNames(); + final Map efMap = etn.getNames(); // String filePath = "/tmp/"; if (efMap != null) { @@ -123,9 +131,9 @@ public class ZUGFeRDImporter { // https://memorynotfound.com/apache-pdfbox-extract-embedded-file-pdf-document/ } else { - List> kids = etn.getKids(); - for (PDNameTreeNode node : kids) { - Map namesL = node.getNames(); + final List> kids = etn.getKids(); + for (final PDNameTreeNode node : kids) { + final Map namesL = node.getNames(); extractFiles(namesL); } } @@ -134,17 +142,17 @@ public class ZUGFeRDImporter { private void extractFiles(Map names) throws IOException { - for (String alias : names.keySet()) { + for (final String alias : names.keySet()) { - PDComplexFileSpecification fileSpec = names.get(alias); - String filename = fileSpec.getFilename(); + final PDComplexFileSpecification fileSpec = names.get(alias); + final String filename = fileSpec.getFilename(); /** * filenames for invoice data (ZUGFeRD v1 and v2, Factur-X) */ if ((filename.equals("ZUGFeRD-invoice.xml") || (filename.equals("zugferd-invoice.xml")) || filename.equals("factur-x.xml")) || filename.equals("xrechnung.xml") || filename.equals("order-x.xml")) { containsMeta = true; - PDEmbeddedFile embeddedFile = fileSpec.getEmbeddedFile(); + final PDEmbeddedFile embeddedFile = fileSpec.getEmbeddedFile(); // String embeddedFilename = filePath + filename; // File file = new File(filePath + filename); // System.out.println("Writing " + embeddedFilename); @@ -158,7 +166,7 @@ public class ZUGFeRDImporter { // fos.close(); } if (filename.startsWith("additional_data")) { - PDEmbeddedFile embeddedFile = fileSpec.getEmbeddedFile(); + final PDEmbeddedFile embeddedFile = fileSpec.getEmbeddedFile(); additionalXMLs.put(filename, embeddedFile.toByteArray()); } } @@ -171,10 +179,10 @@ public class ZUGFeRDImporter { private void setDocument() throws ParserConfigurationException, IOException, SAXException { - DocumentBuilderFactory xmlFact = DocumentBuilderFactory.newInstance(); + final DocumentBuilderFactory xmlFact = DocumentBuilderFactory.newInstance(); xmlFact.setNamespaceAware(false); - DocumentBuilder builder = xmlFact.newDocumentBuilder(); - ByteArrayInputStream is = new ByteArrayInputStream(rawXML); + final DocumentBuilder builder = xmlFact.newDocumentBuilder(); + final ByteArrayInputStream is = new ByteArrayInputStream(rawXML); /// is.skip(guessBOMSize(is)); document = builder.parse(is); } @@ -197,13 +205,13 @@ public class ZUGFeRDImporter { if (!containsMeta) { throw new ZUGFeRDExportException("No suitable data/ZUGFeRD file could be found."); } - String result; + final String result; try { - Document document = getDocument(); - XPathFactory xpathFact = XPathFactory.newInstance(); - XPath xpath = xpathFact.newXPath(); + final Document document = getDocument(); + final XPathFactory xpathFact = XPathFactory.newInstance(); + final XPath xpath = xpathFact.newXPath(); result = xpath.evaluate(xpathStr, document); - } catch (XPathExpressionException e) { + } catch (final XPathExpressionException e) { Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e); throw new ZUGFeRDExportException(e); } @@ -263,7 +271,7 @@ public class ZUGFeRDImporter { } else { return extractString("//ApplicableHeaderTradeSettlement//InvoiceCurrencyCode"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return ""; } @@ -273,13 +281,31 @@ public class ZUGFeRDImporter { * @return the IssuerAssigned ID */ public String getIssuerAssignedID() { + return extractIssuerAssignedID("BuyerOrderReferencedDocument"); + } + + /** + * @return the SellerOrderReferencedDocument IssuerAssigned ID + */ + public String getSellerOrderReferencedDocumentIssuerAssignedID() { + return extractIssuerAssignedID("SellerOrderReferencedDocument"); + } + + /** + * @return the IssuerAssigned ID + */ + public String getContractOrderReferencedDocumentIssuerAssignedID() { + return extractIssuerAssignedID("ContractReferencedDocument"); + } + + private String extractIssuerAssignedID(String propertyName) { try { if (getVersion() == 1) { return extractString("//BuyerOrderReferencedDocument//ID"); } else { return extractString("//BuyerOrderReferencedDocument//IssuerAssignedID"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return ""; } @@ -302,7 +328,7 @@ public class ZUGFeRDImporter { } else { return extractString("//ExchangedDocument//IssueDateTime//DateTimeString"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return ""; } @@ -318,7 +344,7 @@ public class ZUGFeRDImporter { } else { return extractString("//SpecifiedTradeSettlementHeaderMonetarySummation//TaxBasisTotalAmount"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return ""; } @@ -334,7 +360,7 @@ public class ZUGFeRDImporter { } else { return extractString("//SpecifiedTradeSettlementHeaderMonetarySummation//TaxTotalAmount"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return ""; } @@ -350,7 +376,7 @@ public class ZUGFeRDImporter { } else { return extractString("//SpecifiedTradeSettlementHeaderMonetarySummation//RoundingAmount"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return ""; } @@ -366,7 +392,7 @@ public class ZUGFeRDImporter { } else { return extractString("//SpecifiedTradeSettlementHeaderMonetarySummation//TotalPrepaidAmount"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return ""; } @@ -404,7 +430,7 @@ public class ZUGFeRDImporter { } else { return extractString("//ExchangedDocument//IncludedNote"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return ""; } @@ -429,7 +455,7 @@ public class ZUGFeRDImporter { } else { return extractString("//SpecifiedTradeSettlementHeaderMonetarySummation//LineTotalAmount"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return ""; } @@ -452,7 +478,7 @@ public class ZUGFeRDImporter { } else { return extractString("//ActualDeliverySupplyChainEvent//OccurrenceDateTime//DateTimeString"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return ""; } @@ -468,7 +494,7 @@ public class ZUGFeRDImporter { } else { return extractString("//ExchangedDocument//ID"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return ""; } @@ -486,7 +512,7 @@ public class ZUGFeRDImporter { } else { return extractString("//ExchangedDocument/TypeCode"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return ""; } @@ -503,7 +529,7 @@ public class ZUGFeRDImporter { } else { return extractString("//ApplicableHeaderTradeAgreement/BuyerReference"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return ""; } @@ -628,7 +654,7 @@ public class ZUGFeRDImporter { } - byte[] bomlessData; + final byte[] bomlessData; if ((rawXML[0] == (byte) 0xEF) && (rawXML[1] == (byte) 0xBB) @@ -664,7 +690,7 @@ public class ZUGFeRDImporter { // SpecifiedExchangedDocumentContext is in the schema, so a relatively good // indication if zugferd is present - better than just invoice - String meta = getMeta(); + final String meta = getMeta(); return (meta != null) && (meta.length() > 0) && ((meta.contains("SpecifiedExchangedDocumentContext") /* ZF1 */ || meta.contains("ExchangedDocumentContext") /* ZF2 */)); } @@ -673,7 +699,7 @@ public class ZUGFeRDImporter { static String convertStreamToString(java.io.InputStream is) { // source https://stackoverflow.com/questions/309424/how-do-i-read-convert-an-inputstream-into-a-string-in-java referring to // https://community.oracle.com/blogs/pat/2004/10/23/stupid-scanner-tricks - Scanner s = new Scanner(is, "UTF-8").useDelimiter("\\A"); + final Scanner s = new Scanner(is, "UTF-8").useDelimiter("\\A"); return s.hasNext() ? s.next() : ""; } @@ -691,7 +717,7 @@ public class ZUGFeRDImporter { } else { nl = getNodeListByPath("//CrossIndustryInvoice//SupplyChainTradeTransaction//ApplicableHeaderTradeAgreement//BuyerTradeParty//PostalTradeAddress"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return null; } @@ -706,7 +732,7 @@ public class ZUGFeRDImporter { public PostalTradeAddress getSellerTradePartyAddress() { NodeList nl = null; - PostalTradeAddress address = new PostalTradeAddress(); + final PostalTradeAddress address = new PostalTradeAddress(); try { if (getVersion() == 1) { @@ -714,7 +740,7 @@ public class ZUGFeRDImporter { } else { nl = getNodeListByPath("//CrossIndustryInvoice//SupplyChainTradeTransaction//ApplicableHeaderTradeAgreement//SellerTradeParty//PostalTradeAddress"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return null; } @@ -723,15 +749,15 @@ public class ZUGFeRDImporter { } private PostalTradeAddress getAddressFromNodeList(NodeList nl) { - PostalTradeAddress address = new PostalTradeAddress(); + final PostalTradeAddress address = new PostalTradeAddress(); if (nl != null) { for (int i = 0; i < nl.getLength(); i++) { Node n = nl.item(i); - NodeList nodes = n.getChildNodes(); + final NodeList nodes = n.getChildNodes(); for (int j = 0; j < nodes.getLength(); j++) { n = nodes.item(j); - short nodeType = n.getNodeType(); + final short nodeType = n.getNodeType(); if (nodeType==Node.ELEMENT_NODE){ switch (n.getNodeName()) { case "ram:PostcodeCode": @@ -789,16 +815,16 @@ public class ZUGFeRDImporter { * @return a List of LineItem instances */ public List getLineItemList() { - List nodeList = getLineItemNodes(); - List lineItemList = new ArrayList<>(); + final List nodeList = getLineItemNodes(); + final List lineItemList = new ArrayList<>(); - for (Node n: nodeList) { - Item lineItem = new Item(null, null, null); + for (final Node n: nodeList) { + final Item lineItem = new Item(null, null, null); lineItem.setProduct(new Product(null,null,null,null)); - NodeList nl = n.getChildNodes(); + final NodeList nl = n.getChildNodes(); for (int i = 0; i < nl.getLength(); i++) { - Node nn = nl.item(i); + final Node nn = nl.item(i); Node node = null; switch (nn.getNodeName()) { case "ram:SpecifiedLineTradeAgreement": @@ -806,12 +832,12 @@ public class ZUGFeRDImporter { node = getNodeByName(nn.getChildNodes(), "ram:NetPriceProductTradePrice"); if (node != null) { - NodeList tradeAgreementChildren = node.getChildNodes(); + final NodeList tradeAgreementChildren = node.getChildNodes(); node = getNodeByName(tradeAgreementChildren, "ram:ChargeAmount"); lineItem.setPrice(tryBigDecimal(getNodeValue(node))); node = getNodeByName(tradeAgreementChildren, "ram:BasisQuantity"); if(node != null && node.getAttributes()!=null) { - Node unitCodeAttribute = node.getAttributes().getNamedItem("unitCode"); + final Node unitCodeAttribute = node.getAttributes().getNamedItem("unitCode"); if(unitCodeAttribute != null) { lineItem.getProduct().setUnit(unitCodeAttribute.getNodeValue()); } @@ -905,7 +931,7 @@ public class ZUGFeRDImporter { * @return a List of Node instances */ public List getLineItemNodes() { - List lineItemNodes = new ArrayList<>(); + final List lineItemNodes = new ArrayList<>(); NodeList nl = null; try { if (getVersion() == 1) { @@ -913,12 +939,12 @@ public class ZUGFeRDImporter { } else { nl = getNodeListByPath("//CrossIndustryInvoice//SupplyChainTradeTransaction//IncludedSupplyChainTradeLineItem"); } - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); } for (int i = 0; i < nl.getLength(); i++) { - Node n = nl.item(i); + final Node n = nl.item(i); lineItemNodes.add(n); } return lineItemNodes; @@ -935,7 +961,7 @@ public class ZUGFeRDImporter { if (nl.item(i).getNodeName() == name) { return nl.item(i); } else if (nl.item(i).getChildNodes().getLength() > 0) { - Node node = getNodeByName(nl.item(i).getChildNodes(), name); + final Node node = getNodeByName(nl.item(i).getChildNodes(), name); if (node != null) { return node; } @@ -951,14 +977,14 @@ public class ZUGFeRDImporter { */ public NodeList getNodeListByPath(String path) { - XPathFactory xpathFact = XPathFactory.newInstance(); - XPath xPath = xpathFact.newXPath(); - String s = path; + final XPathFactory xpathFact = XPathFactory.newInstance(); + final XPath xPath = xpathFact.newXPath(); + final String s = path; try { - XPathExpression xpr = xPath.compile(s); + final XPathExpression xpr = xPath.compile(s); return (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET); - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return null; } @@ -986,10 +1012,10 @@ public class ZUGFeRDImporter { private BigDecimal tryBigDecimal(String nodeValue) { try { return new BigDecimal(nodeValue); - } catch (Exception e) { + } catch (final Exception e) { try { return new BigDecimal(Float.valueOf(nodeValue)); - } catch (Exception ex) { + } catch (final Exception ex) { return new BigDecimal("0.00"); } } diff --git a/pom.xml b/pom.xml index f8bacf91..ebd0d717 100644 --- a/pom.xml +++ b/pom.xml @@ -158,6 +158,8 @@ 1.8 1.8 1.8 + true diff --git a/validator/pom.xml b/validator/pom.xml index 5e8597b2..97ec12c2 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -27,6 +27,8 @@ UTF-8 + false + diff --git a/validator/src/main/java/org/mustangproject/validator/EPart.java b/validator/src/main/java/org/mustangproject/validator/EPart.java index b3f715bc..b56268a3 100644 --- a/validator/src/main/java/org/mustangproject/validator/EPart.java +++ b/validator/src/main/java/org/mustangproject/validator/EPart.java @@ -1,5 +1,5 @@ package org.mustangproject.validator; public enum EPart { - fx, xr, pdf, none + fx, ox, xr, pdf, none } diff --git a/validator/src/main/java/org/mustangproject/validator/SchematronPipeline.java b/validator/src/main/java/org/mustangproject/validator/SchematronPipeline.java index 25357634..bda4b7a2 100644 --- a/validator/src/main/java/org/mustangproject/validator/SchematronPipeline.java +++ b/validator/src/main/java/org/mustangproject/validator/SchematronPipeline.java @@ -39,7 +39,7 @@ public class SchematronPipeline { try { return factory.newTemplates(new StreamSource(cl.getResourceAsStream(transName))); } catch (TransformerConfigurationException excep) { - throw new IllegalStateException("Policy Schematron transformer XSL " + transName + " not found.", excep); //$NON-NLS-2$ + throw new IllegalStateException("Policy Schematron transformer XSL " + transName + " not found.", excep); } } diff --git a/validator/src/main/java/org/mustangproject/validator/XMLValidator.java b/validator/src/main/java/org/mustangproject/validator/XMLValidator.java index 5ac6e220..5d20e272 100644 --- a/validator/src/main/java/org/mustangproject/validator/XMLValidator.java +++ b/validator/src/main/java/org/mustangproject/validator/XMLValidator.java @@ -172,6 +172,7 @@ public class XMLValidator extends Validator { context.setProfile(booking.getNodeValue()); } + boolean isOrderX = false; boolean isMiniumum = false; boolean isBasic = false; boolean isBasicWithoutLines = false; @@ -185,6 +186,15 @@ public class XMLValidator extends Validator { // urn:cen.eu:en16931:2017 // urn:cen.eu:en16931:2017:compliant:factur-x.eu:1p0:basic + if (root.getNodeName().equalsIgnoreCase("rsm:SCRDMCCBDACIOMessageStructure")) { + context.setVersion("1"); + isOrderX=true; + isBasic = context.getProfile().contains("basic"); + isEN16931 = context.getProfile().contains("comfort"); + isExtended = context.getProfile().contains("extended"); + validateSchema(zfXML.getBytes(StandardCharsets.UTF_8), "ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B.xsd", 99, EPart.ox); + + } if (root.getNodeName().equalsIgnoreCase("rsm:CrossIndustryInvoice")) { // ZUGFeRD 2.0 or Factur-X context.setVersion("2"); diff --git a/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B.xsd b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B.xsd new file mode 100644 index 00000000..e856ec88 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B.xsd @@ -0,0 +1,24 @@ + + + + + + + + + Order-X_Basic Message Structure + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_ISO_ISO3AlphaCurrencyCode_2012-08-31.xsd b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_ISO_ISO3AlphaCurrencyCode_2012-08-31.xsd new file mode 100644 index 00000000..61d9134a --- /dev/null +++ b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_ISO_ISO3AlphaCurrencyCode_2012-08-31.xsd @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ActionCode_D20A.xsd b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ActionCode_D20A.xsd new file mode 100644 index 00000000..00139e82 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ActionCode_D20A.xsd @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsCode_2010.xsd b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsCode_2010.xsd new file mode 100644 index 00000000..6e76a289 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsCode_2010.xsd @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsFunctionCode_D20A.xsd b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsFunctionCode_D20A.xsd new file mode 100644 index 00000000..7af91966 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsFunctionCode_D20A.xsd @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentNameCode_D20A.xsd b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentNameCode_D20A.xsd new file mode 100644 index 00000000..70a343a4 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentNameCode_D20A.xsd @@ -0,0 +1,806 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentStatusCode_D20A.xsd b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentStatusCode_D20A.xsd new file mode 100644 index 00000000..b3050df0 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentStatusCode_D20A.xsd @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_MessageFunctionCode_D20A.xsd b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_MessageFunctionCode_D20A.xsd new file mode 100644 index 00000000..08530348 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_MessageFunctionCode_D20A.xsd @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_QualifiedDataType_128.xsd b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_QualifiedDataType_128.xsd new file mode 100644 index 00000000..da640544 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_QualifiedDataType_128.xsd @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_128.xsd b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_128.xsd new file mode 100644 index 00000000..7a3a721f --- /dev/null +++ b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_128.xsd @@ -0,0 +1,732 @@ + + + + + + + Document Context Parameter + + + + + ID + + + + + + + Document Line + + + + + Line ID + + + + + Status Code + + + + + Note + + + + + + + Exchanged Document Context + + + + + Test Indicator + + + + + Business Process + + + + + Guideline + + + + + + + Exchanged Document + + + + + ID + + + + + Name + + + + + Type Code + + + + + Status Code + + + + + Issue Date Time + + + + + + + + Purpose Code + + + + + Response Request Type Code + + + + + Note + + + + + + + Header Trade Agreement + + + + + Buyer Reference Text + + + + + Seller + + + + + Buyer + + + + + Trade Delivery Terms + + + + + Buyer Order Document + + + + + Quotation Document + + + + + Contract Document + + + + + Blanket Order Document + + + + + Previous Order Document + + + + + Previous Order Change Document + + + + + Previous Order Response Document + + + + + + + Header Trade Delivery + + + + + Ship To Party + + + + + Ship From Party + + + + + Requested Delivery Event + + + + + Requested Despatch Event + + + + + + + Header Trade Settlement + + + + + Order Currency Code + + + + + Monetary Summation + + + + + Accounts Receivable + + + + + + + Legal Organization + + + + + ID + + + + + Trading Name + + + + + + + Line Trade Agreement + + + + + Buyer Order Document + + + + + Product Net Price + + + + + Blanket Order Document + + + + + + + Line Trade Delivery + + + + + Partial Delivery Allowed Indicator + + + + + Requested Quantity + + + + + Agreed Quantity + + + + + + + Line Trade Settlement + + + + + Monetary Summation + + + + + + + Note + + + + + Content Text + + + + + Subject Code + + + + + + + Referenced Document + + + + + Issuer Assigned ID + + + + + Line ID + + + + + + + Referenced Product + + + + + ID + + + + + Global ID + + + + + Seller Assigned ID + + + + + Buyer Assigned ID + + + + + Name + + + + + + + Period + + + + + Start Date Time + + + + + End Date Time + + + + + + + Supply Chain Event + + + + + Occurrence Date Time + + + + + Occurrence Period + + + + + + + Supply Chain Trade Line Item + + + + + Associated Document Line + + + + + Trade Product + + + + + Substituted Product + + + + + Line Trade Agreement + + + + + Line Trade Delivery + + + + + Line Trade Settlement + + + + + + + Supply Chain Trade Transaction + + + + + Included Trade Line Item + + + + + Header Trade Agreement + + + + + Header Trade Delivery + + + + + Header Trade Settlement + + + + + + + Tax Registration + + + + + ID + + + + + + + Trade Accounting Account + + + + + ID + + + + + + + Trade Address + + + + + Postcode + + + + + Line One + + + + + Line Two + + + + + Line Three + + + + + City Name + + + + + Country Code + + + + + Country Sub-Division Name + + + + + + + Trade Contact + + + + + Person Name + + + + + Department Name + + + + + Telephone + + + + + Email Address + + + + + + + Trade Delivery Terms + + + + + Code + + + + + Function Code + + + + + + + Trade Party + + + + + ID + + + + + Global ID + + + + + Name + + + + + Legal Organization + + + + + Defined Contact Details + + + + + Postal Address + + + + + URI + + + + + Tax Registration + + + + + + + Trade Price + + + + + Charge Amount + + + + + Basis Quantity + + + + + + + Trade Product + + + + + Global ID + + + + + Seller Assigned ID + + + + + Buyer Assigned ID + + + + + Name + + + + + + + Trade Settlement Header Monetary Summation + + + + + Line Total Amount + + + + + Charge Total Amount + + + + + Allowance Total Amount + + + + + Tax Basis Total Amount + + + + + Tax Total Amount + + + + + Grand Total Amount + + + + + + + Trade Settlement Line Monetary Summation + + + + + Line Total Amount + + + + + + + Communication + + + + + URI + + + + + Complete Number + + + + + diff --git a/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_128.xsd b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_128.xsd new file mode 100644 index 00000000..4f87a19c --- /dev/null +++ b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_128.xsd @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_identifierlist_standard_ISO_ISOTwo-letterCountryCode_SecondEdition2006.xsd b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_identifierlist_standard_ISO_ISOTwo-letterCountryCode_SecondEdition2006.xsd new file mode 100644 index 00000000..93265d22 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/basic/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_identifierlist_standard_ISO_ISOTwo-letterCountryCode_SecondEdition2006.xsd @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B.xsd new file mode 100644 index 00000000..cf70d04c --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B.xsd @@ -0,0 +1,24 @@ + + + + + + + + + Order-X_Comfort Message Structure + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_EDIFICAS-EU_AccountingAccountType_D11A.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_EDIFICAS-EU_AccountingAccountType_D11A.xsd new file mode 100644 index 00000000..1a112b69 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_EDIFICAS-EU_AccountingAccountType_D11A.xsd @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_EN16931_AllowanceChargeReasonCode_D20A.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_EN16931_AllowanceChargeReasonCode_D20A.xsd new file mode 100644 index 00000000..066bb5ea --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_EN16931_AllowanceChargeReasonCode_D20A.xsd @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_ISO_ISO3AlphaCurrencyCode_2012-08-31.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_ISO_ISO3AlphaCurrencyCode_2012-08-31.xsd new file mode 100644 index 00000000..61d9134a --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_ISO_ISO3AlphaCurrencyCode_2012-08-31.xsd @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ActionCode_D20A.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ActionCode_D20A.xsd new file mode 100644 index 00000000..00139e82 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ActionCode_D20A.xsd @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_AllowanceChargeReasonCode_D20A.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_AllowanceChargeReasonCode_D20A.xsd new file mode 100644 index 00000000..e2eb28a7 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_AllowanceChargeReasonCode_D20A.xsd @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ContactFunctionCode_D20A.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ContactFunctionCode_D20A.xsd new file mode 100644 index 00000000..01da8fb0 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ContactFunctionCode_D20A.xsd @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsCode_2010.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsCode_2010.xsd new file mode 100644 index 00000000..6e76a289 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsCode_2010.xsd @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsFunctionCode_D20A.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsFunctionCode_D20A.xsd new file mode 100644 index 00000000..7af91966 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsFunctionCode_D20A.xsd @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentNameCode_D20A.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentNameCode_D20A.xsd new file mode 100644 index 00000000..70a343a4 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentNameCode_D20A.xsd @@ -0,0 +1,806 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentStatusCode_D20A.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentStatusCode_D20A.xsd new file mode 100644 index 00000000..b3050df0 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentStatusCode_D20A.xsd @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DutyTaxFeeTypeCode_D20A.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DutyTaxFeeTypeCode_D20A.xsd new file mode 100644 index 00000000..ea17f8ca --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DutyTaxFeeTypeCode_D20A.xsd @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DutyorTaxorFeeCategoryCode_D20A.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DutyorTaxorFeeCategoryCode_D20A.xsd new file mode 100644 index 00000000..c774418f --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DutyorTaxorFeeCategoryCode_D20A.xsd @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_MessageFunctionCode_D20A.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_MessageFunctionCode_D20A.xsd new file mode 100644 index 00000000..08530348 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_MessageFunctionCode_D20A.xsd @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_PackageTypeCode_2006.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_PackageTypeCode_2006.xsd new file mode 100644 index 00000000..d8fcea8a --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_PackageTypeCode_2006.xsd @@ -0,0 +1,416 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_PaymentMeansCode_D20A.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_PaymentMeansCode_D20A.xsd new file mode 100644 index 00000000..d3bffc55 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_PaymentMeansCode_D20A.xsd @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ReferenceTypeCode_D20A.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ReferenceTypeCode_D20A.xsd new file mode 100644 index 00000000..34751789 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ReferenceTypeCode_D20A.xsd @@ -0,0 +1,828 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_QualifiedDataType_128.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_QualifiedDataType_128.xsd new file mode 100644 index 00000000..67fcfc47 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_QualifiedDataType_128.xsd @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_128.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_128.xsd new file mode 100644 index 00000000..64111e86 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_128.xsd @@ -0,0 +1,1191 @@ + + + + + + + Document Context Parameter + + + + + ID + + + + + + + Document Line + + + + + Line ID + + + + + Status Code + + + + + Note + + + + + + + Exchanged Document Context + + + + + Test Indicator + + + + + Business Process + + + + + Guideline + + + + + + + Exchanged Document + + + + + ID + + + + + Name + + + + + Type Code + + + + + Status Code + + + + + Issue Date Time + + + + + + + + Purpose Code + + + + + Response Request Type Code + + + + + Note + + + + + Effective Period + + + + + + + Header Trade Agreement + + + + + Buyer Reference Text + + + + + Seller + + + + + Buyer + + + + + Buyer Requisitioner + + + + + Trade Delivery Terms + + + + + Seller Order Document + + + + + Buyer Order Document + + + + + Quotation Document + + + + + Contract Document + + + + + Requisition Document + + + + + Additional Document + + + + + Catalogue Document + + + + + Blanket Order Document + + + + + Previous Order Document + + + + + Previous Order Change Document + + + + + Previous Order Response Document + + + + + Procuring Project + + + + + + + Header Trade Delivery + + + + + Ship To Party + + + + + Ship From Party + + + + + Requested Delivery Event + + + + + Requested Despatch Event + + + + + + + Header Trade Settlement + + + + + Order Currency Code + + + + + Invoicee + + + + + Payment Means + + + + + Allowance/Charge + + + + + Payment Terms + + + + + Monetary Summation + + + + + Accounts Receivable + + + + + + + Legal Organization + + + + + ID + + + + + Trading Name + + + + + + + Line Trade Agreement + + + + + Buyer Order Document + + + + + Quotation Document + + + + + Additional Document + + + + + Product Gross Price + + + + + Product Net Price + + + + + Catalogue Document + + + + + Blanket Order Document + + + + + + + Line Trade Delivery + + + + + Partial Delivery Allowed Indicator + + + + + Requested Quantity + + + + + Agreed Quantity + + + + + Package Quantity + + + + + Per Package Unit Quantity + + + + + Requested Despatch Event + + + + + Requested Delivery Event + + + + + + + Line Trade Settlement + + + + + Trade Tax + + + + + Allowance/Charge + + + + + Monetary Summation + + + + + Accounts Receivable + + + + + + + Note + + + + + Content Text + + + + + Subject Code + + + + + + + Procuring Project + + + + + ID + + + + + Name + + + + + + + Product Characteristic + + + + + Type Code + + + + + Description + + + + + Value Measure + + + + + Value Text + + + + + + + Product Classification + + + + + Class Code + + + + + Class Name + + + + + + + Referenced Document + + + + + Issuer Assigned ID + + + + + URI + + + + + Line ID + + + + + Type Code + + + + + Name + + + + + Attached Binary Object + + + + + Reference Type Code + + + + + + + Referenced Product + + + + + ID + + + + + Global ID + + + + + Seller Assigned ID + + + + + Buyer Assigned ID + + + + + Name + + + + + Description + + + + + + + Spatial Dimensions + + + + + Width + + + + + Length + + + + + Height + + + + + + + Period + + + + + Start Date Time + + + + + End Date Time + + + + + + + Supply Chain Event + + + + + Occurrence Date Time + + + + + Occurrence Period + + + + + + + Supply Chain Packaging + + + + + Type Code + + + + + Dimensions + + + + + + + Supply Chain Trade Line Item + + + + + Associated Document Line + + + + + Trade Product + + + + + Substituted Product + + + + + Line Trade Agreement + + + + + Line Trade Delivery + + + + + Line Trade Settlement + + + + + + + Supply Chain Trade Transaction + + + + + Included Trade Line Item + + + + + Header Trade Agreement + + + + + Header Trade Delivery + + + + + Header Trade Settlement + + + + + + + Tax Registration + + + + + ID + + + + + + + Trade Accounting Account + + + + + ID + + + + + Type Code + + + + + + + Trade Address + + + + + Postcode + + + + + Line One + + + + + Line Two + + + + + Line Three + + + + + City Name + + + + + Country Code + + + + + Country Sub-Division Name + + + + + + + Trade Allowance/Charge + + + + + Charge Indicator + + + + + Sequence Number + + + + + Calculation Percent + + + + + Basis Amount + + + + + Actual Amount + + + + + Reason Code + + + + + Reason Text + + + + + Tax Category + + + + + + + Trade Contact + + + + + Person Name + + + + + Department Name + + + + + Type Code + + + + + Telephone + + + + + Email Address + + + + + + + Trade Country + + + + + Code + + + + + + + Trade Delivery Terms + + + + + Code + + + + + Description + + + + + Function Code + + + + + Relevant Location + + + + + + + Trade Location + + + + + ID + + + + + Name + + + + + + + Trade Party + + + + + ID + + + + + Global ID + + + + + Name + + + + + Description + + + + + Legal Organization + + + + + Defined Contact Details + + + + + Postal Address + + + + + URI + + + + + Tax Registration + + + + + + + Trade Payment Terms + + + + + Description + + + + + + + Trade Price + + + + + Charge Amount + + + + + Basis Quantity + + + + + Applied Allowance/Charge + + + + + + + Trade Product Instance + + + + + Batch ID + + + + + Serial ID + + + + + + + Trade Product + + + + + Global ID + + + + + Seller Assigned ID + + + + + Buyer Assigned ID + + + + + Name + + + + + Description + + + + + Batch ID + + + + + Brand Name + + + + + Characteristic + + + + + Classification + + + + + Individual Product Instance + + + + + Packaging + + + + + Origin Country + + + + + Additional Document + + + + + + + Trade Settlement Header Monetary Summation + + + + + Line Total Amount + + + + + Charge Total Amount + + + + + Allowance Total Amount + + + + + Tax Basis Total Amount + + + + + Tax Total Amount + + + + + Grand Total Amount + + + + + + + Trade Settlement Line Monetary Summation + + + + + Line Total Amount + + + + + + + Trade Settlement Payment Means + + + + + Type Code + + + + + Information + + + + + + + Trade Tax + + + + + Type Code + + + + + Category Code + + + + + Applicable Rate Percent + + + + + + + Communication + + + + + URI + + + + + Complete Number + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_128.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_128.xsd new file mode 100644 index 00000000..3d2f109f --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_128.xsd @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_identifierlist_standard_ISO_ISOTwo-letterCountryCode_SecondEdition2006.xsd b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_identifierlist_standard_ISO_ISOTwo-letterCountryCode_SecondEdition2006.xsd new file mode 100644 index 00000000..93265d22 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/comfort/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_identifierlist_standard_ISO_ISOTwo-letterCountryCode_SecondEdition2006.xsd @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B.xsd new file mode 100644 index 00000000..fbef8df9 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B.xsd @@ -0,0 +1,24 @@ + + + + + + + + + Order-X_Extended + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_EDIFICAS-EU_AccountingAccountType_D11A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_EDIFICAS-EU_AccountingAccountType_D11A.xsd new file mode 100644 index 00000000..1a112b69 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_EDIFICAS-EU_AccountingAccountType_D11A.xsd @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_EN16931_AllowanceChargeReasonCode_D20A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_EN16931_AllowanceChargeReasonCode_D20A.xsd new file mode 100644 index 00000000..066bb5ea --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_EN16931_AllowanceChargeReasonCode_D20A.xsd @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_ISO_ISO3AlphaCurrencyCode_2012-08-31.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_ISO_ISO3AlphaCurrencyCode_2012-08-31.xsd new file mode 100644 index 00000000..61d9134a --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_ISO_ISO3AlphaCurrencyCode_2012-08-31.xsd @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ActionCode_D20A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ActionCode_D20A.xsd new file mode 100644 index 00000000..00139e82 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ActionCode_D20A.xsd @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_AllowanceChargeReasonCode_D20A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_AllowanceChargeReasonCode_D20A.xsd new file mode 100644 index 00000000..e2eb28a7 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_AllowanceChargeReasonCode_D20A.xsd @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ContactFunctionCode_D20A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ContactFunctionCode_D20A.xsd new file mode 100644 index 00000000..01da8fb0 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ContactFunctionCode_D20A.xsd @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsCode_2010.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsCode_2010.xsd new file mode 100644 index 00000000..6e76a289 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsCode_2010.xsd @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsFunctionCode_D20A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsFunctionCode_D20A.xsd new file mode 100644 index 00000000..7af91966 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DeliveryTermsFunctionCode_D20A.xsd @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentNameCode_D20A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentNameCode_D20A.xsd new file mode 100644 index 00000000..70a343a4 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentNameCode_D20A.xsd @@ -0,0 +1,806 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentStatusCode_D20A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentStatusCode_D20A.xsd new file mode 100644 index 00000000..b3050df0 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DocumentStatusCode_D20A.xsd @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DutyTaxFeeTypeCode_D20A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DutyTaxFeeTypeCode_D20A.xsd new file mode 100644 index 00000000..ea17f8ca --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DutyTaxFeeTypeCode_D20A.xsd @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DutyorTaxorFeeCategoryCode_D20A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DutyorTaxorFeeCategoryCode_D20A.xsd new file mode 100644 index 00000000..c774418f --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_DutyorTaxorFeeCategoryCode_D20A.xsd @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_EventTimeReferenceCode_D20A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_EventTimeReferenceCode_D20A.xsd new file mode 100644 index 00000000..0b1abc79 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_EventTimeReferenceCode_D20A.xsd @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_MessageFunctionCode_D20A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_MessageFunctionCode_D20A.xsd new file mode 100644 index 00000000..08530348 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_MessageFunctionCode_D20A.xsd @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_PackageTypeCode_2006.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_PackageTypeCode_2006.xsd new file mode 100644 index 00000000..d8fcea8a --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_PackageTypeCode_2006.xsd @@ -0,0 +1,416 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_PaymentMeansCode_D20A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_PaymentMeansCode_D20A.xsd new file mode 100644 index 00000000..d3bffc55 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_PaymentMeansCode_D20A.xsd @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ReferenceTypeCode_D20A.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ReferenceTypeCode_D20A.xsd new file mode 100644 index 00000000..34751789 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_ReferenceTypeCode_D20A.xsd @@ -0,0 +1,828 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_TimePointFormatCode_D19B.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_TimePointFormatCode_D19B.xsd new file mode 100644 index 00000000..7d7509fb --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_codelist_standard_UNECE_TimePointFormatCode_D19B.xsd @@ -0,0 +1,17 @@ + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_QualifiedDataType_128.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_QualifiedDataType_128.xsd new file mode 100644 index 00000000..362ab17d --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_QualifiedDataType_128.xsd @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_128.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_128.xsd new file mode 100644 index 00000000..cbfb4bba --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_128.xsd @@ -0,0 +1,1453 @@ + + + + + + + Document Context Parameter + + + + + ID + + + + + + + Document Line + + + + + Line ID + + + + + Status Code + + + + + Note + + + + + + + Exchanged Document Context + + + + + Test Indicator + + + + + Business Process + + + + + Guideline + + + + + + + Exchanged Document + + + + + ID + + + + + Name + + + + + Type Code + + + + + Status Code + + + + + Issue Date Time + + + + + + + + Language Code + + + + + Purpose Code + + + + + Response Request Type Code + + + + + Note + + + + + Effective Period + + + + + + + Header Trade Agreement + + + + + Buyer Reference Text + + + + + Seller + + + + + Buyer + + + + + Buyer Requisitioner + + + + + End User + + + + + Trade Delivery Terms + + + + + Seller Order Document + + + + + Buyer Order Document + + + + + Quotation Document + + + + + Contract Document + + + + + Requisition Document + + + + + Additional Document + + + + + Buyer Agent + + + + + Catalogue Document + + + + + Blanket Order Document + + + + + Previous Order Document + + + + + Previous Order Change Document + + + + + Previous Order Response Document + + + + + Procuring Project + + + + + Ultimate Customer Order Document + + + + + + + Header Trade Delivery + + + + + Ship To Party + + + + + Ultimate Ship To Party + + + + + Ship From Party + + + + + Requested Delivery Event + + + + + Requested Despatch Event + + + + + + + Header Trade Settlement + + + + + Tax Currency Code + + + + + Order Currency Code + + + + + Invoice Currency Code + + + + + Invoicer + + + + + Invoicee + + + + + Payment Means + + + + + Trade Tax + + + + + Allowance/Charge + + + + + Logistics Service Charge + + + + + Payment Terms + + + + + Monetary Summation + + + + + Accounts Receivable + + + + + + + Legal Organization + + + + + ID + + + + + Trading Name + + + + + Postal Address + + + + + + + Line Trade Agreement + + + + + Minimum Product Orderable Quantity + + + + + Maximum Product Orderable Quantity + + + + + Buyer Requisitioner + + + + + Buyer Order Document + + + + + Quotation Document + + + + + Contract Document + + + + + Additional Document + + + + + Product Gross Price + + + + + Product Net Price + + + + + Catalogue Document + + + + + Blanket Order Document + + + + + Ultimate Customer Order Document + + + + + + + Line Trade Delivery + + + + + Partial Delivery Allowed Indicator + + + + + Requested Quantity + + + + + Agreed Quantity + + + + + Package Quantity + + + + + Per Package Unit Quantity + + + + + Ship To Party + + + + + Ultimate Ship To Party + + + + + Ship From Party + + + + + Requested Despatch Event + + + + + Requested Delivery Event + + + + + + + Line Trade Settlement + + + + + Trade Tax + + + + + Allowance/Charge + + + + + Monetary Summation + + + + + Accounts Receivable + + + + + + + Logistics Service Charge + + + + + Description + + + + + Applied Amount + + + + + Trade Tax + + + + + + + Note + + + + + Content Code + + + + + Content Text + + + + + Subject Code + + + + + + + Procuring Project + + + + + ID + + + + + Name + + + + + + + Product Characteristic + + + + + Type Code + + + + + Description + + + + + Value Measure + + + + + Value Text + + + + + + + Product Classification + + + + + Class Code + + + + + Class Name + + + + + + + Referenced Document + + + + + Issuer Assigned ID + + + + + URI + + + + + Line ID + + + + + Type Code + + + + + Name + + + + + Attached Binary Object + + + + + Reference Type Code + + + + + Formatted Issue Date Time + + + + + + + Referenced Product + + + + + ID + + + + + Global ID + + + + + Seller Assigned ID + + + + + Buyer Assigned ID + + + + + Industry Assigned ID + + + + + Name + + + + + Description + + + + + Unit Quantity + + + + + + + Spatial Dimensions + + + + + Width + + + + + Length + + + + + Height + + + + + + + Period + + + + + Start Date Time + + + + + End Date Time + + + + + + + Supply Chain Event + + + + + Occurrence Date Time + + + + + Unit Quantity + + + + + Occurrence Period + + + + + + + Supply Chain Packaging + + + + + Type Code + + + + + Dimensions + + + + + + + Supply Chain Trade Line Item + + + + + Associated Document Line + + + + + Trade Product + + + + + Substituted Product + + + + + Line Trade Agreement + + + + + Line Trade Delivery + + + + + Line Trade Settlement + + + + + + + Supply Chain Trade Transaction + + + + + Included Trade Line Item + + + + + Header Trade Agreement + + + + + Header Trade Delivery + + + + + Header Trade Settlement + + + + + + + Tax Registration + + + + + ID + + + + + + + Trade Accounting Account + + + + + ID + + + + + Type Code + + + + + + + Trade Address + + + + + Postcode + + + + + Line One + + + + + Line Two + + + + + Line Three + + + + + City Name + + + + + Country Code + + + + + Country Sub-Division Name + + + + + + + Trade Allowance/Charge + + + + + Charge Indicator + + + + + Sequence Number + + + + + Calculation Percent + + + + + Basis Amount + + + + + Basis Quantity + + + + + Actual Amount + + + + + Reason Code + + + + + Reason Text + + + + + Tax Category + + + + + + + Trade Contact + + + + + Person Name + + + + + Department Name + + + + + Type Code + + + + + Telephone + + + + + Fax + + + + + Email Address + + + + + + + Trade Country + + + + + Code + + + + + + + Trade Delivery Terms + + + + + Code + + + + + Description + + + + + Function Code + + + + + Relevant Location + + + + + + + Trade Location + + + + + ID + + + + + Name + + + + + + + Trade Party + + + + + ID + + + + + Global ID + + + + + Name + + + + + Description + + + + + Legal Organization + + + + + Defined Contact Details + + + + + Postal Address + + + + + URI + + + + + Tax Registration + + + + + + + Trade Payment Terms + + + + + Description + + + + + + + Trade Price + + + + + Charge Amount + + + + + Basis Quantity + + + + + Minimum Quantity + + + + + Maximum Quantity + + + + + Applied Allowance/Charge + + + + + Included Tax + + + + + + + Trade Product Instance + + + + + Batch ID + + + + + Serial ID + + + + + + + Trade Product + + + + + ID + + + + + Global ID + + + + + Seller Assigned ID + + + + + Buyer Assigned ID + + + + + Industry Assigned ID + + + + + Model ID + + + + + Name + + + + + Description + + + + + Batch ID + + + + + Brand Name + + + + + Model Name + + + + + Characteristic + + + + + Classification + + + + + Individual Product Instance + + + + + Packaging + + + + + Origin Country + + + + + Additional Document + + + + + Included Product + + + + + + + Trade Settlement Header Monetary Summation + + + + + Line Total Amount + + + + + Charge Total Amount + + + + + Allowance Total Amount + + + + + Tax Basis Total Amount + + + + + Tax Total Amount + + + + + Rounding Amount + + + + + Grand Total Amount + + + + + Total Prepaid Amount + + + + + Due Payable Amount + + + + + + + Trade Settlement Line Monetary Summation + + + + + Line Total Amount + + + + + Charge Total Amount + + + + + Allowance Total Amount + + + + + Tax Total Amount + + + + + Total Allowance/Charge Amount + + + + + + + Trade Settlement Payment Means + + + + + Type Code + + + + + Information + + + + + + + Trade Tax + + + + + Calculated Amount + + + + + Type Code + + + + + Exemption Reason Text + + + + + Basis Amount + + + + + Line Total Basis Amount + + + + + Allowance/Charge Basis Amount + + + + + Category Code + + + + + Exemption Reason Code + + + + + Due Date Type Code + + + + + Applicable Rate Percent + + + + + + + Communication + + + + + URI + + + + + Complete Number + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_128.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_128.xsd new file mode 100644 index 00000000..2c5f76df --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_128.xsd @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_identifierlist_standard_ISO_ISOTwo-letterCountryCode_SecondEdition2006.xsd b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_identifierlist_standard_ISO_ISOTwo-letterCountryCode_SecondEdition2006.xsd new file mode 100644 index 00000000..93265d22 --- /dev/null +++ b/validator/src/main/resources/schema/ox09/extended/SCRDMCCBDACIOMessageStructure_100pD20B_urn_un_unece_uncefact_identifierlist_standard_ISO_ISOTwo-letterCountryCode_SecondEdition2006.xsd @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/xrechnung.invalid.pdf b/validator/src/main/resources/xrechnung.invalid.pdf deleted file mode 100644 index 23df88a9..00000000 Binary files a/validator/src/main/resources/xrechnung.invalid.pdf and /dev/null differ diff --git a/validator/src/main/resources/xrechnung.pdf b/validator/src/main/resources/xrechnung.pdf deleted file mode 100644 index 095f2019..00000000 Binary files a/validator/src/main/resources/xrechnung.pdf and /dev/null differ