teodoro 0.27.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/municipios.json +22262 -0
- data/lib/teodoro.rb +19 -1
- data/lib/teodoro/empresa.rb +6 -1
- data/lib/teodoro/empresa/contratos_de_emprego.rb +18 -2
- data/lib/teodoro/empresa/trabalhadores.rb +19 -0
- data/lib/teodoro/leiaute/arquivo_s2200.rb +60 -34
- data/lib/teodoro/leiaute/arquivo_s2205.rb +56 -29
- data/lib/teodoro/leiaute/arquivo_s2230.rb +0 -2
- data/lib/teodoro/leiaute/arquivo_s2299.rb +22 -18
- data/lib/teodoro/leiaute/arquivo_s2300.rb +6 -2
- data/lib/teodoro/leiaute/arquivo_s2306.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s2399.rb +1 -1
- data/lib/tipos_de_logradouro.json +730 -0
- metadata +5 -2
    
        data/lib/teodoro.rb
    CHANGED
    
    | @@ -12,7 +12,7 @@ require_relative 'teodoro/empresa' | |
| 12 12 | 
             
            require_relative 'teodoro/obj'
         | 
| 13 13 |  | 
| 14 14 | 
             
            module Teodoro
         | 
| 15 | 
            -
              VERSION = '0. | 
| 15 | 
            +
              VERSION = '0.28.0'.freeze
         | 
| 16 16 |  | 
| 17 17 | 
             
              CBOs = __FILE__
         | 
| 18 18 | 
             
                     .then { File.dirname(_1) }
         | 
| @@ -23,6 +23,24 @@ module Teodoro | |
| 23 23 | 
             
                     .to_h
         | 
| 24 24 | 
             
                     .freeze
         | 
| 25 25 |  | 
| 26 | 
            +
              Municipios = __FILE__
         | 
| 27 | 
            +
                           .then { File.dirname(_1) }
         | 
| 28 | 
            +
                           .then { File.join(_1, 'municipios.json') }
         | 
| 29 | 
            +
                           .then { File.read(_1) }
         | 
| 30 | 
            +
                           .then { JSON.parse(_1) }
         | 
| 31 | 
            +
                           .map { [_1['codigo'], _1['nome']] }
         | 
| 32 | 
            +
                           .to_h
         | 
| 33 | 
            +
                           .freeze
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              TiposDeLogradouro = __FILE__
         | 
| 36 | 
            +
                                  .then { File.dirname(_1) }
         | 
| 37 | 
            +
                                  .then { File.join(_1, 'tipos_de_logradouro.json') }
         | 
| 38 | 
            +
                                  .then { File.read(_1) }
         | 
| 39 | 
            +
                                  .then { JSON.parse(_1) }
         | 
| 40 | 
            +
                                  .map { [_1['codigo'], _1['descricao']] }
         | 
| 41 | 
            +
                                  .to_h
         | 
| 42 | 
            +
                                  .freeze
         | 
| 43 | 
            +
             | 
| 26 44 | 
             
              def self.call(args)
         | 
| 27 45 | 
             
                Execution.new(args).call
         | 
| 28 46 | 
             
              end
         | 
    
        data/lib/teodoro/empresa.rb
    CHANGED
    
    | @@ -6,6 +6,7 @@ require_relative 'empresa/arquivo_data_rub' | |
| 6 6 | 
             
            require_relative 'empresa/cargos_gerados'
         | 
| 7 7 | 
             
            require_relative 'empresa/contratos_de_emprego'
         | 
| 8 8 | 
             
            require_relative 'empresa/contratos_de_trabalho_sem_vinculo'
         | 
| 9 | 
            +
            require_relative 'empresa/trabalhadores'
         | 
| 9 10 |  | 
| 10 11 | 
             
            module Teodoro
         | 
| 11 12 | 
             
              class Empresa
         | 
| @@ -60,8 +61,12 @@ module Teodoro | |
| 60 61 | 
             
                    @arquivos_data ||= ArquivosData.new(destino_dos_arquivos_data)
         | 
| 61 62 | 
             
                  end
         | 
| 62 63 |  | 
| 64 | 
            +
                  def trabalhadores
         | 
| 65 | 
            +
                    @trabalhadores ||= Trabalhadores.new
         | 
| 66 | 
            +
                  end
         | 
| 67 | 
            +
             | 
| 63 68 | 
             
                  def contratos_de_emprego
         | 
| 64 | 
            -
                    @contratos_de_emprego ||= ContratosDeEmprego.new
         | 
| 69 | 
            +
                    @contratos_de_emprego ||= ContratosDeEmprego.new(trabalhadores)
         | 
