<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

    <xs:element name="LayoutContracheque">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Cabecalho">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Empresa">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="RazaoSocial" type="xs:string"/>
                                        <xs:element name="Cnpj" type="xs:string"><xs:annotation><xs:documentation>CNPJ da empresa, com ou sem máscara. Precisa ser o da entidade de destino.</xs:documentation></xs:annotation></xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="Competencia" type="xs:string"><xs:annotation><xs:documentation>AAAAMM. Mês 13 = 13º salário. Ex.: 202608.</xs:documentation></xs:annotation></xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>

                <xs:element name="Contracheques">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Contracheque" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Servidor">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="Nome" type="xs:string"/>
                                                    <xs:element name="Cpf" type="xs:string"><xs:annotation><xs:documentation>CPF do trabalhador, com ou sem máscara.</xs:documentation></xs:annotation></xs:element>
                                                    <xs:element name="DataNascimento" type="xs:string" minOccurs="0"><xs:annotation><xs:documentation>DD/MM/AAAA. Outro formato é ignorado.</xs:documentation></xs:annotation></xs:element>
                                                    <xs:element name="NitPis" type="xs:string"/>
                                                    <xs:element name="Matricula" type="xs:string"/>
                                                    <xs:element name="MatriculaDigitoVerificador" type="xs:string" minOccurs="0"/>
                                                    <xs:element name="TipoAdmissao" type="xs:string"/>
                                                    <xs:element name="Banco">
                                                        <xs:complexType>
                                                            <xs:sequence>
                                                                <xs:element name="Agencia" type="xs:string"/>
                                                                <xs:element name="Conta" type="xs:string"/>
                                                            </xs:sequence>
                                                        </xs:complexType>
                                                    </xs:element>
                                                    <xs:element name="Lotacao">
                                                        <xs:complexType>
                                                            <xs:sequence>
                                                                <xs:element name="RazaoSocial" type="xs:string"/>
                                                                <xs:element name="Codigo" type="xs:string" minOccurs="0"/>
                                                                <xs:element name="Cargo" type="xs:string"/>
                                                                <xs:element name="CargoNivel" type="xs:string" minOccurs="0"/>
                                                                <xs:element name="DataAdmissao" type="xs:string"><xs:annotation><xs:documentation>DD/MM/AAAA. Outro formato é ignorado.</xs:documentation></xs:annotation></xs:element>
                                                            </xs:sequence>
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>

                                        <xs:element name="DiscriminacaoVerbas" minOccurs="0">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="Verba" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                            <xs:sequence>
                                                                <xs:element name="Codigo" type="xs:string"/>
                                                                <xs:element name="Descricao" type="xs:string"/>
                                                                <xs:element name="Referencia" type="xs:string" minOccurs="0"/>
                                                                <xs:element name="ValorVantagem" type="xs:string" minOccurs="0"/>
                                                                <xs:element name="ValorDesconto" type="xs:string" minOccurs="0"/>
                                                            </xs:sequence>
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>

                                        <xs:element name="MargemConsignavel" type="xs:string" minOccurs="0"/>
                                        <xs:element name="TotalVantagens" type="xs:string"/>
                                        <xs:element name="TotalDescontos" type="xs:string"/>
                                        <xs:element name="TotalLiquido" type="xs:string"><xs:annotation><xs:documentation>Valores monetários: 1.518,00 ou 1518.00.</xs:documentation></xs:annotation></xs:element>
                                        <xs:element name="SalarioBase" type="xs:string"/>
                                        <xs:element name="BaseInss" type="xs:string"/>
                                        <xs:element name="BaseIrrf" type="xs:string"/>
                                        <xs:element name="FaixaIrrf" type="xs:string" minOccurs="0"/>
                                        <xs:element name="BaseFgts" type="xs:string" minOccurs="0"/>
                                        <xs:element name="FgtsMes" type="xs:string"/>
                                        <xs:element name="DataLancamento" type="xs:string" minOccurs="0"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>

            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- Várias empresas no mesmo arquivo: cada bloco vai para a entidade do próprio
         CNPJ. Todos os blocos precisam ter a mesma Competencia. -->
    <xs:element name="List">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="LayoutContracheque" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
