<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="http://www.wstf.org/docs/scenarios/sc009"
           xmlns:wsa="http://www.w3.org/2005/08/addressing"
           targetNamespace="http://www.wstf.org/docs/scenarios/sc009"
           elementFormDefault="qualified">
  <xs:import namespace="http://www.w3.org/2005/08/addressing" schemaLocation="http://www.w3.org/2006/03/addressing/ws-addr.xsd"/>
  <xs:element name="OrderID" type="xs:string"/>
  <xs:element name="OrderDetails" type="tns:OrderDetailsType"/>
  <xs:element name="OrderInfo" type="tns:OrderInfoType"/>
  <xs:complexType name="OrderReqType">
    <xs:sequence>
      <xs:element name="OrderDetails" type="tns:OrderDetailsType"/>
      <xs:element name="StatusUpdateEPR" type="wsa:EndpointReferenceType" minOccurs="0"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  <xs:complexType name="OrderStatusReqType">
    <xs:sequence>
      <xs:element ref="tns:OrderID"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  <xs:complexType name="UpdateOrderType">
    <xs:sequence>
      <xs:element ref="tns:OrderID"/>
      <xs:element ref="tns:OrderDetails"/>
      <xs:element name="StatusUpdateEPR" type="wsa:EndpointReferenceType" minOccurs="0"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  <xs:complexType name="CancelOrderType">
    <xs:sequence>
      <xs:element ref="tns:OrderID"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  <xs:complexType name="OrderDetailsType">
    <xs:sequence>
      <xs:element name="CustID" type="xs:string"/>
      <xs:element name="ShipTo" type="tns:NameAndAddress"/>
      <xs:element name="BillTo" type="tns:NameAndAddress"/>
      <xs:element name="UserContact" type="tns:ContactType"/>
      <xs:element name="LineItems" type="tns:LineItemsType"/>
      <xs:element name="CreditAuthInfo" type="tns:CreditAuthInfoType" minOccurs="0"/>
      <xs:element name="Expedite" type="xs:boolean" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="OrderInfoType">
    <xs:sequence>
      <xs:element ref="tns:OrderID"/>
      <xs:element name="OrderDate" type="xs:dateTime"/>
      <xs:element name="OrderPrice" type="xs:decimal"/>
      <xs:element name="OrderStatus" type="tns:OrderStatusType"/>
      <xs:element name="LastUpdate" type="xs:dateTime"/>
      <xs:element name="OrderComments" type="xs:string" minOccurs="0"/>
      <xs:element name="StatusURL" type="xs:anyURI" minOccurs="0"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>
  <xs:simpleType name="OrderStatusType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Verified"/>
      <xs:enumeration value="Approved"/>
      <xs:enumeration value="BackOrdered"/>
      <xs:enumeration value="Completed"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="OrderFaultType">
    <xs:sequence>
      <xs:element name="OrderFaultCode" type="tns:OrderFaultCodeType"/>
      <xs:element name="OrderFaultComment" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="OrderFaultCodeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="NoSuchOrder"/>
      <xs:enumeration value="MaximumOrderValueExceeded"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="NameAndAddress">
    <xs:sequence>
      <xs:element name="Name" type="tns:Name" minOccurs="0"/>
      <xs:element name="Address" type="tns:Address" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Name">
    <xs:sequence>
      <xs:element name="First" type="xs:string" minOccurs="0"/>
      <xs:element name="Last" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Address">
    <xs:sequence>
      <xs:element name="Street" type="xs:string" minOccurs="0"/>
      <xs:element name="City" type="xs:string" minOccurs="0"/>
      <xs:element name="State" type="xs:string" minOccurs="0"/>
      <xs:element name="Zip" type="xs:string" minOccurs="0"/>
      <xs:element name="Country" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ContactType">
    <xs:sequence>
      <xs:element name="PhoneNumber" type="xs:string" minOccurs="0"/>
      <xs:element name="EmailAddress" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="LineItemType">
    <xs:sequence>
      <xs:element name="LineNo" type="xs:string"/>
      <xs:element name="ProductName" type="xs:string"/>
      <xs:element name="ItemType" type="xs:string"/>
      <xs:element name="Partnum" type="xs:string"/>
      <xs:element name="Price" type="xs:decimal"/>
      <xs:element name="Quantity" type="xs:decimal"/>
      <xs:element name="SupplierName" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="LineItemsType">
    <xs:sequence>
      <xs:element name="Item" type="tns:LineItemType" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="CreditAuthInfoType">
    <xs:sequence>
      <xs:element name="CCType" type="xs:string"/>
      <xs:element name="CCNumber" type="xs:string"/>
      <xs:element name="PurchaseAmount" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
