<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.egis-online.de/EBC/schema/PurchaseOrderRequest"
    xmlns="http://www.egis-online.de/EBC/schema/PurchaseOrderRequest" elementFormDefault="qualified">
    <xs:element name="PurchaseOrderRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="TransactionHeader"/>
                <xs:element ref="PurchaseOrder"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="TransactionHeader">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="VersionId"/>
                <xs:element ref="GenerationDateTime"/>
                <xs:element ref="ERP"/>
                <xs:element ref="Login"/>
                <xs:element ref="Password"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="VersionId" type="xs:decimal"/>
    <xs:element name="GenerationDateTime" type="xs:dateTime"/>
    <xs:element name="ERP" type="xs:string"/>
    <xs:element name="Login">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="40"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Password">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="40"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="PurchaseOrder">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Header"/>
                <xs:element ref="Body"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Header">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="PurchaseOrderReference"/>
                <xs:element ref="DocumentReference"/>
                <xs:element ref="BillTo" maxOccurs="1" minOccurs="0"/>
                <xs:element ref="ShipTo" maxOccurs="1" minOccurs="0"/>
                <xs:element ref="DeliveryInformation"/>
                <xs:element ref="ShipmentInformation"/>
                <xs:element ref="Consignee"/>
                <xs:element ref="CashOnDelivery" maxOccurs="1" minOccurs="0"/>
                <xs:element ref="Fulfillment" maxOccurs="1" minOccurs="0"/>
                <xs:element ref="LicenceData" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="Comment"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="OrderTypeDefinition">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="OrderTypeCategorie"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="OrderTypeCategorie" nillable="false">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value="Offline"/>
                <xs:enumeration value="Online"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="DocumentReference">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="CustomerReference"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="PurchaseOrderReference">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="PartnerPurchaseOrderIdentifier"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="PartnerPurchaseOrderIdentifier">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="PartnerPurchaseOrderNumber"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="PartnerPurchaseOrderNumber" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="25"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="CustomerReference">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="PartnerCustomerIdentifier"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="PartnerCustomerIdentifier">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="PartnerCustomerNumber"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="PartnerCustomerNumber" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="20"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="BillTo">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ContactInformation" maxOccurs="1" minOccurs="0"/>
                <xs:element ref="Address"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="ShipTo">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ContactInformation" maxOccurs="1" minOccurs="0"/>
                <xs:element ref="Address"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Consignee">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="DistributorDescription"/>
                <xs:element ref="OrderTypeDefinition"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="DistributorDescription">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="DistributorName"/>
                <xs:element ref="ProprietaryDistributorIdentifier"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="DistributorName">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="35"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="ProprietaryDistributorIdentifier">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ProprietaryDistributorNumber"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="ProprietaryDistributorNumber">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="10"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Body">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="LineItem"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="CashOnDelivery">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="MonetaryAmount"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Fulfillment">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Distribution"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Distribution">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Required"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Required">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value="yes"/>
                <xs:enumeration value="no"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="LineItem">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="LineNumber"/>
                <xs:element ref="ProductIdentification"/>
                <xs:element ref="OrderQuantity"/>
                <xs:element ref="UnitPrice"/>
                <xs:element ref="UnitOfMeasure"/>
                <xs:element ref="DeliveryInformation"/>
                <xs:element ref="CustomerEMail" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="LicenceData" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="Comment" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="ProjectNumber" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="BundleId" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="LineNumber" type="xs:positiveInteger"/>
    <xs:element name="ProductIdentification">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ProprietaryProductNumber" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="ProprietaryProductDescription" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="DistributorProductNumber"/>
                <xs:element ref="DistributorProductDescription" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="ManufacturerProductNumber" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="GlobalProductNumber" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="ProprietaryProductNumber" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="10"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="ProprietaryProductDescription" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="100"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="DistributorProductNumber">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="25"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="DistributorProductDescription">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="100"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="ManufacturerProductNumber" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="50"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="GlobalProductNumber" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="15"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="OrderQuantity">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="RequestedQuantity"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="RequestedQuantity" type="xs:positiveInteger"/>
    <xs:element name="UnitPrice">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="MonetaryAmount"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="MonetaryAmount" type="xs:decimal"/>
    <xs:element name="UnitOfMeasure" type="xs:string" nillable="true"/>
    <xs:element name="DeliveryInformation">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="RequestedDeliveryDate"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="RequestedDeliveryDate" nillable="true" type="dateType"/>
    <xs:element name="ShipmentInformation">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="CompleteShipmentDesired"/>
                <xs:element ref="ShipmentTerms" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="CompleteShipmentDesired">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value="yes"/>
                <xs:enumeration value="no"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Comment">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="AdditionalText"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="ShipmentTerms">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="10"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="AdditionalText" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="200"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="ContactInformation">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ContactName"/>
                <xs:element ref="EmailAddress"/>
                <xs:element ref="TelefonNumber"/>
                <xs:element ref="FacsimileNumber"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="ContactName">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="40"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="EmailAddress">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="50"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="TelefonNumber" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="25"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="FacsimileNumber" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="25"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Address">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Name1"/>
                <xs:element ref="Name2"/>
                <xs:element ref="Name3"/>
                <xs:element ref="Street"/>
                <xs:element ref="City"/>
                <xs:element ref="PostalCode"/>
                <xs:element ref="GlobalCountryCode"/>
                <xs:element ref="Locality" minOccurs="0"/>
                <xs:element ref="County" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Name1">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="40"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Name2" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="35"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Name3" nillable="true">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="35"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Street">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="50"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="City">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="35"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="PostalCode">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="10"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="GlobalCountryCode">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="2"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Locality">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="35"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="County">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="35"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="CustomerEMail">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="50"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="LicenceData">
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:element name="Name" type="xs:string" minOccurs="0"/>
                <xs:element name="Street" type="xs:string" minOccurs="0"/>
                <xs:element name="City" type="xs:string" minOccurs="0"/>
                <xs:element name="PostalCode" type="xs:string" minOccurs="0"/>
                <xs:element name="GlobalCountryCode" minOccurs="0">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:maxLength value="2"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="EmailAddress" type="xs:string" minOccurs="0"/>
                <xs:element name="Domain" type="xs:string" minOccurs="0"/>
                <xs:element name="TelephoneNumber" type="xs:string" minOccurs="0"/>
                <xs:element name="ContactName" type="xs:string" minOccurs="0"/>
                <xs:element name="ResellerEmail" type="xs:string" minOccurs="0"/>
                <xs:element name="AuthorizationNumber" type="xs:string" minOccurs="0"/>
                <xs:element name="AuthorizationValidFrom" type="dateType" minOccurs="0"/>
                <xs:element name="AuthorizationValidTo" type="dateType" minOccurs="0"/>
				<xs:element name="SerialNumbers" type="xs:string" minOccurs="0"/>
				<xs:element name="PurchaseDate" type="dateType" minOccurs="0"/>
				<xs:element name="CustomerNo" type="xs:string" minOccurs="0"/>
				<xs:element name="Superuser" type="xs:string" minOccurs="0"/>
				<xs:element name="EaNumber" type="xs:string" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:simpleType name="dateType">
        <xs:union>
            <xs:simpleType>
                <xs:restriction base="xs:date">
                    <xs:pattern value="[^:Z]*"/>
                </xs:restriction>
            </xs:simpleType>
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:pattern value=""/>
                </xs:restriction>
            </xs:simpleType>
        </xs:union>
    </xs:simpleType>
    <xs:element name="ProjectNumber">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="35"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
	<xs:element name="BundleId" type="xs:integer"/>
</xs:schema>
