<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">

	<xs:annotation>
		<xs:documentation>
			Docura XML — ORDER. Purchase order sent by the buyer to the supplier.
			UTF-8, one order per file. Dates CCYY-MM-DD, decimal separator ".".
			See wiki page Docura_XML_ORDER for field descriptions.
		</xs:documentation>
	</xs:annotation>

	<!-- ============ Common types ============ -->

	<xs:simpleType name="ILNType">
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{13}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="DateType">
		<xs:restriction base="xs:date"/>
	</xs:simpleType>

	<xs:simpleType name="CountryType">
		<xs:restriction base="xs:string">
			<xs:pattern value="[A-Z]{2}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="DocumentFunctionCodeType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="9"/>
			<xs:enumeration value="4"/>
			<xs:enumeration value="3"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="UnitOfMeasureType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="PCE"/>
			<xs:enumeration value="KGM"/>
			<xs:enumeration value="DPA"/>
		</xs:restriction>
	</xs:simpleType>

	<!-- Full party (Buyer, Seller, DeliveryPoint, UltimateCustomer) -->
	<xs:complexType name="PartyType">
		<xs:sequence>
			<xs:element name="ILN" type="ILNType"/>
			<xs:element name="Name" type="xs:string" minOccurs="0"/>
			<xs:element name="TaxID" type="xs:string" minOccurs="0"/>
			<xs:element name="UtilizationRegisterNumber" type="xs:string" minOccurs="0"/>
			<xs:element name="StreetAndNumber" type="xs:string" minOccurs="0"/>
			<xs:element name="CityName" type="xs:string" minOccurs="0"/>
			<xs:element name="PostalCode" type="xs:string" minOccurs="0"/>
			<xs:element name="Country" type="CountryType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>

	<!-- ============ Root ============ -->

	<xs:element name="Document-Order">
		<xs:complexType>
			<xs:sequence>

				<xs:element name="Order-Header">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="OrderNumber" type="xs:string"/>
							<xs:element name="OrderDate" type="DateType"/>
							<xs:element name="ExpectedDeliveryDate" type="DateType" minOccurs="0"/>
							<xs:element name="DocumentFunctionCode" type="DocumentFunctionCodeType"/>
							<xs:element name="Remarks" type="xs:string" minOccurs="0"/>
							<xs:element name="Reference" minOccurs="0">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="ContractNumber" type="xs:string" minOccurs="0"/>
										<xs:element name="ContractDate" type="DateType" minOccurs="0"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>

				<xs:element name="Document-Parties">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Sender">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="ILN" type="ILNType"/>
										<xs:element name="Name" type="xs:string" minOccurs="0"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="Receiver">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="ILN" type="ILNType"/>
										<xs:element name="Name" type="xs:string" minOccurs="0"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="Creator" minOccurs="0">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Name" type="xs:string" minOccurs="0"/>
										<xs:element name="TelephoneNumber" type="xs:string" minOccurs="0"/>
										<xs:element name="E-mail" type="xs:string" minOccurs="0"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>

				<xs:element name="Order-Parties">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Buyer" type="PartyType"/>
							<xs:element name="Seller" type="PartyType"/>
							<xs:element name="DeliveryPoint" type="PartyType"/>
							<xs:element name="UltimateCustomer" type="PartyType" minOccurs="0"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>

				<xs:element name="Order-Lines">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Line" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Line-Item">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="LineNumber" type="xs:string"/>
													<xs:element name="EAN" minOccurs="0">
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:pattern value="[0-9]{13,14}"/>
															</xs:restriction>
														</xs:simpleType>
													</xs:element>
													<xs:element name="SupplierItemCode" type="xs:string" minOccurs="0"/>
													<xs:element name="BuyerItemCode" type="xs:string" minOccurs="0"/>
													<xs:element name="ItemDescription" type="xs:string" minOccurs="0"/>
													<xs:element name="OrderedQuantity" type="xs:decimal"/>
													<xs:element name="OrderedBoxes" type="xs:decimal" minOccurs="0"/>
													<xs:element name="UnitOfMeasure" type="UnitOfMeasureType" minOccurs="0"/>
													<xs:element name="OrderedUnitNetPrice" type="xs:decimal" minOccurs="0"/>
													<xs:element name="OrderedNetAmount" type="xs:decimal" minOccurs="0"/>
													<xs:element name="NetWeight" type="xs:decimal" minOccurs="0"/>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>

				<xs:element name="Order-Summary">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="TotalLines" type="xs:nonNegativeInteger"/>
							<xs:element name="TotalOrderedAmount" type="xs:decimal"/>
							<xs:element name="TotalNetAmount" type="xs:decimal" minOccurs="0"/>
							<xs:element name="TotalTaxAmount" type="xs:decimal" minOccurs="0"/>
							<xs:element name="TotalGrossAmount" type="xs:decimal" minOccurs="0"/>
							<xs:element name="TotalNetWeight" type="xs:decimal" minOccurs="0"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>

			</xs:sequence>
		</xs:complexType>
	</xs:element>

</xs:schema>
