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.
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.27.0'.freeze
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
@@ -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.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
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, :matricula, :data_de_admissao, :categoria_do_trabalhador, :cpf_do_trabalhador,
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: Obj.new(
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[#{cpf_do_trabalhador}][EPG_#{matricula_do_trabalhador}_#{data_de_admissao.delete('-')}]-ADM",
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', cpf_do_trabalhador],
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', cpf_do_trabalhador],
85
- ['EventoAdmissao_InfoTrabalhador_Nome', evento['trabalhador/nmTrab']],
86
- ['EventoAdmissao_InfoTrabalhador_Nis', evento['trabalhador/nisTrab']],
87
- ['EventoAdmissao_InfoTrabalhador_Sexo', evento['trabalhador/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', evento['trabalhador/racaCor']],
115
+ ['EventoAdmissao_InfoTrabalhador_RacaCor', trabalhador.raca_cor],
90
116
  ['EventoAdmissao_InfoTrabalhador_RacaCor_TEXT'],
91
- ['EventoAdmissao_InfoTrabalhador_EstadoCivil', evento['trabalhador/estCiv']],
117
+ ['EventoAdmissao_InfoTrabalhador_EstadoCivil', trabalhador.estado_civil],
92
118
  ['EventoAdmissao_InfoTrabalhador_EstadoCivil_TEXT'],
93
- ['EventoAdmissao_InfoTrabalhador_GrauInstrucao', evento['trabalhador/grauInstr']],
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', evento['trabalhador/nmSoc']],
97
- ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio', evento['trabalhador/nascimento/codMunic']],
98
- ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT'],
99
- ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento', evento['trabalhador/nascimento/dtNascto'], :data],
100
- ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae', evento['trabalhador/nascimento/nmMae']],
101
- ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai', evento['trabalhador/nascimento/nmPai']],
102
- ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento', evento['trabalhador/nascimento/paisNascto']],
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', evento['trabalhador/nascimento/paisNac']],
130
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade', trabalhador.pais_de_nacionalidade],
105
131
  ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade_TEXT'],
106
- ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf', evento['trabalhador/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', evento['trabalhador/endereco/brasil/codMunic']],
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', evento['trabalhador/endereco/brasil/tpLograd']],
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', evento['trabalhador/endereco/exterior'], :bool],
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[#{cpf_do_trabalhador}]",
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', cpf_do_trabalhador],
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', cpf_do_trabalhador],
36
- ['EventoAdmissao_InfoTrabalhador_Nome', evento['alteracao/dadosTrabalhador/nmTrab']],
37
- ['EventoAdmissao_InfoTrabalhador_Nis', evento['alteracao/dadosTrabalhador/nisTrab']],
38
- ['EventoAdmissao_InfoTrabalhador_Sexo', evento['alteracao/dadosTrabalhador/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', evento['alteracao/dadosTrabalhador/racaCor']],
71
+ ['EventoAdmissao_InfoTrabalhador_RacaCor', trabalhador.raca_cor],
41
72
  ['EventoAdmissao_InfoTrabalhador_RacaCor_TEXT'],
42
- ['EventoAdmissao_InfoTrabalhador_EstadoCivil', evento['alteracao/dadosTrabalhador/estCiv']],
73
+ ['EventoAdmissao_InfoTrabalhador_EstadoCivil', trabalhador.estado_civil],
43
74
  ['EventoAdmissao_InfoTrabalhador_EstadoCivil_TEXT'],
44
- ['EventoAdmissao_InfoTrabalhador_GrauInstrucao', evento['alteracao/dadosTrabalhador/grauInstr']],
75
+ ['EventoAdmissao_InfoTrabalhador_GrauInstrucao', trabalhador.grau_de_instrucao],
45
76
  ['EventoAdmissao_InfoTrabalhador_GrauInstrucao_TEXT'],
46
- ['EventoAdmissao_InfoTrabalhador_NomeSocial', evento['alteracao/dadosTrabalhador/nmSoc']],
47
- ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio', evento['alteracao/dadosTrabalhador/nascimento/codMunic']],
48
- ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT'],
49
- ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento', evento['alteracao/dadosTrabalhador/nascimento/dtNascto'], :data],
50
- ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae', evento['alteracao/dadosTrabalhador/nascimento/nmMae']],
51
- ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai', evento['alteracao/dadosTrabalhador/nascimento/nmPai']],
52
- ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento', evento['alteracao/dadosTrabalhador/nascimento/paisNascto']],
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', evento["alteracao/dadosTrabalhador/#{'nascimento' unless leiaute_simplificado?}/paisNac"]],
85
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade', trabalhador.pais_de_nacionalidade],
55
86
  ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade_TEXT'],
56
- ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf', evento['alteracao/dadosTrabalhador/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', evento['alteracao/dadosTrabalhador/endereco/brasil/codMunic']],
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', evento['alteracao/dadosTrabalhador/endereco/brasil/tpLograd']],
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', evento['alteracao/dadosTrabalhador/endereco/exterior'], :bool],
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: cpf_do_trabalhador, data: data_da_alteracao)
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: cpf_do_trabalhador, data: data_da_alteracao)
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