teodoro 0.27.0 → 0.28.0

Sign up to get free protection for your applications and to get access to all the features.
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