﻿<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="2018-09-10">
  <xsd:element name="NonOpInvoices">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Header" type="Header" />
        <xsd:element name="Invoices">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="Invoice" type="Invoice" minOccurs="0" maxOccurs="unbounded" />
            </xsd:sequence>
          </xsd:complexType>
          <xsd:unique name="InvoiceIdUnique">
            <xsd:selector xpath="./Invoice" />
            <xsd:field xpath="InvoiceId" />
          </xsd:unique>
          <xsd:unique name="StatementIdUnique">
            <xsd:selector xpath="./Invoice/Statements/Statement" />
            <xsd:field xpath="StatementId" />
          </xsd:unique>
          <xsd:unique name="DetailIdUnique">
            <xsd:selector xpath="./Invoice/Statements/Statement/Details/Detail" />
            <xsd:field xpath="DetailId" />
          </xsd:unique>
        </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="XmlSchemaVersion" use="required">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:enumeration value="2018-09-10" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:attribute>
    </xsd:complexType>
  </xsd:element>

  <!-- ComplexTypes -->
  <xsd:complexType name="Header">
    <xsd:sequence>
      <xsd:element name="RequestLoginName" type="xsd:string" />
      <xsd:element name="RequestUserId" type="xsd:long" />
      <xsd:element name="RequestBaId" type="xsd:long" />
      <xsd:element name="RequestDate" type="xsd:dateTime" />
      <xsd:element name="RequestMethod" type="xsd:string" />
	    <xsd:element name="EnergyLinkApiTransactionId" type="xsd:long" minOccurs="0" />
      <xsd:element name="RequestUrl" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="RequestHeaders" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="RequestHeader" minOccurs="0" maxOccurs="unbounded">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element name="Key" type="xsd:string" minOccurs="1" maxOccurs="1" />
                  <xsd:element name="Value" type="xsd:string" minOccurs="1" maxOccurs="1" />
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RequestContent" type="xsd:string" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="Invoice">
    <xsd:sequence>
      <xsd:element name="InvoiceId" type="EnergyLinkPrimaryKey" minOccurs="1" maxOccurs="1" />
      <xsd:element name="InvoiceNumber" type="InvoiceNumber" minOccurs="1" maxOccurs="1" />
      <xsd:element name="InvoiceDate" type="xsd:date" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OpAccountingMonth" type="xsd:date" minOccurs="1" maxOccurs="1" />
      <xsd:element name="ReceivedDate" type="xsd:dateTime" minOccurs="1" maxOccurs="1" />
      <xsd:element name="DocType" type="DocType" minOccurs="1" maxOccurs="1" />
      <xsd:element name="InvoiceStatus" type="InvoiceStatus" minOccurs="1" maxOccurs="1" />
      <xsd:element name="InvoiceStatusDate" type="xsd:dateTime" minOccurs="1" maxOccurs="1" />
      <xsd:element name="IsApproved" type="xsd:boolean" minOccurs="1" maxOccurs="1" />
      <xsd:element name="LastProcessedDate" type="xsd:dateTime" minOccurs="0" maxOccurs="1" />
      <xsd:element name="ActiveVoucherId" type="xsd:long" minOccurs="0" maxOccurs="1" />
      <xsd:element name="VendorNumber" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="Operator" type="Operator" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
            Values provided by the Operator during upload
            Note: OpOrgId can change if the Invoice is rerouted
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="OwnerNumber" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="Partner" type="Partner" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
            Values provided by the Operator during upload
            Note: PrtOrgId can change if the Invoice is rerouted
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="CurrencyCode" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OriginalPartnerAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="OriginalGSTAmount" type="Currency" minOccurs="0" maxOccurs="1">
        <xsd:annotation><xsd:documentation>Canada only</xsd:documentation></xsd:annotation>
      </xsd:element>
      <xsd:element name="OriginalCashCallAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AcceptedPartnerAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AcceptedGSTAmount" type="Currency" minOccurs="0" maxOccurs="1">
        <xsd:annotation><xsd:documentation>Canada only</xsd:documentation></xsd:annotation>
      </xsd:element>
      <xsd:element name="AcceptedCashCallAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PendingDisputedPartnerAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PendingDisputedGSTAmount" type="Currency" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Canada only</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PendingDisputedCashCallAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="InvoiceHistory" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:sequence minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="InvoiceHistoryRecord" type="InvoiceHistoryRecord" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="Statements" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:sequence minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="Statement" type="Statement" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="InvoiceHistoryRecord">
    <xsd:sequence>
      <xsd:element name="PlVersion" type="xsd:integer" minOccurs="0" maxOccurs="1" />
      <xsd:element name="ActionTypeDesc"  type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="ActionId" type="EnergyLinkPrimaryKey" minOccurs="0" maxOccurs="1" />
      <xsd:element name="ActionDate" type="xsd:dateTime" minOccurs="0" maxOccurs="1" />
      <xsd:element name="ActionUserName" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="VoucherReference" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="VoucherAccountingMonth" type="xsd:date" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AcceptedPartnerAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AcceptedGSTAmount" type="Currency" minOccurs="0" maxOccurs="1">
        <xsd:annotation><xsd:documentation>Canada only</xsd:documentation></xsd:annotation>
      </xsd:element>
      <xsd:element name="AcceptedCashCallAmount" type="Currency" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="Statement">
    <xsd:sequence>
      <xsd:element name="StatementId" type="EnergyLinkPrimaryKey" minOccurs="1" maxOccurs="1" />
      <xsd:element name="AFE" type="AFE" minOccurs="0" maxOccurs="1" />
      <xsd:element name="ReviewAfe" type="ReviewAfe" minOccurs="0" maxOccurs="1" />
      <xsd:element name="CostCenter" type="CostCenter" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PropertyOverride" type="PropertyOverride" minOccurs="0" maxOccurs="1" />
      <xsd:element name="StatementNumber" minOccurs="0" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:minLength value="1" />
            <xsd:maxLength value="50" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
			<xsd:element name="VentureCode" type="PropertyCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="VentureDesc" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AccountXrefTypeIdCap" type="EnergyLinkPrimaryKey" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AccountXrefTypeDescCap" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AccountXrefTypeIdExp" type="EnergyLinkPrimaryKey" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AccountXrefTypeDescExp" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AccountXrefTypeIdRev" type="EnergyLinkPrimaryKey" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AccountXrefTypeDescRev" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AccountXrefTypeIdCsh" type="EnergyLinkPrimaryKey" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AccountXrefTypeDescCsh" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="OriginalPartnerAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="OriginalGSTAmount" type="Currency" minOccurs="0" maxOccurs="1">
        <xsd:annotation><xsd:documentation>Canada only</xsd:documentation></xsd:annotation>
      </xsd:element>
      <xsd:element name="OriginalCashCallAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AcceptedPartnerAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AcceptedGSTAmount" type="Currency" minOccurs="0" maxOccurs="1">
        <xsd:annotation><xsd:documentation>Canada only</xsd:documentation></xsd:annotation>
      </xsd:element>
      <xsd:element name="AcceptedCashCallAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PendingDisputedPartnerAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PendingDisputedGSTAmount" type="Currency" minOccurs="0" maxOccurs="1">
        <xsd:annotation><xsd:documentation>Canada only</xsd:documentation></xsd:annotation>
      </xsd:element>
      <xsd:element name="PendingDisputedCashCallAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="IsPropertySplit" type="xsd:boolean" minOccurs="0" maxOccurs="1" />
      <xsd:element name="Details" minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:sequence minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="Detail" type="Detail" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="Detail">
    <xsd:sequence>
      <xsd:element name="DetailId" type="EnergyLinkPrimaryKey" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OpAccountClass" type="AccountClass" minOccurs="1" maxOccurs="1" />
      <xsd:element name="AcctMajId" type="EnergyLinkPrimaryKey" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OpMajorAccountCode" type="AccountCode" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OpMajorAccountDesc" type="AccountDesc" minOccurs="1" maxOccurs="1" />
      <xsd:element name="EnergyLinkMajorAccountDesc" type="AccountDesc" minOccurs="1" maxOccurs="1" />
      <xsd:element name="AcctMinId" type="EnergyLinkPrimaryKey" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OpMinorAccountCode" type="AccountCode" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OpMinorAccountDesc" type="AccountDesc" minOccurs="1" maxOccurs="1" />
      <xsd:element name="EnergyLinkMinorAccountDesc" type="AccountDesc" minOccurs="1" maxOccurs="1" />
      <xsd:element name="DetailOverride" type="DetailOverride" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtMajorAccountCode" type="AccountCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtMinorAccountCode" type="AccountCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="ActivityDate" type="xsd:date" minOccurs="1" maxOccurs="1" />
      <xsd:element name="GrossPartnerAmount" type="Currency" minOccurs="1" maxOccurs="1" />
      <xsd:element name="GrossGSTAmount" type="Currency" minOccurs="0" maxOccurs="1">
        <xsd:annotation><xsd:documentation>Canada only</xsd:documentation></xsd:annotation>
      </xsd:element>
      <xsd:element name="GrossVolume" type="Volume" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PartnerPercent" type="Percent" minOccurs="0" maxOccurs="1" />
      <xsd:element name="OriginalPartnerAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="OriginalGSTAmount" type="Currency" minOccurs="0" maxOccurs="1">
        <xsd:annotation><xsd:documentation>Canada only</xsd:documentation></xsd:annotation>
      </xsd:element>
      <xsd:element name="OriginalCashCallAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AcceptedPartnerAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="AcceptedGSTAmount" type="Currency" minOccurs="0" maxOccurs="1">
        <xsd:annotation><xsd:documentation>Canada only</xsd:documentation></xsd:annotation>
      </xsd:element>
      <xsd:element name="AcceptedCashCallAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PendingDisputedPartnerAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PendingDisputedGSTAmount" type="Currency" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Canada only</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="PendingDisputedCashCallAmount" type="Currency" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PartnerVolume" type="Volume" minOccurs="0" maxOccurs="1" />
      <xsd:element name="IsReversal" type="xsd:boolean" minOccurs="0" maxOccurs="1" />
      <xsd:element name="LineComment" minOccurs="0" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:minLength value="0" />
            <xsd:maxLength value="1500" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="IsAccountSplit" type="xsd:boolean" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="Operator">
    <xsd:sequence>
      <xsd:element name="OpOrgId" type="EnergyLinkPrimaryKey" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OrgNumber" minOccurs="1" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:minLength value="1" />
            <xsd:maxLength value="20" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="OrgName" type="OrgName" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OrgNameComment" type="OrgNameComment" minOccurs="0" maxOccurs="1" />
      <xsd:element name="Address1" type="Address1" minOccurs="1" maxOccurs="1" />
      <xsd:element name="Address2" type="Address2" minOccurs="0" maxOccurs="1" />
      <xsd:element name="Address3" type="Address3" minOccurs="0" maxOccurs="1" />
      <xsd:element name="City" type="City" minOccurs="1" maxOccurs="1" />
      <xsd:element name="StateProvince" type="StateProvince" minOccurs="1" maxOccurs="1" />
      <xsd:element name="Country" type="Country" minOccurs="1" maxOccurs="1" />
      <xsd:element name="PostalZIP" type="PostalZIP" minOccurs="1" maxOccurs="1" />
      <xsd:element name="Phone" type="PhoneNumber" minOccurs="0" maxOccurs="1" />
      <xsd:element name="Fax" type="PhoneNumber" minOccurs="0" maxOccurs="1" />
      <xsd:element name="TaxRegNumber" type="TaxRegNumber" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="Partner">
    <xsd:sequence>
      <xsd:element name="PrtOrgId" type="EnergyLinkPrimaryKey" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OrgNumber" minOccurs="0" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:minLength value="1" />
            <xsd:maxLength value="50" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="VoucherOrgNumber" minOccurs="0" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:minLength value="1" />
            <xsd:maxLength value="50" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="OrgName" type="OrgName" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OrgNameComment" type="OrgNameComment" minOccurs="0" maxOccurs="1" />
      <xsd:element name="Address1" type="Address1" minOccurs="1" maxOccurs="1" />
      <xsd:element name="Address2" type="Address2" minOccurs="0" maxOccurs="1" />
      <xsd:element name="Address3" type="Address3" minOccurs="0" maxOccurs="1" />
      <xsd:element name="City" type="City" minOccurs="0" maxOccurs="1" />
      <xsd:element name="StateProvince" type="StateProvince" minOccurs="0" maxOccurs="1" />
      <xsd:element name="Country" type="Country" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PostalZIP" type="PostalZIP" minOccurs="0" maxOccurs="1" />
      <xsd:element name="Phone" type="PhoneNumber" minOccurs="0" maxOccurs="1" />
      <xsd:element name="Fax" type="PhoneNumber" minOccurs="0" maxOccurs="1" />
      <xsd:element name="TaxRegNumber" type="TaxRegNumber" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>
  
  <xsd:complexType name="AFE">
    <xsd:sequence>
      <xsd:element name="AfeId" type="EnergyLinkPrimaryKey" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OpAFENumber" type="PropertyCode" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OpAFEDesc" minOccurs="1" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:minLength value="1" />
            <xsd:maxLength value="40" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="OpAFELocation" minOccurs="0" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:minLength value="0" />
            <xsd:maxLength value="40" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="AfeXrefId" type="EnergyLinkPrimaryKey" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtAFENumber" type="PropertyCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtCostCenterCode" type="PropertyCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtAFEActionCode" type="AfeActionCode" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ReviewAfe">
    <xsd:sequence>
      <xsd:element name="PrtAFENumber" type="PropertyCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtCostCenterCode" type="PropertyCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtAFEActionCode" type="AfeActionCode" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>
  
  <xsd:complexType name="CostCenter">
    <xsd:sequence>
      <xsd:element name="CcId" type="EnergyLinkPrimaryKey" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OpCostCenterCode" type="PropertyCode" minOccurs="1" maxOccurs="1" />
      <xsd:element name="OpCostCenterDesc" minOccurs="1" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:minLength value="1" />
            <xsd:maxLength value="100" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="OpCostCenterDesc2" minOccurs="0" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:minLength value="0" />
            <xsd:maxLength value="100" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="OpCostCenterLocation" minOccurs="0" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:minLength value="0" />
            <xsd:maxLength value="40" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="OpUwi" minOccurs="0" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:minLength value="0" />
            <xsd:maxLength value="16" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="OpApiNumber" minOccurs="0" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:pattern value="[0-9]{2}-[0-9]{3}-[0-9]{5}-[0-9]{2}-[0-9]{2}" />
            <xsd:minLength value="0" />
            <xsd:maxLength value="50" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="OpAPI" type ="PropertyCode" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="OpStateProvince" type="StateProvince" minOccurs="0" maxOccurs="1" />
      <xsd:element name="OpCounty" minOccurs="0" maxOccurs="1">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:minLength value="0" />
            <xsd:maxLength value="50" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="CcXrefId" type="EnergyLinkPrimaryKey" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtCostCenterCode" type="PropertyCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtAPI" type="Api10" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtPaCode" type="PropertyCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtAFENumber" type="PropertyCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtCostCenterActionCode" type="CcActionCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="EnvAPI" type="Api10" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="PropertyOverride">
    <xsd:sequence>
      <xsd:element name="PropertyOverrideId" type="EnergyLinkPrimaryKey" minOccurs="1" maxOccurs="1" />
      <xsd:element name="PrtAFENumber" type="PropertyCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtCostCenterCode" type="PropertyCode" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>
  
  <xsd:complexType name="DetailOverride">
    <xsd:sequence>
      <xsd:element name="PrtAFENumber" type="PropertyCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtCostCenterCode" type="PropertyCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtPaCode" type="PropertyCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtMajorAccountCode" type="AccountCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PrtMinorAccountCode" type="AccountCode" minOccurs="0" maxOccurs="1" />
      <xsd:element name="InvoiceNumber" type="InvoiceNumber" minOccurs="0" maxOccurs="1" />
      <xsd:element name="DoiOverride" type="DoiOverride" minOccurs="0" maxOccurs="1" />
      <xsd:element name="ActivityDate" type="xsd:date" minOccurs="0" maxOccurs="1" />
      <xsd:element name="PartnerVolume" type="Volume" minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- SimpleTypes -->
  <xsd:simpleType name="EnergyLinkPrimaryKey">
    <xsd:restriction base="xsd:long" />
  </xsd:simpleType>
  <xsd:simpleType name="DocType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="JIB"/>
      <xsd:enumeration value="LANDMIN"/>
      <xsd:enumeration value="LANDSUR"/>
      <xsd:enumeration value="ROAD"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="OrgName">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1" />
      <xsd:maxLength value="100" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="OrgNameComment">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="0" />
      <xsd:maxLength value="40" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="Address1">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1" />
      <xsd:maxLength value="40" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="Address2">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="0" />
      <xsd:maxLength value="40" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="Address3">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="0" />
      <xsd:maxLength value="40" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="City">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1" />
      <xsd:maxLength value="50" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="Country">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1" />
      <xsd:maxLength value="20" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="StateProvince">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="2" />
      <xsd:maxLength value="3" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="PostalZIP">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1" />
      <xsd:maxLength value="10" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="PhoneNumber">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="0" />
      <xsd:maxLength value="30" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="TaxRegNumber">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="0" />
      <xsd:maxLength value="15" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="InvoiceNumber">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1" />
      <xsd:maxLength value="30" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="InvoiceStatus">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Received" />
      <xsd:enumeration value="Viewed" />
      <xsd:enumeration value="ProcessedManually" />
      <xsd:enumeration value="PartiallyApproved" />
      <xsd:enumeration value="Approved" />
      <xsd:enumeration value="AcceptedAsIs" />
      <xsd:enumeration value="AcceptedModified" />
      <xsd:enumeration value="InvoiceFullyDisputed" />
      <xsd:enumeration value="DisputedItemsClosed" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="PropertyCode">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1" />
      <xsd:maxLength value="50" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="Api10">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1" />
      <xsd:maxLength value="10" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="AfeActionCode">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DisputeNoAfe" />
      <xsd:enumeration value="DisputeNoInterest" />
      <xsd:enumeration value="DisputeSold" />
      <xsd:enumeration value="DisputePenalty" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="CcActionCode">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DisputeNoInterest" />
      <xsd:enumeration value="DisputeSold" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="DoiOverride">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="0" />
      <xsd:maxLength value="30" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="AccountClass">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CAP"/>
      <xsd:enumeration value="CSH"/>
      <xsd:enumeration value="EXP"/>
      <xsd:enumeration value="REV">
        <xsd:annotation><xsd:documentation>Canada only</xsd:documentation></xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="AccountCode">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1" />
      <xsd:maxLength value="50" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="AccountDesc">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1" />
      <xsd:maxLength value="100" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="Percent">
    <xsd:restriction base="xsd:decimal">
      <xsd:fractionDigits value="8" />
      <xsd:minInclusive value="0" />
      <xsd:maxInclusive value="100" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="Currency">
    <xsd:restriction base="xsd:decimal">
      <xsd:fractionDigits value="2" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="Volume">
    <xsd:restriction base="xsd:decimal">
      <xsd:fractionDigits value="2" />
    </xsd:restriction>
  </xsd:simpleType>
</xsd:schema>