| 65 70 | 
             
                  end
         | 
| 66 71 |  | 
| 67 72 | 
             
                  def contratos_de_trabalho_sem_vinculo
         | 
| @@ -1,8 +1,19 @@ | |
| 1 1 | 
             
            module Teodoro
         | 
| 2 2 | 
             
              class Empresa
         | 
| 3 3 | 
             
                class ContratosDeEmprego
         | 
| 4 | 
            +
                  private
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                  def initialize(trabalhadores)
         | 
| 7 | 
            +
                    @trabalhadores = trabalhadores
         | 
| 8 | 
            +
                  end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  attr_reader :trabalhadores
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  public
         | 
| 13 | 
            +
             | 
| 4 14 | 
             
                  def registrar_admissao(admissao:, afastamento:)
         | 
| 5 15 | 
             
                    contratos_por_matricula[admissao.matricula] = Contrato.new(admissao: admissao, afastamento: afastamento)
         | 
| 16 | 
            +
                    trabalhadores << admissao.trabalhador
         | 
| 6 17 | 
             
                  end
         | 
| 7 18 |  | 
| 8 19 | 
             
                  def [](matricula)
         | 
| @@ -11,7 +22,7 @@ module Teodoro | |
| 11 22 |  | 
| 12 23 | 
             
                  def *(cpf_do_trabalhador:, data:)
         | 
| 13 24 | 
             
                    contratos
         | 
| 14 | 
            -
                      .select { _1. | 
| 25 | 
            +
                      .select { _1.trabalhador.cpf == cpf_do_trabalhador && _1.ativo?(data) }
         | 
| 15 26 | 
             
                      .sort_by(&:data_de_admissao)
         | 
| 16 27 | 
             
                  end
         | 
| 17 28 |  | 
| @@ -43,7 +54,12 @@ module Teodoro | |
| 43 54 |  | 
| 44 55 | 
             
                    extend Forwardable
         | 
| 45 56 |  | 
| 46 | 
            -
                    def_delegators :admissao, | 
| 57 | 
            +
                    def_delegators :admissao,
         | 
| 58 | 
            +
                                   :trabalhador,
         | 
| 59 | 
            +
                                   :matricula,
         | 
| 60 | 
            +
                                   :data_de_admissao,
         | 
| 61 | 
            +
                                   :categoria_do_trabalhador,
         | 
| 62 | 
            +
                                   :primeiro_emprego_do_trabalhador,
         | 
| 47 63 | 
             
                                   :recibo
         | 
| 48 64 |  | 
| 49 65 | 
             
                    attr_accessor :afastamento
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            module Teodoro
         | 
| 2 | 
            +
              class Empresa
         | 
| 3 | 
            +
                class Trabalhadores
         | 
| 4 | 
            +
                  def <<(trabalhador)
         | 
| 5 | 
            +
                    trabalhadores[trabalhador.cpf] = trabalhador
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def [](cpf)
         | 
| 9 | 
            +
                    trabalhadores[cpf]
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  private
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  def trabalhadores
         | 
| 15 | 
            +
                    @trabalhadores ||= {}
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| @@ -13,17 +13,47 @@ module Teodoro | |
| 13 13 |  | 
| 14 14 | 
             
                  def registrar_admissao
         | 
| 15 15 | 
             
                    contratos_de_emprego.registrar_admissao(
         | 
| 16 | 
            -
                      admissao:  | 
| 17 | 
            -
                        matricula: matricula_do_trabalhador,
         | 
| 18 | 
            -
                        data_de_admissao: data_de_admissao,
         | 
| 19 | 
            -
                        categoria_do_trabalhador: categoria_do_trabalhador,
         | 
| 20 | 
            -
                        cpf_do_trabalhador: cpf_do_trabalhador,
         | 
| 21 | 
            -
                        recibo: numero_do_recibo
         | 
| 22 | 
            -
                      ),
         | 
| 16 | 
            +
                      admissao: admissao,
         | 
| 23 17 | 
             
                      afastamento: afastamento
         | 
| 24 18 | 
             
                    )
         | 
| 25 19 | 
             
                  end
         | 
| 26 20 |  | 
| 21 | 
            +
                  def admissao
         | 
| 22 | 
            +
                    Obj.new(
         | 
| 23 | 
            +
                      trabalhador: trabalhador,
         | 
| 24 | 
            +
                      matricula: matricula_do_trabalhador,
         | 
| 25 | 
            +
                      data_de_admissao: data_de_admissao,
         | 
| 26 | 
            +
                      categoria_do_trabalhador: categoria_do_trabalhador,
         | 
| 27 | 
            +
                      primeiro_emprego_do_trabalhador: evento['trabalhador/indPriEmpr'],
         | 
| 28 | 
            +
                      recibo: numero_do_recibo
         | 
| 29 | 
            +
                    )
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  def trabalhador # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
         | 
