<?xml version="1.0" encoding="UTF-8" ?>
<!--
XML Schema Rec
Generated by X-Meta 
Mon Feb 03 14:23:37 GMT 2003
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-basda-org:2000:salesInvoice:xdr:3.01" targetNamespace="urn:schemas-basda-org:2000:salesInvoice:xdr:3.01" xmlns:xdr="http://www.decisionsoft.com/XDR-compat-v1" version="3.07" id="eBIS-XML_Invoice" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xsd:import namespace="http://www.decisionsoft.com/XDR-compat-v1" schemaLocation="http://www.decisionsoft.com/XDR-compat-v1.xsd"/>
  <xsd:element name="Invoice">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element minOccurs="1" maxOccurs="1" name="InvoiceHead">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element minOccurs="1" maxOccurs="1" name="Schema" type="Schema"/>
              <xsd:element minOccurs="0" maxOccurs="1" name="Stylesheet" type="Stylesheet"/>
              <xsd:element minOccurs="1" maxOccurs="1" name="Parameters" type="Parameters"/>
              <xsd:element minOccurs="0" maxOccurs="1" name="OriginatingSoftware" type="OriginatingSoftware"/>
              <xsd:element minOccurs="0" maxOccurs="1" name="TestFlag" type="TestFlag"/>
              <xsd:element minOccurs="1" maxOccurs="1" name="InvoiceType" type="InvoiceType"/>
              <xsd:element minOccurs="0" maxOccurs="1" name="Function" type="Invoice_Function"/>
              <xsd:element minOccurs="1" maxOccurs="1" name="InvoiceCurrency" type="InvoiceCurrency"/>
              <xsd:element minOccurs="0" maxOccurs="1" name="Intrastat" type="Intrastat"/>
              <xsd:element minOccurs="1" maxOccurs="1" name="Checksum" type="xdr:int"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element minOccurs="1" maxOccurs="1" name="InvoiceReferences" type="InvoiceReferencesType"/>
        <xsd:choice>
          <xsd:element minOccurs="0" maxOccurs="1" name="Extensions">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>This node allows extension of the eBIS XML spec.  Project specific data from other namespaces may be inserted at this point</xsd:documentation>
                  </xsd:annotation>
                </xsd:any>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation>Deprecated. New implementations using eBIS-XML should place extensions within the Extensions element which follows.</xsd:documentation>
            </xsd:annotation>
          </xsd:any>
        </xsd:choice>
        <xsd:element minOccurs="1" maxOccurs="1" name="InvoiceDate" type="dateTime"/>
        <xsd:element minOccurs="0" maxOccurs="1" name="TypeOfSupply" type="xsd:string"/>
        <xsd:element minOccurs="0" maxOccurs="1" name="TaxPointDate" type="xsd:string"/>
        <xsd:element minOccurs="1" maxOccurs="1" name="Supplier" type="Supplier"/>
        <xsd:element minOccurs="0" maxOccurs="1" name="Buyer" type="Buyer"/>
        <xsd:element minOccurs="0" maxOccurs="unbounded" name="Delivery" type="Delivery"/>
        <xsd:element minOccurs="1" maxOccurs="1" name="InvoiceTo" type="InvoiceTo"/>
        <xsd:element minOccurs="1" maxOccurs="unbounded" name="InvoiceLine" type="InvoiceLine"/>
        <xsd:element minOccurs="0" maxOccurs="unbounded" name="PercentDiscount" type="PercentDiscount_Invoice"/>
        <xsd:element minOccurs="0" maxOccurs="unbounded" name="AmountDiscount" type="AmountDiscount"/>
        <xsd:element minOccurs="0" maxOccurs="unbounded" name="SpecialInstructions" type="xsd:string"/>
        <xsd:element minOccurs="0" maxOccurs="unbounded" name="Narrative" type="xsd:string"/>
        <xsd:element minOccurs="0" maxOccurs="1" name="Settlement">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element minOccurs="0" maxOccurs="1" name="SettlementTerms">
                <xsd:annotation>
                  <xsd:documentation>If a codelist is to be used then the code defines an elapsed time from invoice or delivery, the child element Description should be used to describe this. If the code value is "Date", the element PayByDate should be used in the same format as other date fields.</xsd:documentation>
                </xsd:annotation>
                <xsd:complexType>
                  <xsd:choice>
                    <xsd:element minOccurs="0" maxOccurs="1" name="PayByDate" type="xsd:string"/>
                    <xsd:element minOccurs="0" maxOccurs="1" name="DaysFromInvoice" type="xsd:string"/>
                    <xsd:element minOccurs="0" maxOccurs="1" name="DaysFromMonthEnd" type="xsd:string"/>
                    <xsd:element minOccurs="0" maxOccurs="1" name="DaysFromDelivery" type="xsd:string"/>
                    <xsd:element minOccurs="0" maxOccurs="1" name="PaidDate" type="dateTime"/>
                    <xsd:element minOccurs="0" maxOccurs="1" name="Description" type="xsd:string"/>
                  </xsd:choice>
                  <xsd:attribute use="optional" name="Code" type="xsd:string"/>
                  <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
                </xsd:complexType>
              </xsd:element>
              <xsd:element minOccurs="0" maxOccurs="1" name="SettlementMethod">
                <xsd:complexType>
                  <xsd:simpleContent>
                    <xsd:extension base="xsd:string">
                      <xsd:attribute use="optional" name="Code" type="xsd:string"/>
                      <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
                    </xsd:extension>
                  </xsd:simpleContent>
                </xsd:complexType>
              </xsd:element>
              <xsd:element minOccurs="0" maxOccurs="1" name="BankDetails">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element minOccurs="1" maxOccurs="1" name="BankCode" type="xsd:string"/>
                    <xsd:element minOccurs="1" maxOccurs="1" name="BankReference" type="xsd:string"/>
                    <xsd:element minOccurs="0" maxOccurs="1" name="GLN" type="xsd:string">
                      <xsd:annotation>
                        <xsd:documentation>Number conformant to UCC.EAN specification.</xsd:documentation>
                      </xsd:annotation>
                    </xsd:element>
                    <xsd:element minOccurs="0" maxOccurs="1" name="DUNS" type="DUNSType">
                      <xsd:annotation>
                        <xsd:documentation>Globally unique identifier issued by Dun &amp; Bradstreet.</xsd:documentation>
                      </xsd:annotation>
                    </xsd:element>
                    <xsd:element minOccurs="0" maxOccurs="1" name="Address" type="Address"/>
                    <xsd:element minOccurs="0" maxOccurs="unbounded" name="Contact" type="Contact"/>
                  </xsd:sequence>
                </xsd:complexType>
              </xsd:element>
              <xsd:element minOccurs="0" maxOccurs="1" name="CardDetails" type="CardDetails"/>
              <xsd:element minOccurs="0" maxOccurs="1" name="SettlementBy">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element minOccurs="0" maxOccurs="1" name="SettlementByReferences">
                      <xsd:complexType>
                        <xsd:sequence>
                          <xsd:element minOccurs="0" maxOccurs="1" name="GLN" type="xsd:string">
                            <xsd:annotation>
                              <xsd:documentation>Number conformant to UCC.EAN specification.</xsd:documentation>
                            </xsd:annotation>
                          </xsd:element>
                          <xsd:element minOccurs="0" maxOccurs="1" name="DUNS" type="DUNSType">
                            <xsd:annotation>
                              <xsd:documentation>Globally unique identifier issued by Dun &amp; Bradstreet.</xsd:documentation>
                            </xsd:annotation>
                          </xsd:element>
                        </xsd:sequence>
                      </xsd:complexType>
                    </xsd:element>
                    <xsd:element minOccurs="1" maxOccurs="unbounded" name="Party" type="xsd:string"/>
                    <xsd:element minOccurs="0" maxOccurs="1" name="Address" type="Address"/>
                    <xsd:element minOccurs="0" maxOccurs="unbounded" name="Contact" type="Contact"/>
                  </xsd:sequence>
                </xsd:complexType>
              </xsd:element>
              <xsd:element minOccurs="0" maxOccurs="unbounded" name="Contact" type="Contact"/>
              <xsd:element minOccurs="0" maxOccurs="unbounded" name="SettlementDiscount">
                <xsd:annotation>
                  <xsd:documentation>If the code defines an elapsed time from invoice, delivery or month end, the element text describes this. If the code value is "Date", the element text is the date in the same format as other date fields.</xsd:documentation>
                </xsd:annotation>
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element minOccurs="0" maxOccurs="1" name="PercentDiscount" type="PercentDiscount_Invoice"/>
                    <xsd:element minOccurs="1" maxOccurs="1" name="AmountDiscount" type="AmountDiscount"/>
                  </xsd:sequence>
                  <xsd:attribute use="optional" name="Code" type="xsd:string"/>
                  <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element minOccurs="1" maxOccurs="unbounded" name="TaxSubTotal">
          <xsd:annotation>
            <xsd:documentation>One instance for each individual tax rate used</xsd:documentation>
          </xsd:annotation>
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element minOccurs="1" maxOccurs="1" name="TaxRate" type="TaxRate"/>
              <xsd:element minOccurs="1" maxOccurs="1" name="NumberOfLinesAtRate" type="xdr:int"/>
              <xsd:element minOccurs="1" maxOccurs="1" name="TotalValueAtRate" type="xdr:decimal">
                <xsd:annotation>
                  <xsd:documentation>Sum of LineTotals in InvoiceLines charged at this rate. Value A in tax calculations</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element minOccurs="0" maxOccurs="1" name="SettlementDiscountAtRate" type="xdr:decimal">
                <xsd:annotation>
                  <xsd:documentation>Value of settlement discount associated with the TotalValueAtRate. Value B in tax calculations.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element minOccurs="1" maxOccurs="1" name="TaxableValueAtRate" type="xdr:decimal">
                <xsd:annotation>
                  <xsd:documentation>Goods value to which tax rate is applied.  C = A-B</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element minOccurs="1" maxOccurs="1" name="TaxAtRate" type="xdr:decimal">
                <xsd:annotation>
                  <xsd:documentation>Tax based on the taxable value with or without settlement discount according to the tax treatment of settlement discounts.  D = A*V/100 or D = C*V/100 according to the tax treatment of settlement discounts.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element minOccurs="1" maxOccurs="1" name="NetPaymentAtRate" type="xdr:decimal">
                <xsd:annotation>
                  <xsd:documentation>Value less settlement discount. E = C+D</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element minOccurs="1" maxOccurs="1" name="GrossPaymentAtRate" type="xdr:decimal">
                <xsd:annotation>
                  <xsd:documentation>Value before settlement discount.  F = A+D</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element minOccurs="1" maxOccurs="1" name="TaxCurrency">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element minOccurs="1" maxOccurs="1" name="Currency" type="Currency"/>
                    <xsd:element minOccurs="0" maxOccurs="1" name="AlternateCurrency" type="AlternateCurrency"/>
                    <xsd:element minOccurs="0" maxOccurs="1" name="Rate" type="Rate"/>
                  </xsd:sequence>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element minOccurs="1" maxOccurs="1" name="InvoiceTotal">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element minOccurs="1" maxOccurs="1" name="NumberOfLines" type="xdr:int"/>
              <xsd:element minOccurs="1" maxOccurs="1" name="NumberOfTaxRates" type="xdr:int"/>
              <xsd:element minOccurs="1" maxOccurs="1" name="LineValueTotal" type="xsd:decimal">
                <xsd:annotation>
                  <xsd:documentation>Value A in calculations</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element minOccurs="0" maxOccurs="1" name="FreightCharges" type="xdr:decimal">
                <xsd:annotation>
                  <xsd:documentation>Only for use in jurisdictions where such charges are non-taxable.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element minOccurs="0" maxOccurs="1" name="MiscCharges" type="xdr:decimal">
                <xsd:annotation>
                  <xsd:documentation>Only for use in jurisdictions where such charges are non-taxable.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element minOccurs="0" maxOccurs="1" name="SettlementDiscountTotal" type="xdr:decimal">
                <xsd:annotation>
                  <xsd:documentation>Value B in calculations</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element minOccurs="1" maxOccurs="1" name="TaxableTotal" type="xdr:decimal">
                <xsd:annotation>
                  <xsd:documentation>C = A-B</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element minOccurs="1" maxOccurs="1" name="TaxTotal" type="xdr:decimal">
                <xsd:annotation>
                  <xsd:documentation>Sum of TaxAtRate values from TaxSubTotal records. Value D in calculations.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element minOccurs="1" maxOccurs="1" name="NetPaymentTotal" type="xdr:decimal">
                <xsd:annotation>
                  <xsd:documentation>Total payment with settlement discount. E = C+D </xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element minOccurs="1" maxOccurs="1" name="GrossPaymentTotal" type="xdr:decimal">
                <xsd:annotation>
                  <xsd:documentation>Total invoice value before settlement discount. F=A+D</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:complexType name="DeliverFrom">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="DeliverFromReferences">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element minOccurs="0" maxOccurs="1" name="SuppliersCodeForLocation" type="xsd:string"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="BuyersCodeForLocation" type="xsd:string"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="GLN" type="xsd:string">
              <xsd:annotation>
                <xsd:documentation>Number conformant to UCC.EAN specification.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="DUNS" type="DUNSType">
              <xsd:annotation>
                <xsd:documentation>Globally unique identifier issued by Dun &amp; Bradstreet.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="unbounded" name="Party" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Address" type="Address"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Location" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>Location within address.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="Contact" type="Contact"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Schema">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="Version" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Stylesheet">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="StylesheetOwner" type="xsd:string"/>
      <xsd:element minOccurs="1" maxOccurs="1" name="StylesheetName" type="xsd:string"/>
      <xsd:element minOccurs="1" maxOccurs="1" name="Version" type="xsd:string"/>
      <xsd:element minOccurs="1" maxOccurs="1" name="StylesheetType" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Parameters">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="Language">
        <xsd:annotation>
          <xsd:documentation>This is a two character lower case ISO 639 code, optionally followed by a dash and two character upper case ISO 3166 country code. e.g. "en" or "en-US"</xsd:documentation>
        </xsd:annotation>
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:pattern value="[a-z]{2}([_-][A-Z]{2})?"/>
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="1" name="DecimalSeparator">
        <xsd:annotation>
          <xsd:documentation>The separator between the integer and decimal part of a number. "." or ","</xsd:documentation>
        </xsd:annotation>
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:minLength value="1"/>
            <xsd:maxLength value="1"/>
            <xsd:enumeration value=","/>
            <xsd:enumeration value="."/>
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="1" name="Precision" type="xdr:double">
        <xsd:annotation>
          <xsd:documentation>The precision of decimal values. e.g. 20.3 indicates up to 20 digits before the decimal separator and up to three after.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="OriginatingSoftware">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="SoftwareManufacturer" type="xsd:string"/>
      <xsd:element minOccurs="1" maxOccurs="1" name="SoftwareProduct" type="xsd:string"/>
      <xsd:element minOccurs="1" maxOccurs="1" name="SoftwareVersion" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="TestFlag" mixed="true">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="Test">
        <xsd:complexType>
          <xsd:attribute use="optional" name="ExpectedReply" type="xsd:string"/>
          <xsd:attribute use="required" name="Mode" type="xsd:string"/>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute use="optional" name="TestReference" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>This is the developer's reference, which will be returned in the test response.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:complexType name="InvoiceType">
    <xsd:annotation>
      <xsd:documentation>Invoice Classification Description</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute use="optional" name="Code" type="xsd:string"/>
        <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="Invoice_Function">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute use="optional" name="Code" type="xsd:string"/>
        <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="InvoiceCurrency">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="Currency" type="Currency"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="AlternateCurrency" type="AlternateCurrency"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Rate" type="Rate"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Currency">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
        <xsd:attribute use="required" name="Code" type="xsd:string"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="AlternateCurrency">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute use="required" name="Code" type="xsd:string"/>
        <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="Rate">
    <xsd:annotation>
      <xsd:documentation>If the CalculationType is "M" then AltInvoiceCurrency = Currency x Rate. If it is "D" then divide instead.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="xsd:decimal">
        <xsd:attribute use="required" name="CalculationType">
          <xsd:simpleType>
            <xsd:restriction base="xsd:string">
              <xsd:enumeration value="D"/>
              <xsd:enumeration value="M"/>
            </xsd:restriction>
          </xsd:simpleType>
        </xsd:attribute>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="Intrastat">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="CommodityCode" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="CommodityDescription" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="NatureOfTransaction">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute use="optional" name="Code" type="xsd:string"/>
              <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="SupplementaryUnits" type="xdr:int"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="CountryOfDestination">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute use="optional" name="Code" type="xsd:string"/>
              <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="ModeOfTransport">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute use="optional" name="Code" type="xsd:string"/>
              <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="InvoiceReferencesType">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="ContractOrderReference" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="CostCentre" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="BuyersOrderNumber">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute use="optional" name="Preserve">
                <xsd:simpleType>
                  <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="true"/>
                  </xsd:restriction>
                </xsd:simpleType>
              </xsd:attribute>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="Department" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="GeneralLedgerCode" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="ProjectCode">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute use="optional" name="Preserve">
                <xsd:simpleType>
                  <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="true"/>
                  </xsd:restriction>
                </xsd:simpleType>
              </xsd:attribute>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="ProjectAnalysisCode">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute use="optional" name="Preserve">
                <xsd:simpleType>
                  <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="true"/>
                  </xsd:restriction>
                </xsd:simpleType>
              </xsd:attribute>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="1" name="SuppliersInvoiceNumber">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute use="optional" name="Preserve">
                <xsd:simpleType>
                  <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="true"/>
                  </xsd:restriction>
                </xsd:simpleType>
              </xsd:attribute>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="DeliveryNoteNumber" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="SuppliersOrderReference" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="ResponseTo" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="BatchNumber" type="xsd:integer"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Supplier">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="SupplierReferences">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element minOccurs="0" maxOccurs="1" name="BuyersCodeForSupplier" type="xsd:string"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="TaxNumber" type="xsd:string"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="GLN" type="xsd:string">
              <xsd:annotation>
                <xsd:documentation>Number conformant to UCC.EAN specification.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="DUNS" type="DUNSType">
              <xsd:annotation>
                <xsd:documentation>Globally unique identifier issued by Dun &amp; Bradstreet.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="unbounded" name="Party" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Address" type="Address"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="Contact" type="Contact"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Address">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="AddressLine" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>Free format address lines may be used instead of (or in addition to) specific Street etc elements.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="Street" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="City" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="State" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>State/County/Province</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="PostCode" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>Post/ZIP code</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="Country">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute use="optional" name="Code" type="xsd:string"/>
              <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Contact">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="Name" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Department" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="InternalAddress" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="DDI" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Switchboard" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Fax" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Telex" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Email">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:pattern value=".*@.*\..*"/>
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="Mobile" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Buyer">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="BuyerReferences">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element minOccurs="0" maxOccurs="1" name="SuppliersCodeForBuyer" type="xsd:string"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="BuyersCodeForBuyer" type="xsd:string"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="TaxNumber" type="xsd:string"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="GLN" type="xsd:string">
              <xsd:annotation>
                <xsd:documentation>Number conformant to UCC.EAN specification.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="DUNS" type="DUNSType">
              <xsd:annotation>
                <xsd:documentation>Globally unique identifier issued by Dun &amp; Bradstreet.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="Organisation" type="xsd:string"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="unbounded" name="Party" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Address" type="Address"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="Contact" type="BuyerContact"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="BuyerContact">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="Name" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Department" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Section" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="UserID" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="InternalAddress" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="DDI" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Switchboard" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Fax" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Telex" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Email">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:pattern value=".*@.*\..*"/>
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="Mobile" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Delivery">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="DeliverTo">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element minOccurs="0" maxOccurs="1" name="DeliverToReferences">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element minOccurs="0" maxOccurs="1" name="BuyersCodeForDelivery">
                    <xsd:complexType>
                      <xsd:simpleContent>
                        <xsd:extension base="xsd:string">
                          <xsd:attribute use="optional" name="Preserve" type="xsd:boolean"/>
                        </xsd:extension>
                      </xsd:simpleContent>
                    </xsd:complexType>
                  </xsd:element>
                  <xsd:element minOccurs="0" maxOccurs="1" name="BuyersCodeForLocation" type="xsd:string"/>
                  <xsd:element minOccurs="0" maxOccurs="1" name="GLN" type="xsd:string">
                    <xsd:annotation>
                      <xsd:documentation>Number conformant to UCC.EAN specification.</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element minOccurs="0" maxOccurs="1" name="DUNS" type="DUNSType">
                    <xsd:annotation>
                      <xsd:documentation>Globally unique identifier issued by Dun &amp; Bradstreet.</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
            <xsd:element minOccurs="1" maxOccurs="unbounded" name="Party" type="xsd:string"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="Address" type="Address"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="Location" type="xsd:string">
              <xsd:annotation>
                <xsd:documentation>Location within address.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="unbounded" name="Contact" type="Contact"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="DeliverFrom" type="DeliverFrom"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Carrier" type="Carrier"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Quantity" type="Quantity"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="EarliestAcceptableDate" type="xdr:dateTime"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="LatestAcceptableDate" type="xdr:dateTime"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="PreferredDate" type="xdr:dateTime"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="SpecialInstructions" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="DeliveryInformation" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="Narrative" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>Use for any general narrative comments.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Carrier">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="CarrierReferences">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element minOccurs="0" maxOccurs="1" name="BuyersCodeForCarrier" type="xsd:string"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="GLN" type="xsd:string">
              <xsd:annotation>
                <xsd:documentation>Number conformant to UCC.EAN specification.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="DUNS" type="DUNSType">
              <xsd:annotation>
                <xsd:documentation>Globally unique identifier issued by Dun &amp; Bradstreet.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="unbounded" name="Party" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Address" type="Address"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="Contact" type="Contact"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Quantity">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="Packsize" type="xsd:string"/>
      <xsd:element minOccurs="1" maxOccurs="1" name="Amount" type="xsd:decimal"/>
    </xsd:sequence>
    <xsd:attribute use="optional" name="UOMCode" type="xsd:string"/>
    <xsd:attribute use="optional" name="UOMDescription" type="xsd:string"/>
    <xsd:attribute use="optional" name="UOMCodelist" type="xsd:string"/>
  </xsd:complexType>
  <xsd:simpleType name="UOMnumeric">
    <xsd:restriction base="xsd:string"/>
  </xsd:simpleType>
  <xsd:complexType name="InvoiceTo">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="InvoiceToReferences">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element minOccurs="0" maxOccurs="1" name="GLN" type="xsd:string">
              <xsd:annotation>
                <xsd:documentation>Number conformant to UCC.EAN specification.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="DUNS" type="DUNSType">
              <xsd:annotation>
                <xsd:documentation>Globally unique identifier issued by Dun &amp; Bradstreet.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="SuppliersCodeForInvoiceTo" type="xsd:string"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="unbounded" name="Party" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Address" type="Address"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="Contact" type="BuyerContact"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="InvoiceLine">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="LineNumber">
        <xsd:annotation>
          <xsd:documentation>The line number must be included as a reference in documents relating to this transaction.</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:int">
              <xsd:attribute use="optional" name="Preserve" type="xsd:boolean"/>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="InvoiceLineReferences" type="InvoiceLineReferences"/>
      <xsd:choice>
        <xsd:element minOccurs="0" maxOccurs="1" name="Extensions">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                  <xsd:documentation>This node allows extension of the eBIS XML spec.  Project specific data from other namespaces may be inserted at this point</xsd:documentation>
                </xsd:annotation>
              </xsd:any>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation>Deprecated. New implementations using eBIS-XML should place extensions within the Extensions element which follows.</xsd:documentation>
          </xsd:annotation>
        </xsd:any>
      </xsd:choice>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="Product" type="Product"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Quantity" type="Quantity"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="Price">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element minOccurs="0" maxOccurs="1" name="Units" type="xsd:string"/>
            <xsd:element minOccurs="1" maxOccurs="1" name="UnitPrice" type="xsd:decimal"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="SpecialPriceDescription" type="xsd:string"/>
          </xsd:sequence>
          <xsd:attribute use="optional" name="UOMCodelist" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Codelist from which the UOMCode is taken</xsd:documentation>
            </xsd:annotation>
          </xsd:attribute>
          <xsd:attribute use="optional" name="UOMCode" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Code representing the Unit of Measure used for defining "Units"</xsd:documentation>
            </xsd:annotation>
          </xsd:attribute>
          <xsd:attribute use="optional" name="UOMDescription" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Human readable descriptions of the Unit of Measure.</xsd:documentation>
            </xsd:annotation>
          </xsd:attribute>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="PercentDiscount" type="PercentDiscount_Invoice"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="AmountDiscount" type="AmountDiscount"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="LineTax">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element minOccurs="0" maxOccurs="1" name="MixedRateIndicator" type="xsd:string"/>
            <xsd:element minOccurs="1" maxOccurs="1" name="TaxRate" type="TaxRate"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="TaxValue" type="xdr:decimal"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="TaxRef" type="TaxRef"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="LineTotal" type="xsd:decimal"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="Delivery" type="Delivery"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="InvoiceLineInformation" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="ExtendedDescription" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="Narrative" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="LotSerial">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element minOccurs="1" maxOccurs="1" name="LotSerialType">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="xsd:string">
                    <xsd:attribute use="required" name="Code" type="xsd:string"/>
                    <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
            <xsd:element minOccurs="1" maxOccurs="1" name="LotSerialNumber" type="xsd:string"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="Quantity" type="Quantity"/>
            <xsd:element minOccurs="0" maxOccurs="unbounded" name="LotSerialDates">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element minOccurs="0" maxOccurs="1" name="BestBeforeDate" type="dateTime"/>
                  <xsd:element minOccurs="0" maxOccurs="1" name="DeliveryDate" type="dateTime"/>
                  <xsd:element minOccurs="0" maxOccurs="1" name="DespatchDate" type="dateTime"/>
                  <xsd:element minOccurs="0" maxOccurs="1" name="OnSaleByDate" type="dateTime"/>
                  <xsd:element minOccurs="0" maxOccurs="1" name="SellByDate" type="dateTime"/>
                  <xsd:element minOccurs="0" maxOccurs="1" name="ShelfLifeDate" type="dateTime"/>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="unbounded" name="Narrative" type="xsd:string"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="Intrastat" type="Intrastat"/>
    </xsd:sequence>
    <xsd:attribute use="optional" name="Action">
      <xsd:simpleType>
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Add"/>
          <xsd:enumeration value="Change"/>
          <xsd:enumeration value="Delete"/>
        </xsd:restriction>
      </xsd:simpleType>
    </xsd:attribute>
    <xsd:attribute use="optional" name="TypeCode" type="xsd:string"/>
    <xsd:attribute use="optional" name="TypeDescription" type="xsd:string"/>
    <xsd:attribute use="optional" name="TypeCodelist" type="xsd:string"/>
  </xsd:complexType>
  <xsd:complexType name="InvoiceLineReferences">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="ContractOrderReference" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="CostCentre" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="GeneralLedgerCode" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="ProjectCode">
        <xsd:annotation>
          <xsd:documentation>This value should be included as a reference in documents relating to this transaction.</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute use="optional" name="Preserve" type="xsd:boolean"/>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="ProjectAnalysisCode">
        <xsd:annotation>
          <xsd:documentation>This value should be included as a reference in documents relating to this transaction.</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute use="optional" name="Preserve" type="xsd:boolean"/>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="BuyersOrderNumber">
        <xsd:annotation>
          <xsd:documentation>This field must be included in either the InvoiceReferences or InvoiceLineReferences</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute use="optional" name="Preserve" type="xsd:boolean"/>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="1" name="OrderLineNumber" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>Should be a line number, should not be blank.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="BuyersOrderLineReference" type="BuyersOrderLineReference"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="DeliveryNoteNumber" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="DeliveryNoteLineNumber" type="xsd:integer"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="BuyersOrderLineReference">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute use="optional" name="Preserve">
          <xsd:simpleType>
            <xsd:restriction base="xsd:string">
              <xsd:enumeration value="true"/>
            </xsd:restriction>
          </xsd:simpleType>
        </xsd:attribute>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="Product">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="SuppliersProductCode" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="BuyersProductCode" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="TradedUnitCode" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>Number conformant to UCC.EAN specification.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="ConsumerUnitCode" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>EAN-13 barcode number.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="0" maxOccurs="1" name="Description" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Properties">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element minOccurs="0" maxOccurs="1" name="Quantity" type="Quantity"/>
            <xsd:element minOccurs="0" maxOccurs="1" name="Length">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="xsd:decimal">
                    <xsd:attribute use="optional" name="UOMDescription" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCode" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCodelist" type="xsd:string"/>
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="Width">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="xdr:double">
                    <xsd:attribute use="optional" name="UOMDescription" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCode" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCodelist" type="xsd:string"/>
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="Depth">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="xdr:double">
                    <xsd:attribute use="optional" name="UOMDescription" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCode" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCodelist" type="xsd:string"/>
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="Weight">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="xdr:double">
                    <xsd:attribute use="optional" name="UOMDescription" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCode" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCodelist" type="xsd:string"/>
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="Volume">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="xdr:double">
                    <xsd:attribute use="optional" name="UOMDescription" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCode" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCodelist" type="xsd:string"/>
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="Height">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="xdr:double">
                    <xsd:attribute use="optional" name="UOMDescription" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCode" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCodelist" type="xsd:string"/>
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="Size">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="xdr:double">
                    <xsd:attribute use="optional" name="UOMDescription" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCode" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCodelist" type="xsd:string"/>
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="1" name="Color">
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="xsd:string">
                    <xsd:attribute use="optional" name="UOMDescription" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCode" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCodelist" type="xsd:string"/>
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
            <xsd:element minOccurs="0" maxOccurs="unbounded" name="Other">
              <xsd:annotation>
                <xsd:documentation>Other properties (such as "Fitting") added by the user.</xsd:documentation>
              </xsd:annotation>
              <xsd:complexType>
                <xsd:simpleContent>
                  <xsd:extension base="xsd:string">
                    <xsd:attribute use="required" name="Description" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMDescription" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCode" type="xsd:string"/>
                    <xsd:attribute use="optional" name="UOMCodelist" type="xsd:string"/>
                  </xsd:extension>
                </xsd:simpleContent>
              </xsd:complexType>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:simpleType name="UOMlength">
    <xsd:restriction base="xsd:string"/>
  </xsd:simpleType>
  <xsd:simpleType name="UOMweight">
    <xsd:restriction base="xsd:string"/>
  </xsd:simpleType>
  <xsd:simpleType name="UOMvolume">
    <xsd:restriction base="xsd:string"/>
  </xsd:simpleType>
  <xsd:complexType name="PercentDiscount_Invoice">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="QualifyingTerms" type="QualifyingTerms"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Type">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute use="optional" name="Code" type="xsd:string"/>
              <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="1" name="Percentage" type="xdr:decimal"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="QualifyingTerms">
    <xsd:annotation>
      <xsd:documentation>If a codelist is to be used then the code defines an elapsed time from invoice or delivery, the child element Description should be used to describe this. If the code value is "Date", the element PayByDate should be used in the same format as other date fields</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="PayByDate" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="DaysFromInvoice" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="DaysFromMonthEnd" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="DaysFromDelivery" type="xsd:string"/>
    </xsd:sequence>
    <xsd:attribute use="optional" name="Code" type="xsd:string"/>
    <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
  </xsd:complexType>
  <xsd:complexType name="AmountDiscount">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="QualifyingTerms" type="QualifyingTerms"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Type">
        <xsd:complexType>
          <xsd:simpleContent>
            <xsd:extension base="xsd:string">
              <xsd:attribute use="optional" name="Code" type="xsd:string"/>
              <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
            </xsd:extension>
          </xsd:simpleContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="1" name="Amount" type="xdr:decimal"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="TaxRate">
    <xsd:annotation>
      <xsd:documentation>Value V in tax calculations. Code meanings: Standard(S), Zero (eg. Export) (Z), Exempt(E), Lower Rate(L), Higher Rate(H), Other(N).</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="xsd:decimal">
        <xsd:attribute use="required" name="Code" type="xsd:string"/>
        <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="TaxRef">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute use="optional" name="Code" type="xsd:string"/>
        <xsd:attribute use="optional" name="Codelist" type="xsd:string"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:simpleType name="DUNSType">
    <xsd:annotation>
      <xsd:documentation>Identification number assigned by D&amp;B. Dun and BradStreet D-U-N-S NUMBER should contain only 9 numeric characters (no spaces, dashes, etc.)</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:integer">
      <xsd:pattern value="\d{9}"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="dateTime">
    <xsd:annotation>
      <xsd:documentation>Similar to the xdr dateTime, but does not allow the field to be left blank.</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xdr:dateTime">
      <xsd:pattern value=".+"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="IssueDateType">
    <xsd:annotation>
      <xsd:documentation>Month represented as a month number and a 2-4 digit year separated by a /, such as is used on credit cards.</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="\d{2}[-/. ]\d{2,4}"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name="CardDetails">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="Issuer" type="xsd:string"/>
      <xsd:element minOccurs="1" maxOccurs="1" name="Party" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Address" type="Address"/>
      <xsd:choice>
        <xsd:element minOccurs="0" maxOccurs="1" name="IssueDate" type="xsd:date">
          <xsd:annotation>
            <xsd:documentation>Deprecated in favour of the ValidFrom element as issue dates are not in xsd:date format.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element minOccurs="0" maxOccurs="1" name="ValidFrom" type="IssueDateType"/>
      </xsd:choice>
      <xsd:choice>
        <xsd:element minOccurs="1" maxOccurs="1" name="ExpiryDate" type="xsd:date">
          <xsd:annotation>
            <xsd:documentation>Deprecated in favour of the ExpiresEnd element as issue dates are not in xsd:date format.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element minOccurs="1" maxOccurs="1" name="ExpiresEnd" type="IssueDateType"/>
      </xsd:choice>
      <xsd:element minOccurs="0" maxOccurs="1" name="IssueNumber" type="xsd:int"/>
      <xsd:element minOccurs="1" maxOccurs="1" name="CardNumber" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="AuthorisationCode" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="SecurityCode" type="xsd:int"/>
    </xsd:sequence>
    <xsd:attribute use="required" name="CardType">
      <xsd:simpleType>
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="Charge"/>
          <xsd:enumeration value="Credit"/>
          <xsd:enumeration value="Debit"/>
        </xsd:restriction>
      </xsd:simpleType>
    </xsd:attribute>
  </xsd:complexType>
</xsd:schema>

