<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.egis-online.de/EBC/schema/InvoiceQuery"
    xmlns="http://www.egis-online.de/EBC/schema/InvoiceQuery"
    elementFormDefault="qualified">
    <xsd:element name="InvoiceQuery">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="TransactionHeader"/>
                <xsd:element name="Invoice">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element ref="Query"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="TransactionHeader">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="VersionId" type="xsd:decimal"/>
                <xsd:element name="GenerationDateTime" type="xsd:dateTime"/>
                <xsd:element ref="ERP"/>
                <xsd:element name="Login">
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:string">
                            <xsd:minLength value="1"/>
                            <xsd:maxLength value="40"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:element>
                <xsd:element name="Password">
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:string">
                            <xsd:minLength value="1"/>
                            <xsd:maxLength value="40"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="ERP" type="xsd:string"/>
    <xsd:element name="Query">
        <xsd:complexType>
            <xsd:choice>
                <xsd:element ref="DocumentReference"/>
                <xsd:element ref="DocumentDate"/>
            </xsd:choice>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="DocumentReference">
        <xsd:complexType>
            <xsd:choice>
                <xsd:element ref="PurchaseOrderReference"/>
                <xsd:element ref="InvoiceReference"/>
            </xsd:choice>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="PurchaseOrderReference">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="ProprietaryPurchaseOrderIdentifier"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="InvoiceReference">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="ProprietaryInvoiceIdentifier"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="ProprietaryInvoiceIdentifier">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="ProprietaryInvoiceId"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="DocumentDate">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="InvoiceDate"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="InvoiceDate">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="DateFrom"/>
                <xsd:element ref="DateTo"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="DateFrom">
        <xsd:simpleType>
            <xsd:restriction base="xsd:date">
                <xsd:pattern value="[^:Z]*"/>
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:element>
    <xsd:element name="DateTo">
        <xsd:simpleType>
            <xsd:restriction base="xsd:date">
                <xsd:pattern value="[^:Z]*"/>
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:element>
    <xsd:element name="ProprietaryPurchaseOrderIdentifier">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="ProprietaryPurchaseOrderNumber">
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:string">
                            <xsd:maxLength value="10"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>