<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
	targetNamespace="http://www.previc.gov.br/padraoprevic/contabil/inprevic31"
	elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns="http://www.previc.gov.br/padraoprevic/contabil/inprevic31">

  <xsd:complexType name="dados-contabeisType">
    <xsd:sequence>
      <xsd:element name="codigo-entidade" type="codigo-entidadeType"
				maxOccurs="1" minOccurs="1">
      </xsd:element>
      <xsd:element name="plano-contas" type="plano-contasType"
				maxOccurs="1" minOccurs="1">
      </xsd:element>
      <xsd:element name="e-mail" type="xsd:string" maxOccurs="unbounded"
				minOccurs="0">
      </xsd:element>

      <xsd:element name="mes" type="mesType" maxOccurs="1"
				minOccurs="1">
      </xsd:element>

      <xsd:element name="ano" type="anoType" maxOccurs="1"
				minOccurs="1">
      </xsd:element>
      <xsd:element name="consolidado" type="consolidadoType"
				maxOccurs="1" minOccurs="0">
      </xsd:element>
      <xsd:element name="plano-beneficio" type="plano-beneficioType"
				maxOccurs="unbounded" minOccurs="0">
      </xsd:element>
      <xsd:element name="plano-gestao-administrativa" type="gestao-administrativaType"
				maxOccurs="1" minOccurs="0">


      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="lancamentoType">
    <xsd:sequence>
      <xsd:element name="rubrica" type="rubricaType" maxOccurs="1"
				minOccurs="1">
      </xsd:element>
      <xsd:element name="saldo-inicial" type="valorMonetarioType"
				maxOccurs="1" minOccurs="1">
      </xsd:element>
      <xsd:element name="natureza" maxOccurs="1" minOccurs="1"
				type="naturezaType">
      </xsd:element>
      <xsd:element name="debito" type="valorMonetarioType"
				maxOccurs="1" minOccurs="1">
      </xsd:element>
      <xsd:element name="credito" type="valorMonetarioType"
				maxOccurs="1" minOccurs="1">
      </xsd:element>
    </xsd:sequence>

    <xsd:attribute name="atLancamento01" type="lancamentoAttributeType" use="optional"></xsd:attribute>
    <xsd:attribute name="atLancamento02" type="lancamentoAttributeType" use="optional"></xsd:attribute>

  </xsd:complexType>


  <xsd:simpleType name="lancamentoAttributeType">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="([a-zA-Z0-9])*"/>
      <xsd:minLength value="1"/>
      <xsd:maxLength value="50"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="valorMonetarioType">
    <xsd:restriction base="xsd:decimal">
      <xsd:fractionDigits fixed="true" value="2" />
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:element name="dados-contabeis" type="dados-contabeisType">
  </xsd:element>

  <xsd:simpleType name="anoType">
    <xsd:restriction base="xsd:integer">
      <xsd:minInclusive value="2021"></xsd:minInclusive>
      <xsd:maxInclusive value="2100"></xsd:maxInclusive>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="mesType">
    <xsd:restriction base="xsd:integer">
      <xsd:minInclusive value="1"></xsd:minInclusive>
      <xsd:maxInclusive value="12"></xsd:maxInclusive>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="naturezaType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DV"></xsd:enumeration>
      <xsd:enumeration value="CR"></xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="codigo-entidadeType">
    <xsd:restriction base="xsd:integer">
      <xsd:minInclusive value="1"></xsd:minInclusive>
      <xsd:maxInclusive value="99999"></xsd:maxInclusive>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="plano-contasType">
    <xsd:restriction base="xsd:integer">
      <xsd:minInclusive value="5"></xsd:minInclusive>
      <xsd:maxInclusive value="999"></xsd:maxInclusive>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="rubricaType">
    <xsd:restriction base="xsd:long">
      <xsd:minInclusive value="1000000000000"></xsd:minInclusive>
      <xsd:maxInclusive value="9999999999999"></xsd:maxInclusive>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="cnpbType">
    <xsd:restriction base="xsd:long">
      <xsd:minInclusive value="1000000000"></xsd:minInclusive>
      <xsd:maxInclusive value="9999999999"></xsd:maxInclusive>
    </xsd:restriction>
  </xsd:simpleType>

 <xsd:simpleType name="cnpj_type">
   <xsd:restriction base="xsd:long">
     <xsd:totalDigits value="14"/>
   </xsd:restriction>
 </xsd:simpleType>

  <xsd:complexType name="consolidadoType">
    <xsd:sequence>
      <xsd:element name="lancamento" type="lancamentoType"
				maxOccurs="unbounded" minOccurs="1">
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="gestao-administrativaType">
    <xsd:sequence>
      <xsd:element name="lancamento" type="lancamentoType"
				maxOccurs="unbounded" minOccurs="1">
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>


  <xsd:complexType name="plano-beneficioType">
    <xsd:sequence>
      <xsd:element name="lancamento" type="lancamentoType"
				maxOccurs="unbounded" minOccurs="1">
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="cnpb" type="cnpbType" use="required"></xsd:attribute>
    <xsd:attribute name="cnpjplano" type="cnpj_type"></xsd:attribute>
  </xsd:complexType>
</xsd:schema>