<?xml version="1.0" encoding="utf-8"?>

<!--
	November 14, 2002

	(c) Copyright 2002, The Web Services-Interoperability Organization (WS-I)
	Download or use of this file is governed by the Policies and Bylaws of WS-I.

	For more information, send email info@ws-i.org. 	
-->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
      xmlns:tns="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailOrder.xsd" 
targetNamespace="http://www.ws-i.org/SampleApplications/SupplyChainManagement/2002-08/RetailOrder.xsd">
	<xsd:annotation>
		<xsd:documentation xml:lang="en">Definition of PartsOrder types for Retailer component of WS-I</xsd:documentation>
	</xsd:annotation>
	<xsd:complexType name="PartsOrderType">
		<xsd:sequence>
			<xsd:element name="Item" type="tns:PartsOrderItem" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="PartsOrderItem">
		<xsd:sequence>
			<xsd:element name="productNumber" type="tns:productNumber" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="quantity" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="price"    type="xsd:decimal" minOccurs="1" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="PartsOrderResponseType">
		<xsd:sequence>
			<xsd:element name="Item" type="tns:PartsOrderResponseItem" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="PartsOrderResponseItem">
		<xsd:sequence>
			<xsd:element name="productNumber" type="tns:productNumber" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="quantity" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="price"    type="xsd:decimal" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="comment"  type="xsd:string" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CustomerDetailsType">
		<xsd:sequence>
			<xsd:element name="custnbr"  type="tns:CustomerReferenceType" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="name"     type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="street1"  type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="street2"  type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="city"     type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="state"    type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="zip"      type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="country"  type="xsd:string" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:simpleType name="productNumber">
		<xsd:restriction base="xsd:integer">
			<xsd:minInclusive value="1"/>
			<xsd:maxInclusive value="999999"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="CustomerReferenceType">
		<xsd:restriction base="xsd:normalizedString">
			<xsd:maxLength value="20"/>
			<xsd:pattern value="[A-D][0-9]{5}-[0-9A-Z]{7}-[a-z]{3}#*"/>
		</xsd:restriction>
	</xsd:simpleType>	
	<xsd:element name="InvalidProductCode" type="tns:InvalidProductCodeType"/>
	<xsd:complexType name="InvalidProductCodeType">
		<xsd:sequence>
			<xsd:element name="Reason">
				<xsd:simpleType>
					<xsd:restriction base="xsd:NMTOKEN">
						<xsd:enumeration value="InvalidProductCode"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="ProductNumber" type="tns:productNumber" />
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="BadOrderReason" type="xsd:string"/>
</xsd:schema>