| 33 | 
            +
                    @trabalhador ||= Obj.new(
         | 
| 34 | 
            +
                      cpf: evento['trabalhador/cpfTrab'],
         | 
| 35 | 
            +
                      nis: evento['trabalhador/nisTrab'],
         | 
| 36 | 
            +
                      nome: evento['trabalhador/nmTrab'],
         | 
| 37 | 
            +
                      sexo: evento['trabalhador/sexo'],
         | 
| 38 | 
            +
                      raca_cor: evento['trabalhador/racaCor'],
         | 
| 39 | 
            +
                      estado_civil: evento['trabalhador/estCiv'],
         | 
| 40 | 
            +
                      grau_de_instrucao: evento['trabalhador/grauInstr'],
         | 
| 41 | 
            +
                      nome_social: evento['trabalhador/nmSoc'],
         | 
| 42 | 
            +
                      data_de_nascimento: evento['trabalhador/nascimento/dtNascto'],
         | 
| 43 | 
            +
                      pais_de_nascimento: evento['trabalhador/nascimento/paisNascto'],
         | 
| 44 | 
            +
                      pais_de_nacionalidade: evento['trabalhador/nascimento/paisNac'],
         | 
| 45 | 
            +
                      codigo_do_municipio_de_nascimento: evento['trabalhador/nascimento/codMunic'],
         | 
| 46 | 
            +
                      uf_de_nascimento: evento['trabalhador/nascimento/uf'],
         | 
| 47 | 
            +
                      nome_da_mae: evento['trabalhador/nascimento/nmMae'],
         | 
| 48 | 
            +
                      nome_do_pai: evento['trabalhador/nascimento/nmPai'],
         | 
| 49 | 
            +
                      reside_no_exterior?: evento['trabalhador/endereco/exterior'],
         | 
| 50 | 
            +
                      endereco: Obj.new(
         | 
| 51 | 
            +
                        tipo_de_logradouro: evento['trabalhador/endereco/brasil/tpLograd'],
         | 
| 52 | 
            +
                        codigo_do_municipio: evento['trabalhador/endereco/brasil/codMunic']
         | 
| 53 | 
            +
                      )
         | 
| 54 | 
            +
                    )
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
             | 
| 27 57 | 
             
                  def contratos_de_emprego
         | 
| 28 58 | 
             
                    empresa.contratos_de_emprego
         | 
| 29 59 | 
             
                  end
         | 
| @@ -40,10 +70,6 @@ module Teodoro | |
| 40 70 | 
             
                    @categoria_do_trabalhador ||= evento['vinculo/infoContrato/codCateg']
         | 
| 41 71 | 
             
                  end
         | 
| 42 72 |  | 
| 43 | 
            -
                  def cpf_do_trabalhador
         | 
| 44 | 
            -
                    @cpf_do_trabalhador ||= evento['trabalhador/cpfTrab']
         | 
| 45 | 
            -
                  end
         | 
| 46 | 
            -
             | 
| 47 73 | 
             
                  def afastamento
         | 
