<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.bmd.at/xsd/ORDER/2.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:bmd="http://www.bmd.at/xsd/COMMONTYPES/2.0/" targetNamespace="http://www.bmd.at/xsd/ORDER/2.0/" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="http://www.bmd.at/xsd/COMMONTYPES/2.0/" schemaLocation="../../COMMONTYPES/2.0/COMMONTYPES.xsd"/>
	<xs:annotation>
		<xs:documentation>
            schema version: 2.0
            last update: 2026-10-29
            documentation: https://www.bmd.at/xsd/ORDER/2.0/ORDER.xsd
        </xs:documentation>
	</xs:annotation>
	<!-- === Includes === -->
	<xs:include schemaLocation="ORDER_DOCUMENTS.xsd"/>
	<!-- === Root  Element === -->
	<xs:element name="Order" type="OrderType"/>
	<!-- === Element Declarations === -->
	<xs:element name="MessageHeader" type="bmd:MessageHeaderType"/>
	<xs:element name="OrderDate" type="xs:date"/>
	<xs:element name="DeliveryDateRequested" type="xs:date"/>
	<xs:element name="DeliveryDateConfirmed" type="xs:date"/>
	<xs:element name="DeliveryTimeFrom" type="xs:time"/>
	<xs:element name="DeliveryTimeTo" type="xs:time"/>
	<xs:element name="DeliveryDate" type="xs:date"/>
	<xs:element name="Distributor" type="bmd:DistributorType"/>
	<xs:element name="OrderingParty" type="bmd:OrderingPartyType"/>
	<xs:element name="InvoiceRecipient" type="bmd:InvoiceRecipientType"/>
	<xs:element name="DeliveryRecipient" type="bmd:DeliveryRecipientType"/>
	<xs:element name="Shipper" type="bmd:ShipperType"/>
	<xs:element name="EANCode" type="xs:string"/>
	<xs:element name="DistributorsArticleNo" type="xs:string"/>
	<xs:element name="CustomersArticleNo" type="xs:string"/>
	<xs:element name="Colour" type="xs:int"/>
	<xs:element name="Size" type="xs:string"/>
	<xs:element name="DistributorsArticleName" type="xs:string"/>
	<xs:element name="CustomersArticleName" type="xs:string"/>
	<xs:element name="OrderReference" type="xs:string"/>
	<xs:element name="OrderReferenceSupplier" type="xs:string"/>
	<xs:element name="TermsOfDelivery" type="xs:string"/>
	<xs:element name="ModeOfTransport" type="bmd:ModeOfTransportType"/>
	<xs:element name="OrderPosNumber" type="xs:int"/>
	<xs:element name="OrderPosReferenceCustomer" type="xs:string"/>
	<xs:element name="OrderPosReferenceSupplier" type="xs:string"/>
	<xs:element name="Agent" type="bmd:ContactPersonType"/>
	<xs:element name="InfoFromCustomerToDistributor" type="xs:string"/>
	<xs:element name="InfoFromDistributorToCustomer" type="xs:string"/>
	<xs:element name="OrderQuantity" type="bmd:UnitType"/>
	<xs:element name="OrderCount" type="bmd:Decimal4Type"/>
	<xs:element name="OrderLength" type="bmd:Decimal4Type"/>
	<xs:element name="OrderWidth" type="bmd:Decimal4Type"/>
	<xs:element name="OrderHeight" type="bmd:Decimal4Type"/>
	<xs:element name="ItemList" type="ItemListType"/>
	<xs:element name="EmptyListLineItem" type="EmptyListLineItemType"/>
	<xs:element name="NoOrder" type="EmptyListLineItemType"/>
	<xs:element name="ListLineGroup" type="ListLineGroupType"/>
	<xs:element name="ListLineItem" type="ListLineItemType"/>
	<xs:element name="Price" type="bmd:PriceType"/>
	<xs:element name="Documents" type="DocumentsType"/>
	<!-- deprecated-->
	<xs:element name="RebateAmount" type="bmd:AmountType"/>
	<xs:element name="DiscountPercentage" type="bmd:Decimal4Type"/>
	<xs:element name="DiscountPercentage2" type="bmd:Decimal4Type"/>
	<xs:element name="DiscountPercentage3" type="bmd:Decimal4Type"/>
	<xs:element name="DiscountPercentage4" type="bmd:Decimal4Type"/>
	<xs:element name="DiscountAmount" type="bmd:Decimal4Type"/>
	<xs:element name="GrossPrice" type="xs:boolean"/>
	<xs:element name="PaymentReference" type="xs:string"/>
	<xs:element name="ArticleDescription" type="bmd:TranslatableText"/>
	<xs:element name="PieceListVariations" type="PieceListVariationsType"/>
	<xs:element name="PieceListVariationItem" type="PieceListVariationItemType"/>
	<xs:element name="ExtendedOrderFieldList" type="bmd:ExtendedFieldListType"/>
	<xs:element name="ExtendedItemFieldList" type="bmd:ExtendedFieldListType"/>
	<xs:element name="ListLineGroupText" type="xs:string"/>
	<xs:element name="ServiceData" type="ServiceDataType"/>
	<xs:element name="SerialNumber" type="xs:string"/>
	<xs:element name="ArticleNo" type="xs:string"/>
	<xs:element name="ServiceMeasure" type="xs:positiveInteger"/>
	<xs:element name="ServiceEmployee" type="xs:positiveInteger"/>
	<xs:element name="ServiceDate" type="xs:date"/>
	<xs:element name="ServiceCounter1" type="ServiceCounterTyp"/>
	<xs:element name="ServiceCounter2" type="ServiceCounterTyp"/>
	<xs:element name="ServiceCounter3" type="ServiceCounterTyp"/>
	<xs:element name="InvoiceEmail" type="xs:string"/>
	<!-- === Attribute Declarations === -->
	<xs:attribute name="DocumentTitle" type="xs:string"/>
	<xs:attribute name="DocumentType" type="DocumentTypeType"/>
	<xs:attribute name="GeneratingSystem" type="xs:string"/>
	<xs:attribute name="IdentificationType" type="xs:string"/>
	<xs:attribute name="Language" type="bmd:LanguageType"/>
	<xs:attribute name="TaxCode" type="xs:string"/>
	<xs:attribute name="Unit" type="xs:string"/>
	<xs:attribute name="ListLineGroupNumber" type="xs:int"/>
	<xs:attribute name="ListLineGroupName" type="xs:string"/>
	<!-- === Simple Types === -->
	<xs:simpleType name="DocumentTypeType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Order"/>
			<xs:enumeration value="RequestForOffer"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- === Complex Types === -->
	<!-- OrderType: information about customer orders; in NTCS data can be exported for arbitrary customer orders ("Bestellung"); Additionally XML-orders can be imported as sales order (Auftrag) -->
	<xs:complexType name="OrderType">
		<xs:sequence>
			<xs:element ref="MessageHeader" minOccurs="0"/>
			<!-- information about the distributor -->
			<xs:element ref="Distributor" minOccurs="0"/>
			<!-- information about the party ordering some goods -->
			<xs:element ref="OrderingParty"/>
			<!-- invoice recipient stated by the ordering party -->
			<xs:element ref="InvoiceRecipient" minOccurs="0"/>
			<!-- delivery recipient stated by the ordering party -->
			<xs:element ref="DeliveryRecipient" minOccurs="0"/>
			<!-- shipper who is ordered for the sales order -->
			<xs:element ref="Shipper" minOccurs="0"/>
			<!-- unique reference of the order within the sending information system -->
			<xs:element ref="OrderReference" minOccurs="0"/>
			<!-- order reference provided by the supplier -->
			<xs:element ref="OrderReferenceSupplier" minOccurs="0"/>			
			<!-- the agent/contact person who issued the order -->
			<xs:element ref="Agent" minOccurs="0"/>
			<!-- info provided by the customer -->
			<xs:element ref="InfoFromCustomerToDistributor" minOccurs="0"/>
			<!-- info provided by the distributor -->
			<xs:element ref="InfoFromDistributorToCustomer" minOccurs="0"/>			
			<!-- date of the order -->
			<xs:element ref="OrderDate" minOccurs="0"/>
			<!-- delivery date requested by the ordering party -->
			<xs:element ref="DeliveryDateRequested" minOccurs="0"/>
			<!-- delivery date confirmed by the distributor -->
			<xs:element ref="DeliveryDateConfirmed" minOccurs="0"/>
			<!-- delivery time: start of period -->
			<xs:element ref="DeliveryTimeFrom" minOccurs="0"/>
			<!-- delivery time: end of period -->
			<xs:element ref="DeliveryTimeTo" minOccurs="0"/>
			<!-- terms of delivery -->
			<xs:element ref="TermsOfDelivery" minOccurs="0"/>
			<!-- information about the mode of transport -->
			<xs:element ref="ModeOfTransport" minOccurs="0"/>
			<!-- email adress for invoice  -->
			<xs:element name="InvoiceEmail" minOccurs="0"/>
			<!-- indicates, of prices are gross prices (true) or net prices (false) -->
			<xs:element ref="GrossPrice" minOccurs="0"/>
			<!-- appointed total discount -->
			<xs:element name="DiscountPercentage" type="bmd:Decimal4Type" minOccurs="0"/>
			<xs:element name="DiscountPercentage2" type="bmd:Decimal4Type" minOccurs="0"/>
			<xs:element name="DiscountPercentage3" type="bmd:Decimal4Type" minOccurs="0"/>
			<xs:element name="DiscountPercentage4" type="bmd:Decimal4Type" minOccurs="0"/>
			<xs:element name="DiscountAmount" type="bmd:Decimal4Type" minOccurs="0"/>
			<!-- refernce number for payment -->
			<xs:element ref="PaymentReference" minOccurs="0"/>
			<!-- ServiceData -->
			<xs:element ref="ServiceData" minOccurs="0"/>
			<!-- Documents -->
			<xs:element ref="Documents" minOccurs="0"/>
			<!-- Additional Fieldlist -->
			<xs:element ref="ExtendedOrderFieldList" minOccurs="0"/>
			<!-- List of ordered items -->
			<xs:choice minOccurs="0" maxOccurs="1">
				<xs:element ref="ItemList"/>
				<xs:element ref="NoOrder"/>
			</xs:choice>
			<!-- PresentationDetails -->
			<xs:element ref="bmd:PresentationDetails" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute ref="GeneratingSystem" use="required"/>
		<xs:attribute ref="DocumentType" use="required"/>
		<xs:attribute ref="DocumentTitle" use="optional"/>
		<xs:attribute ref="Language" use="optional"/>
	</xs:complexType>
	<xs:complexType name="ItemListType">
		<xs:sequence>
			<xs:choice maxOccurs="unbounded">
				<xs:element ref="ListLineItem"/>
				<xs:element ref="ListLineGroup"/>
				<xs:element ref="EmptyListLineItem"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="EmptyListLineItemType"/>
	<xs:complexType name="ListLineGroupType">
		<xs:sequence>
			<xs:element ref="ListLineGroupText" minOccurs="0"/>
			<xs:element ref="ListLineGroup" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="ListLineItem" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute ref="ListLineGroupNumber" use="required"/>
		<xs:attribute ref="ListLineGroupName" use="optional"/>
	</xs:complexType>
	<xs:complexType name="ListLineItemType">
		<xs:sequence>
			<!-- consecutive number of the order position -->
			<xs:element ref="OrderPosNumber" minOccurs="0"/>
			<!-- order position reference provided by the customer -->
			<xs:element ref="OrderPosReferenceCustomer" minOccurs="0"/>
            <!-- order position reference provided by the supplier -->			
			<xs:element ref="OrderPosReferenceSupplier" minOccurs="0"/>
			<!-- at least one of CustomersArticleNo, DistributorsArticleNo or EANCode has to be declared -->
			<xs:choice maxOccurs="3">
				<!-- EAN Code of the ordered article -->
				<xs:element ref="EANCode"/>
				<!-- distributor's identification of the ordered article -->
				<xs:element ref="DistributorsArticleNo"/>
				<!-- customer's identification of the ordered article -->
				<xs:element ref="CustomersArticleNo"/>
			</xs:choice>
			<!-- Distributor's reference of article colour and size -->
			<xs:element ref="Colour" minOccurs="0"/>
			<xs:element ref="Size" minOccurs="0"/>
			<!-- distributor's name of the ordered article -->
			<xs:element ref="DistributorsArticleName" minOccurs="0"/>
			<!-- customer's name of the ordered article -->
			<xs:element ref="CustomersArticleName" minOccurs="0"/>
			<!-- desciption of the ordered article -->
			<xs:element ref="ArticleDescription" minOccurs="0" maxOccurs="unbounded"/>
			<!-- quantity of the article, ordered by the ordering party -->
			<xs:element ref="OrderQuantity"/>
			<!-- count -->
			<xs:element ref="OrderCount" minOccurs="0"/>
			<!-- length -->
			<xs:element ref="OrderLength" minOccurs="0"/>
			<!-- width -->
			<xs:element ref="OrderWidth" minOccurs="0"/>
			<!-- height -->
			<xs:element ref="OrderHeight" minOccurs="0"/>
			<!-- appointed price -->
			<xs:element ref="Price" minOccurs="0"/>
			<!-- appointed line discount -->
			<xs:element ref="DiscountPercentage" minOccurs="0"/>
			<xs:element ref="DiscountPercentage2" minOccurs="0"/>
			<xs:element ref="DiscountPercentage3" minOccurs="0"/>
			<xs:element ref="DiscountPercentage4" minOccurs="0"/>
			<xs:element ref="DiscountAmount" minOccurs="0"/>
			<!-- deprecated-->
			<xs:element ref="RebateAmount" minOccurs="0"/>
			<!-- date of delivery -->
			<xs:element ref="DeliveryDate" minOccurs="0"/>
			<!-- delivery time: start of period -->
			<xs:element ref="DeliveryTimeFrom" minOccurs="0"/>
			<!-- delivery time: end of period -->
			<xs:element ref="DeliveryTimeTo" minOccurs="0"/>
			<!-- Documents -->
			<xs:element ref="Documents" minOccurs="0"/>
			<!-- extended item field list -->
			<xs:element ref="ExtendedItemFieldList" minOccurs="0"/>
			<!-- piece list variations -->
			<xs:element ref="PieceListVariations" minOccurs="0"/>
			<!-- Service data -->
			<xs:element ref="ServiceData" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="PieceListVariationsType">
		<xs:sequence>
			<xs:element ref="PieceListVariationItem" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="PieceListVariationItemType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="Key" type="xs:string" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="ServiceCounterTyp">
		<xs:simpleContent>
			<xs:extension base="bmd:Decimal24.9Typ">
				<xs:attribute ref="Unit" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="ServiceDataType">
		<xs:sequence>
			<xs:element ref="SerialNumber"/>
			<xs:element ref="ArticleNo" minOccurs="0"/>
			<xs:element ref="ServiceMeasure" minOccurs="0"/>
			<xs:element ref="ServiceEmployee" minOccurs="0"/>
			<xs:element ref="ServiceDate" minOccurs="0"/>
			<xs:element ref="ServiceCounter1" minOccurs="0"/>
			<xs:element ref="ServiceCounter2" minOccurs="0"/>
			<xs:element ref="ServiceCounter3" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
