﻿<?xml version="1.0" encoding="utf-8"?>

<xs:schema id="XmlExportPaymentSchema"
           targetNamespace="http://eSellerCloud.com/XmlExportPaymentSchema.xsd"
           elementFormDefault="qualified"
           xmlns="http://eSellerCloud.com/XmlExportPaymentSchema.xsd"
           xmlns:mstns="http://eSellerCloud.com/XmlExportPaymentSchema.xsd"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:job="eSellerCloud.com/XmlExportJob">
  <xs:simpleType name="decimalGreaterThanZero">
    <xs:restriction base="xs:decimal">
      <xs:minExclusive value="0"></xs:minExclusive>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="requiredString">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"></xs:minLength>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="requiredStringMax50">
    <xs:restriction base="requiredString">
      <xs:maxLength value="50"></xs:maxLength>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="exportJobElement">
    <xs:annotation>
      <xs:documentation>Common xml fragment supplied in export files qualifying details abort the export process itself.</xs:documentation>
    </xs:annotation>
    <xs:all>
      <xs:element name="authority">
        <xs:complexType>
          <xs:all>
            <xs:element name="authorityId"></xs:element>
            <xs:element name="authorityType"></xs:element>
            <xs:element name="dataOriginJobId"></xs:element>
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="simpleReturnStatusWithText">
    <xs:all>
      <xs:element name="status" type="simpleReturnStatus"></xs:element>
      <xs:element name="statusMessage" type="xs:string"></xs:element>
      <xs:element name="statusDate" type="xs:string" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>
  <xs:simpleType name="simpleReturnStatus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Unspecified"></xs:enumeration>
      <xs:enumeration value="Success"></xs:enumeration>
      <xs:enumeration value="AmountExceed"></xs:enumeration>
      <xs:enumeration value="InvalidPaymentId"></xs:enumeration>
      <xs:enumeration value="Error"></xs:enumeration>
      <xs:enumeration value="ExceptionOccured"></xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="integrationData">
    <xs:complexType>
      <xs:all>
        <xs:element name="job" type="exportJobElement"></xs:element>
        <xs:element name="paymentCommandResults" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="paymentCommandResult" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="extReference" type="requiredStringMax50" minOccurs="0"></xs:element>
                    <xs:element name="orderId" type="requiredStringMax50" minOccurs="0"></xs:element>
                    <xs:element name="amountIncVat" type="xs:decimal" minOccurs="0"></xs:element>
                    <xs:element name="commandResult" type="simpleReturnStatusWithText"></xs:element>
                    <xs:element name="transactionId" type="requiredStringMax50" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Payment server transaction ID</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:all>
      <xs:attribute name="version"></xs:attribute>
    </xs:complexType>

  </xs:element>
</xs:schema>