| 48 74 | 
             
                    evento['vinculo/afastamento']&.then { Obj.new(
         | 
| 49 75 | 
             
                      data_de_inicio: _1['dtIniAfast'],
         | 
| @@ -54,10 +80,10 @@ module Teodoro | |
| 54 80 | 
             
                  def dados_dos_arquivos_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
         | 
| 55 81 | 
             
                    [
         | 
| 56 82 | 
             
                      Obj.new(
         | 
| 57 | 
            -
                        nome: "TRA[#{ | 
| 83 | 
            +
                        nome: "TRA[#{trabalhador.cpf}][EPG_#{matricula_do_trabalhador}_#{data_de_admissao.delete('-')}]-ADM",
         | 
| 58 84 | 
             
                        itens_do_conteudo: [
         | 
| 59 85 | 
             
                          # rubocop:disable Layout/LineLength
         | 
| 60 | 
            -
                          ['ESX_CPF',  | 
| 86 | 
            +
                          ['ESX_CPF', trabalhador.cpf],
         | 
| 61 87 | 
             
                          ['ESX_MATRICULA', matricula_do_trabalhador],
         | 
| 62 88 | 
             
                          ['ESX_CATEGORIA', categoria_do_trabalhador],
         | 
| 63 89 | 
             
                          %w[ESX_SEMVINCULO 0],
         | 
| @@ -81,43 +107,43 @@ module Teodoro | |
| 81 107 | 
             
                          ['DescricaoProcEmi', processo_de_emissao_do_evento],
         | 
| 82 108 | 
             
                          ['VerProc', versao_do_processo_de_emissao_do_evento],
         | 
| 83 109 | 
             
                          ['HorarioTela_Dia'],
         | 
| 84 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Cpf',  | 
| 85 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nome',  | 
| 86 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nis',  | 
| 87 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Sexo',  | 
| 110 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Cpf', trabalhador.cpf],
         | 
| 111 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nome', trabalhador.nome],
         | 
| 112 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nis', trabalhador.nis],
         | 
| 113 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Sexo', trabalhador.sexo],
         | 
| 88 114 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Sexo_TEXT'],
         | 
| 89 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_RacaCor',  | 
| 115 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_RacaCor', trabalhador.raca_cor],
         | 
| 90 116 | 
             
                          ['EventoAdmissao_InfoTrabalhador_RacaCor_TEXT'],
         | 
| 91 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_EstadoCivil',  | 
| 117 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_EstadoCivil', trabalhador.estado_civil],
         | 
| 92 118 | 
             
                          ['EventoAdmissao_InfoTrabalhador_EstadoCivil_TEXT'],
         | 
| 93 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_GrauInstrucao',  | 
| 119 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_GrauInstrucao', trabalhador.grau_de_instrucao],
         | 
| 94 120 | 
             
                          ['EventoAdmissao_InfoTrabalhador_GrauInstrucao_TEXT'],
         | 
| 95 121 | 
             
                          ['EventoAdmissao_InfoTrabalhador_PrimeiroEmprego', evento['trabalhador/indPriEmpr']],
         | 
| 96 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_NomeSocial',  | 
| 97 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio',  | 
| 98 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT'],
         | 
| 99 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento',  | 
| 100 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae',  | 
| 101 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai',  | 
| 102 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento',  | 
| 122 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_NomeSocial', trabalhador.nome_social],
         | 
| 123 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio', trabalhador.codigo_do_municipio_de_nascimento],
         | 
| 124 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT', Municipios[trabalhador.codigo_do_municipio_de_nascimento]],
         | 
| 125 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento', trabalhador.data_de_nascimento, :data],
         | 
| 126 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae', trabalhador.nome_da_mae],
         | 
| 127 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai', trabalhador.nome_do_pai],
         | 
| 128 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento', trabalhador.pais_de_nascimento],
         | 
| 103 129 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento_TEXT'],
         | 
| 104 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade',  | 
| 130 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade', trabalhador.pais_de_nacionalidade],
         | 
| 105 131 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade_TEXT'],
         | 
| 106 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf',  | 
| 132 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf', trabalhador.uf_de_nascimento],
         | 
| 107 133 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf_TEXT'],
         | 
| 108 134 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Bairro', evento['trabalhador/endereco/brasil/bairro']],
         | 
| 109 135 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Cep', evento['trabalhador/endereco/brasil/cep']],
         | 
| 110 | 
            -
                          ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio',  | 
| 111 | 
            -
                          ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio_TEXT'],
         | 
| 136 | 
            +
                          ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio', trabalhador.endereco.codigo_do_municipio],
         | 
| 137 | 
            +
                          ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio_TEXT', Municipios[trabalhador.endereco.codigo_do_municipio]],
         | 
| 112 138 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Complemento', evento['trabalhador/endereco/brasil/complemento']],
         | 
| 113 139 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_DescricaoLogradouro', evento['trabalhador/endereco/brasil/dscLograd']],
         | 
| 114 140 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_NumeroLogradouro', evento['trabalhador/endereco/brasil/nrLograd']],
         | 
| 115 141 | 
             
                          ['SemNumeroLogradouroEnderecoBR'],
         | 
| 116 | 
            -
                          ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro',  | 
| 117 | 
            -
                          ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT'],
         | 
| 142 | 
            +
                          ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro', trabalhador.endereco.tipo_de_logradouro],
         | 
| 143 | 
            +
                          ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT', trabalhador.endereco.tipo_de_logradouro.then { "#{_1} - #{TiposDeLogradouro[_1]}" }],
         | 
| 118 144 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Uf', evento['trabalhador/endereco/brasil/uf']],
         | 
| 119 145 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Uf_TEXT'],
         | 
| 120 | 
            -
                          ['ResideExterior',  | 
| 146 | 
            +
                          ['ResideExterior', trabalhador.reside_no_exterior?, :bool],
         | 
| 121 147 | 
             
                          ['SemNumeroLogradouroEnderecoEX'],
         | 
| 122 148 | 
             
                          ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', evento['trabalhador/trabEstrangeiro/casadoBr']],
         | 
| 123 149 | 
             
                          ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', evento['trabalhador/trabEstrangeiro/dtChegada'], :data],
         | 
| @@ -5,17 +5,48 @@ module Teodoro | |
| 5 5 |  | 
| 6 6 | 
             
                  private
         | 
| 7 7 |  | 
| 8 | 
            +
                  def criar_arquivos_data
         | 
| 9 | 
            +
                    super
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    empresa.trabalhadores << trabalhador
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  def trabalhador # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
         | 
| 15 | 
            +
                    @trabalhador ||= Obj.new(
         | 
| 16 | 
            +
                      cpf: evento['ideTrabalhador/cpfTrab'],
         | 
| 17 | 
            +
                      nis: evento['alteracao/dadosTrabalhador/nisTrab'],
         | 
| 18 | 
            +
                      nome: evento['alteracao/dadosTrabalhador/nmTrab'],
         | 
| 19 | 
            +
                      sexo: evento['alteracao/dadosTrabalhador/sexo'],
         | 
| 20 | 
            +
                      raca_cor: evento['alteracao/dadosTrabalhador/racaCor'],
         | 
| 21 | 
            +
                      estado_civil: evento['alteracao/dadosTrabalhador/estCiv'],
         | 
| 22 | 
            +
                      grau_de_instrucao: evento['alteracao/dadosTrabalhador/grauInstr'],
         | 
| 23 | 
            +
                      nome_social: evento['alteracao/dadosTrabalhador/nmSoc'],
         | 
| 24 | 
            +
                      data_de_nascimento: evento['alteracao/dadosTrabalhador/nascimento/dtNascto'],
         | 
| 25 | 
            +
                      pais_de_nascimento: evento['alteracao/dadosTrabalhador/nascimento/paisNascto'],
         | 
| 26 | 
            +
                      pais_de_nacionalidade: evento["alteracao/dadosTrabalhador/#{'nascimento' unless leiaute_simplificado?}/paisNac"], # rubocop:disable Layout/LineLength
         | 
| 27 | 
            +
                      codigo_do_municipio_de_nascimento: evento['alteracao/dadosTrabalhador/nascimento/codMunic'],
         | 
| 28 | 
            +
                      uf_de_nascimento: evento['alteracao/dadosTrabalhador/nascimento/uf'],
         | 
| 29 | 
            +
                      nome_da_mae: evento['alteracao/dadosTrabalhador/nascimento/nmMae'],
         | 
| 30 | 
            +
                      nome_do_pai: evento['alteracao/dadosTrabalhador/nascimento/nmPai'],
         | 
| 31 | 
            +
                      reside_no_exterior?: evento['alteracao/dadosTrabalhador/endereco/exterior'],
         | 
| 32 | 
            +
                      endereco: Obj.new(
         | 
| 33 | 
            +
                        tipo_de_logradouro: evento['alteracao/dadosTrabalhador/endereco/brasil/tpLograd'],
         | 
| 34 | 
            +
                        codigo_do_municipio: evento['alteracao/dadosTrabalhador/endereco/brasil/codMunic']
         | 
| 35 | 
            +
                      )
         | 
| 36 | 
            +
                    )
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 8 39 | 
             
                  def dados_dos_arquivos_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
         | 
| 9 40 | 
             
                    contratos_de_trabalho.map do |contrato_de_trabalho| # rubocop:disable Metrics/BlockLength
         | 
| 10 41 | 
             
                      Obj.new(
         | 
| 11 42 | 
             
                        nome: [
         | 
| 12 | 
            -
                          "TRA[#{ | 
| 43 | 
            +
                          "TRA[#{trabalhador.cpf}]",
         | 
| 13 44 | 
             
                          contrato_de_trabalho.nome_do_arquivo_data_identificacao_do_contrato,
         | 
| 14 45 | 
             
                          "-ACA[#{data_da_alteracao.delete('-')}]"
         | 
| 15 46 | 
             
                        ].join,
         | 
| 16 47 | 
             
                        itens_do_conteudo: [
         | 
| 17 48 | 
             
                          # rubocop:disable Layout/LineLength
         | 
| 18 | 
            -
                          ['ESX_CPF',  | 
| 49 | 
            +
                          ['ESX_CPF', trabalhador.cpf],
         | 
| 19 50 | 
             
                          ['ESX_MATRICULA', contrato_de_trabalho.matricula_do_contrato],
         | 
| 20 51 | 
             
                          ['ESX_CATEGORIA', contrato_de_trabalho.categoria_do_trabalhador],
         | 
| 21 52 | 
             
                          %w[ESX_SEMVINCULO 0], # FIXME: Tales TC
         | 
| @@ -32,42 +63,42 @@ module Teodoro | |
| 32 63 | 
             
                          ['DescricaoProcEmi', processo_de_emissao_do_evento],
         | 
| 33 64 | 
             
                          ['VerProc', versao_do_processo_de_emissao_do_evento],
         | 
| 34 65 | 
             
                          ['EventoAdmissao_TipoEventoEnviado'],
         | 
| 35 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Cpf',  | 
| 36 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nome',  | 
| 37 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nis',  | 
| 38 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Sexo',  | 
| 66 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Cpf', trabalhador.cpf],
         | 
| 67 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nome', trabalhador.nome],
         | 
| 68 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nis', trabalhador.nis],
         | 
| 69 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Sexo', trabalhador.sexo],
         | 
| 39 70 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Sexo_TEXT'],
         | 
| 40 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_RacaCor',  | 
| 71 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_RacaCor', trabalhador.raca_cor],
         | 
| 41 72 | 
             
                          ['EventoAdmissao_InfoTrabalhador_RacaCor_TEXT'],
         | 
| 42 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_EstadoCivil',  | 
| 73 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_EstadoCivil', trabalhador.estado_civil],
         | 
| 43 74 | 
             
                          ['EventoAdmissao_InfoTrabalhador_EstadoCivil_TEXT'],
         | 
| 44 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_GrauInstrucao',  | 
| 75 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_GrauInstrucao', trabalhador.grau_de_instrucao],
         | 
| 45 76 | 
             
                          ['EventoAdmissao_InfoTrabalhador_GrauInstrucao_TEXT'],
         | 
| 46 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_NomeSocial',  | 
| 47 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio',  | 
| 48 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT'],
         | 
| 49 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento',  | 
| 50 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae',  | 
| 51 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai',  | 
| 52 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento',  | 
| 77 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_NomeSocial', trabalhador.nome_social],
         | 
| 78 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio', trabalhador.codigo_do_municipio_de_nascimento],
         | 
| 79 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT', Municipios[trabalhador.codigo_do_municipio_de_nascimento]],
         | 
| 80 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento', trabalhador.data_de_nascimento, :data],
         | 
| 81 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae', trabalhador.nome_da_mae],
         | 
| 82 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai', trabalhador.nome_do_pai],
         | 
| 83 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento', trabalhador.pais_de_nascimento],
         | 
| 53 84 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento_TEXT'],
         | 
| 54 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade',  | 
| 85 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade', trabalhador.pais_de_nacionalidade],
         | 
| 55 86 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade_TEXT'],
         | 
| 56 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf',  | 
| 87 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf', trabalhador.uf_de_nascimento],
         | 
| 57 88 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf_TEXT'],
         | 
| 58 89 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Bairro', evento['alteracao/dadosTrabalhador/endereco/brasil/bairro']],
         | 
| 59 90 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Cep', evento['alteracao/dadosTrabalhador/endereco/brasil/cep']],
         | 
| 60 | 
            -
                          ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio',  | 
| 61 | 
            -
                          ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio_TEXT'],
         | 
| 91 | 
            +
                          ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio', trabalhador.endereco.codigo_do_municipio],
         | 
| 92 | 
            +
                          ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio_TEXT', Municipios[trabalhador.endereco.codigo_do_municipio]],
         | 
| 62 93 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Complemento', evento['alteracao/dadosTrabalhador/endereco/brasil/complemento']],
         | 
| 63 94 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_DescricaoLogradouro', evento['alteracao/dadosTrabalhador/endereco/brasil/dscLograd']],
         | 
| 64 95 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_NumeroLogradouro', evento['alteracao/dadosTrabalhador/endereco/brasil/nrLograd']],
         | 
| 65 96 | 
             
                          ['SemNumeroLogradouroEnderecoBR'],
         | 
| 66 | 
            -
                          ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro',  | 
| 67 | 
            -
                          ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT'],
         | 
| 97 | 
            +
                          ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro', trabalhador.endereco.tipo_de_logradouro],
         | 
| 98 | 
            +
                          ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT', trabalhador.endereco.tipo_de_logradouro.then { "#{_1} - #{TiposDeLogradouro[_1]}" }],
         | 
| 68 99 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Uf', evento['alteracao/dadosTrabalhador/endereco/brasil/uf']],
         | 
| 69 100 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Uf_TEXT'],
         | 
| 70 | 
            -
                          ['ResideExterior',  | 
| 101 | 
            +
                          ['ResideExterior', trabalhador.reside_no_exterior?, :bool],
         | 
| 71 102 | 
             
                          ['SemNumeroLogradouroEnderecoEX'],
         | 
| 72 103 | 
             
                          ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', evento['alteracao/dadosTrabalhador/trabEstrangeiro/casadoBr']],
         | 
| 73 104 | 
             
                          ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', evento['alteracao/dadosTrabalhador/trabEstrangeiro/dtChegada'], :data],
         | 
| @@ -125,20 +156,16 @@ module Teodoro | |
| 125 156 |  | 
| 126 157 | 
             
                  def contratos_de_emprego
         | 
| 127 158 | 
             
                    empresa.contratos_de_emprego
         | 
| 128 | 
            -
                           .*(cpf_do_trabalhador:  | 
| 159 | 
            +
                           .*(cpf_do_trabalhador: trabalhador.cpf, data: data_da_alteracao)
         | 
| 129 160 | 
             
                           .map { [ContratoDeEmprego, _1] }
         | 
| 130 161 | 
             
                  end
         | 
| 131 162 |  | 
| 132 163 | 
             
                  def contratos_de_trabalho_sem_vinculo
         | 
| 133 164 | 
             
                    empresa.contratos_de_trabalho_sem_vinculo
         | 
| 134 | 
            -
                           .*(cpf_do_trabalhador:  | 
| 165 | 
            +
                           .*(cpf_do_trabalhador: trabalhador.cpf, data: data_da_alteracao)
         | 
| 135 166 | 
             
                           .map { [ContratoDeTrabalhoSemVinculo, _1] }
         | 
| 136 167 | 
             
                  end
         | 
| 137 168 |  | 
| 138 | 
            -
                  def cpf_do_trabalhador
         | 
| 139 | 
            -
                    @cpf_do_trabalhador ||= evento['ideTrabalhador/cpfTrab']
         | 
| 140 | 
            -
                  end
         | 
| 141 | 
            -
             | 
| 142 169 | 
             
                  def data_da_alteracao
         | 
| 143 170 | 
             
                    @data_da_alteracao ||= evento['alteracao/dtAlteracao']
         | 
| 144 171 | 
             
                  end
         | 
| @@ -137,8 +137,6 @@ module Teodoro | |
| 137 137 | 
             
                          ['CodMotivoAfastamentoRetif'],
         | 
| 138 138 | 
             
                          ['TipoEventoCadastro'],
         | 
| 139 139 | 
             
                          ['IdEventoAfastamento'],
         | 
| 140 | 
            -
                          (['DataFim', data_de_termino_do_afastamento, :data] if termino_do_afastamento?),
         | 
| 141 | 
            -
                          ['DataInicio', data_de_inicio_do_afastamento, :data],
         | 
| 142 140 | 
             
                          ['CodigoMotivo', codigo_do_motivo_de_afastamento],
         | 
| 143 141 | 
             
                          ['Motivo'],
         | 
| 144 142 | 
             
                          ['ExibirBotoes'],
         | 
| @@ -41,7 +41,7 @@ module Teodoro | |
| 41 41 | 
             
                    @matricula_do_trabalhador ||= evento['ideVinculo/matricula']
         | 
| 42 42 | 
             
                  end
         | 
| 43 43 |  | 
| 44 | 
            -
                  def dados_dos_arquivos_data # rubocop:disable Metrics/MethodLength
         | 
| 44 | 
            +
                  def dados_dos_arquivos_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
         | 
| 45 45 | 
             
                    [
         | 
| 46 46 | 
             
                      Obj.new(
         | 
| 47 47 | 
             
                        nome: "TRA[#{cpf_do_trabalhador}][EPG_#{matricula_do_trabalhador}_#{data_de_admissao.delete('-')}]-GER",
         | 
| @@ -80,28 +80,28 @@ module Teodoro | |
| 80 80 | 
             
                          ['HorarioTela_Dia'],
         | 
| 81 81 | 
             
                          ['NomeEstabelecimentoLocalTrabalho'],
         | 
| 82 82 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Cpf'],
         | 
| 83 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nome'],
         | 
| 84 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nis'],
         | 
| 85 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Sexo'],
         | 
| 83 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nome', trabalhador.nome],
         | 
| 84 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nis', trabalhador.nis],
         | 
| 85 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Sexo', trabalhador.sexo],
         | 
| 86 86 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Sexo_TEXT'],
         | 
| 87 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_RacaCor'],
         | 
| 87 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_RacaCor', trabalhador.raca_cor],
         | 
| 88 88 | 
             
                          ['EventoAdmissao_InfoTrabalhador_RacaCor_TEXT'],
         | 
| 89 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_EstadoCivil'],
         | 
| 89 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_EstadoCivil', trabalhador.estado_civil],
         | 
| 90 90 | 
             
                          ['EventoAdmissao_InfoTrabalhador_EstadoCivil_TEXT'],
         | 
| 91 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_GrauInstrucao'],
         | 
| 91 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_GrauInstrucao', trabalhador.grau_de_instrucao],
         | 
| 92 92 | 
             
                          ['EventoAdmissao_InfoTrabalhador_GrauInstrucao_TEXT'],
         | 
| 93 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_PrimeiroEmprego'],
         | 
| 94 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_NomeSocial'],
         | 
| 95 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio'],
         | 
| 93 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_PrimeiroEmprego', contrato_de_emprego.primeiro_emprego_do_trabalhador],
         | 
| 94 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_NomeSocial', trabalhador.nome_social],
         | 
| 95 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio', trabalhador.codigo_do_municipio_de_nascimento],
         | 
| 96 96 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT'],
         | 
| 97 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento'],
         | 
| 98 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae'],
         | 
| 99 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai'],
         | 
| 100 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento'],
         | 
| 97 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento', trabalhador.data_de_nascimento, :data],
         | 
| 98 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae', trabalhador.nome_da_mae],
         | 
| 99 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai', trabalhador.nome_do_pai],
         | 
| 100 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento', trabalhador.pais_de_nascimento],
         | 
| 101 101 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento_TEXT'],
         | 
| 102 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade'],
         | 
| 102 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade', trabalhador.pais_de_nacionalidade],
         | 
| 103 103 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade_TEXT'],
         | 
| 104 | 
            -
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf'],
         | 
| 104 | 
            +
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf', trabalhador.uf_de_nascimento],
         | 
| 105 105 | 
             
                          ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf_TEXT'],
         | 
| 106 106 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Bairro'],
         | 
| 107 107 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Cep'],
         | 
| @@ -115,7 +115,7 @@ module Teodoro | |
| 115 115 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT'],
         | 
| 116 116 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Uf'],
         | 
| 117 117 | 
             
                          ['EventoAdmissao_EnderecoResidencialBR_Uf_TEXT'],
         | 
| 118 | 
            -
                          ['ResideExterior'],
         | 
| 118 | 
            +
                          ['ResideExterior', trabalhador.reside_no_exterior?, :bool],
         | 
| 119 119 | 
             
                          ['SemNumeroLogradouroEnderecoEX'],
         | 
| 120 120 | 
             
                          ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro'],
         | 
| 121 121 | 
             
                          ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada'],
         | 
| @@ -157,7 +157,7 @@ module Teodoro | |
| 157 157 | 
             
                          ['EventoAdmissao_Contato_EmailAlternativo'],
         | 
| 158 158 | 
             
                          ['CodigoCBO'],
         | 
| 159 159 | 
             
                          ['CodigoCNAE'],
         | 
| 160 | 
            -
                          ['InfoVinculo_Matricula'],
         | 
| 160 | 
            +
                          ['InfoVinculo_Matricula', matricula_do_trabalhador],
         | 
| 161 161 | 
             
                          ['InfoVinculo_TipoRegimeTrabalhista'],
         | 
| 162 162 | 
             
                          ['InfoVinculo_TipoRegimePrevidenciario'],
         | 
| 163 163 | 
             
                          ['InfoVinculo_InfoContrato_CodigoCategoria', categoria_do_trabalhador],
         | 
| @@ -215,6 +215,10 @@ module Teodoro | |
| 215 215 | 
             
                    @motivo_do_desligamento ||= evento['infoDeslig/mtvDeslig']
         | 
| 216 216 | 
             
                  end
         | 
| 217 217 |  | 
| 218 | 
            +
                  def trabalhador
         | 
| 219 | 
            +
                    @trabalhador ||= empresa.trabalhadores[cpf_do_trabalhador]
         | 
| 220 | 
            +
                  end
         | 
| 221 | 
            +
             | 
| 218 222 | 
             
                  def categoria_do_trabalhador
         | 
| 219 223 | 
             
                    contrato_de_emprego.categoria_do_trabalhador
         | 
| 220 224 | 
             
                  end
         |