<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:annotation>
    <xsd:documentation xml:lang="en">
     NewOrder submit a new order
     Copyright 2011 Ingen Software, Inc. All rights reserved.
     VERSION: DRAFT 6/20/2011
    </xsd:documentation>
  </xsd:annotation>

  <xsd:element name="O2O-NewOrder" type="NewOrderType"/>

  <xsd:complexType name="NewOrderType">
    <xsd:sequence>
      <xsd:element name="VERSION" type="VERSIONTYPE" minOccurs="0"/>
      <xsd:element name="DocumentDate" type="xsd:date"/>
      <xsd:element name="From">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="Party" type="PartyType"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="FromDBID" type="xsd:string" minOccurs="0"/>
      <xsd:element name="To">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="Party" type="PartyType"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

      <xsd:element name="Name" type="xsd:string" minOccurs="0"/>

      <xsd:element name="PriceList">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="Price" type="PriceType"  minOccurs="1" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

      <xsd:element name="AllSeries">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="Series" type="SeriesType"  minOccurs="1" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="VERSIONTYPE">
    <xsd:attribute name="v" type="xsd:string"/>
    <xsd:attribute name="dbv" type="xsd:string"/>
    <xsd:attribute name="r" type="xsd:string"/>
  </xsd:complexType>

  <xsd:complexType name="PartyType">
    <xsd:sequence>
      <xsd:element name="ROLE"     type="xsd:string" minOccurs="0"/>
      <xsd:element name="NAME"     type="xsd:string"/>
      <xsd:element name="LINE1"    type="xsd:string"/>
      <xsd:element name="LINE2"    type="xsd:string" minOccurs="0"/>
      <xsd:element name="CITY"     type="xsd:string"/>
      <xsd:element name="STATE"    type="xsd:string"/>
      <xsd:element name="ZIP"      type="xsd:string"/>
      <xsd:element name="COUNTY"   type="xsd:string" minOccurs="0"/>
      <xsd:element name="COUNTRY"  type="xsd:string" minOccurs="0"/>

      <xsd:element name="Contacts" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="Contact" type="ContactType" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ContactType">
    <xsd:sequence>
      <xsd:element name="FullName"    type="xsd:string"/>
      <xsd:element name="EMail"       type="xsd:string" minOccurs="0"/>
      <xsd:element name="PhoneNumber" type="xsd:string" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="PriceType">
    <xsd:sequence>
      <xsd:element name="Catalog" type="xsd:string" minOccurs="0"/>
      <xsd:element name="BookPrice" type="xsd:decimal"/>
      <xsd:element name="BookCommission" type="xsd:decimal"/>
      <xsd:element name="OverageableSell" type="xsd:decimal"/>
      <xsd:element name="OverageableCommission" type="xsd:decimal"/>
      <xsd:element name="OverageableSplit" type="xsd:decimal"/>
      <xsd:element name="LowPrice" type="xsd:decimal"/>
      <xsd:element name="LowCommission" type="xsd:decimal"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="SeriesType">
    <xsd:sequence>
      <xsd:element name="Series" type="xsd:string"/>
      <xsd:element name="ProductClass" type="xsd:string"/>
      <xsd:element name="GenericRules" type="xsd:string"/>
      <xsd:element name="BaseSell" type="xsd:decimal"/>
      <xsd:element name="BaseCommission" type="xsd:decimal"/>
      <xsd:element name="OverageableSell" type="xsd:decimal"/>
      <xsd:element name="OverageableCommission" type="xsd:decimal"/>
      <xsd:element name="OverageableSplit" type="xsd:decimal"/>
      <xsd:element name="EffectiveEnd" type="xsd:date"/>

      <xsd:element name="Options">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="SeriesOption" type="SeriesOptionType"  minOccurs="1" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="SeriesOptionType">
    <xsd:sequence>
      <xsd:element name="OptionUID" type="xsd:integer"/>
      <xsd:element name="Required" type="xsd:string"/>
      <xsd:element name="Description" type="xsd:string"/>
      <xsd:element name="OptionType" type="xsd:string"/>
      <xsd:element name="MinLength" type="xsd:integer"/>
      <xsd:element name="maxLength" type="xsd:integer"  minOccurs="0"/>

      <xsd:element name="Items">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="SeriesOptionItem" type="SeriesOptionItemType"  minOccurs="1" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="SeriesOptionItemType">
    <xsd:sequence>
      <xsd:element name="ItemCode" type="xsd:string"/>
      <xsd:element name="Description" type="xsd:string"/>
      <xsd:element name="BaseSell" type="xsd:decimal"  minOccurs="0"/>
      <xsd:element name="OverageableSell" type="xsd:decimal"/>
    </xsd:sequence>
  </xsd:complexType>

</xsd:schema>