<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="Partners">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Partner"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Partner">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Name"/>
        <xs:element ref="Code"/>
        <xs:element ref="AllowedProducts"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Name" type="xs:string"/>
  <xs:element name="Code" type="xs:string"/>
  <xs:element name="AllowedProducts">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Product"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Product">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ProductCode"/>
        <xs:element ref="ProductFamily"/>
        <xs:element ref="Description"/>
        <xs:element ref="ProductGroupForm"/>
        <xs:element ref="ProductGroupType"/>
        <xs:element ref="ProductGroupMaterial"/>
        <xs:element ref="ProductGroupTreatment"/>
        <xs:element ref="ProductGroupIndex"/>
        <xs:element ref="MaterialIndex"/>
        <xs:element ref="Manufacturer"/>
        <xs:element minOccurs="0" ref="ActiveFrom"/>
        <xs:element minOccurs="0" ref="ActiveTo"/>
        <xs:element ref="GrindItems"/>
        <xs:element ref="StockItems"/>
        <xs:element ref="AvailableTints"/>
        <xs:element ref="AvailableExtras"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ProductCode" type="xs:string"/>
  <xs:element name="ProductFamily" type="xs:string"/>
  <xs:element name="Description" type="xs:string"/>
  <xs:element name="ProductGroupForm">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="GRIND"/>
        <xs:enumeration value="STOCK"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="ProductGroupType">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="SINGLE_VISION"/>
        <xs:enumeration value="EXTENDED_FOCUS"/>
        <xs:enumeration value="MULTIFOCAL"/>
        <xs:enumeration value="PROGRESSIVE"/>
        <xs:enumeration value="FREE_FORM"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="ProductGroupMaterial">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="Airwear"/>
        <xs:enumeration value="Polycarb"/>
        <xs:enumeration value="CR"/>
        <xs:enumeration value="Glass"/>
        <xs:enumeration value="Spectralite"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="ProductGroupTreatment">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="Clear"/>
        <xs:enumeration value="ExtraActive"/>
        <xs:enumeration value="Transitions"/>
        <xs:enumeration value="Polarised"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="ProductGroupIndex">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="STANDARD"/>
        <xs:enumeration value="HIGH_INDEX"/>
        <xs:enumeration value="MID_INDEX"/>
        <xs:enumeration value="ULTRA_HIGH_INDEX"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="MaterialIndex" type="xs:decimal"/>
  <xs:element name="Manufacturer" type="xs:string"/>
  <!-- YYYY MM DD -->
  <xs:element name="ActiveFrom" type="xs:date"/>
  <xs:element name="ActiveTo" type="xs:date"/>
  <xs:element name="GrindItems">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="GrindItem"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GrindItem">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ItemSku"/>
        <xs:element ref="Barcode"/>
        <xs:element ref="Diameter"/>
        <xs:element ref="BaseCurve"/>
        <xs:element minOccurs="0" ref="Additions"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ItemSku" type="xs:decimal"/>
  <xs:element name="Barcode" type="xs:string"/>
  <xs:element name="Diameter" type="xs:decimal"/>
  <xs:element name="BaseCurve" type="xs:decimal"/>
  <xs:element name="Additions" type="xs:string"/>
  <xs:element name="StockItems">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="StockItem"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="StockItem">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Sphere"/>
        <xs:element ref="Cylinder"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Sphere" type="xs:decimal"/>
  <xs:element name="Cylinder" type="xs:decimal"/>
  <xs:element name="AvailableTints">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="TintCode"/>
        <xs:element ref="TintDescription"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="TintCode" type="xs:string"/>
  <xs:element name="TintDescription" type="xs:string"/>
  <xs:element name="AvailableExtras">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ExtraCode"/>
        <xs:element ref="ExtraDescription"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ExtraCode" type="xs:string"/>
  <xs:element name="ExtraDescription" type="xs:string"/>
</xs:schema>
