teodoro 0.26.0 → 0.31.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.26.0'.freeze
15
+ VERSION = '0.31.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
@@ -55,7 +73,7 @@ module Teodoro
55
73
  private
56
74
 
57
75
  def validar_argumentos
58
- erro "#{NOME_DO_PROGRAMA} [diretório de origem] [diretório de destino]" unless args.size == 2
76
+ erro("#{NOME_DO_PROGRAMA} [diretório de origem] [diretório de destino]", saiba_mais: true) unless args.size == 2
59
77
  end
60
78
 
61
79
  def validar_que_nao_ha_nova_versao_disponivel
@@ -110,7 +128,9 @@ module Teodoro
110
128
  end
111
129
 
112
130
  def validar_que_diretorio_de_origem_nao_contem_arquivo
113
- erro 'Diretório de origem deve conter apenas diretórios de empresa.' if diretorio_de_origem_contem_arquivo?
131
+ return unless diretorio_de_origem_contem_arquivo?
132
+
133
+ erro('Diretório de origem deve conter apenas diretórios de empresa.', saiba_mais: true)
114
134
  end
115
135
 
116
136
  def diretorio_de_origem_contem_arquivo?
@@ -118,15 +138,15 @@ module Teodoro
118
138
  end
119
139
 
120
140
  def validar_que_diretorio_de_origem_nao_esta_vazio
121
- erro 'Diretório de origem vazio.' if Dir.empty?(origem)
141
+ erro('Diretório de origem vazio.', saiba_mais: true) if Dir.empty?(origem)
122
142
  end
123
143
 
124
144
  def validar_que_diretorio_de_destino_esta_vazio
125
- erro 'Diretório de destino deve estar vazio.' unless Dir.empty?(destino)
145
+ erro('Diretório de destino deve estar vazio.', saiba_mais: true) unless Dir.empty?(destino)
126
146
  end
127
147
 
128
- def erro(erro)
129
- puts erro
148
+ def erro(erro, saiba_mais: false)
149
+ puts [erro, *('Saiba mais em sites.google.com/fortestecnologia.com.br/teodoro.' if saiba_mais)]
130
150
  exit
131
151
  end
132
152
 
@@ -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,12 +61,16 @@ 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
68
- @contratos_de_trabalho_sem_vinculo ||= ContratosDeTrabalhoSemVinculo.new
73
+ @contratos_de_trabalho_sem_vinculo ||= ContratosDeTrabalhoSemVinculo.new(trabalhadores)
69
74
  end
70
75
 
71
76
  def cargos_gerados
@@ -1,8 +1,25 @@
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
- contratos_por_matricula[admissao.matricula] = Contrato.new(admissao: admissao, afastamento: afastamento)
15
+ contratos_por_matricula[admissao.matricula_do_trabalhador] =
16
+ Contrato.new(admissao: admissao, afastamento: afastamento)
17
+ trabalhadores << admissao.trabalhador
18
+ end
19
+
20
+ def registrar_alteracao_contratual(alteracao_contratual)
21
+ contratos_por_matricula[alteracao_contratual.matricula_do_trabalhador]
22
+ .registrar_alteracao_contratual(alteracao_contratual)
6
23
  end
7
24
 
8
25
  def [](matricula)
@@ -11,7 +28,7 @@ module Teodoro
11
28
 
12
29
  def *(cpf_do_trabalhador:, data:)
13
30
  contratos
14
- .select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
31
+ .select { _1.trabalhador.cpf == cpf_do_trabalhador && _1.ativo?(data) }
15
32
  .sort_by(&:data_de_admissao)
16
33
  end
17
34
 
@@ -35,6 +52,10 @@ module Teodoro
35
52
  def initialize(admissao:, afastamento:)
36
53
  @admissao = admissao
37
54
  @afastamento = afastamento
55
+
56
+ @tipo_de_regime_previdenciario = admissao.tipo_de_regime_previdenciario
57
+ @natureza_da_atividade = admissao.natureza_da_atividade
58
+ @duracao = admissao.duracao
38
59
  end
39
60
 
40
61
  attr_reader :admissao, :data_de_desligamento
@@ -43,13 +64,31 @@ module Teodoro
43
64
 
44
65
  extend Forwardable
45
66
 
46
- def_delegators :admissao, :matricula, :data_de_admissao, :categoria_do_trabalhador, :cpf_do_trabalhador,
67
+ def_delegators :admissao,
68
+ :trabalhador,
69
+ :primeiro_emprego_do_trabalhador,
70
+ :matricula_do_trabalhador,
71
+ :tipo_de_regime_trabalhista,
72
+ :data_de_admissao,
73
+ :tipo_de_admissao,
74
+ :indicativo_de_admissao,
75
+ :opcao_pelo_fgts,
76
+ :data_de_opcao_pelo_fgts,
77
+ :categoria_do_trabalhador,
47
78
  :recibo
48
79
 
49
80
  attr_accessor :afastamento
50
81
 
82
+ attr_reader :tipo_de_regime_previdenciario, :natureza_da_atividade, :duracao
83
+
51
84
  attr_writer :data_de_desligamento
52
85
 
86
+ def registrar_alteracao_contratual(alteracao_contratual)
87
+ @tipo_de_regime_previdenciario = alteracao_contratual.tipo_de_regime_previdenciario
88
+ @natureza_da_atividade = alteracao_contratual.natureza_da_atividade
89
+ @duracao = alteracao_contratual.duracao
90
+ end
91
+
53
92
  def ativo?(data)
54
93
  data_de_admissao <= data && (!data_de_desligamento || data_de_desligamento >= data)
55
94
  end
@@ -1,14 +1,25 @@
1
1
  module Teodoro
2
2
  class Empresa
3
3
  class ContratosDeTrabalhoSemVinculo
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_inicio_de_contrato(inicio_de_contrato:, afastamento:)
5
15
  contratos << Contrato.new(inicio_de_contrato: inicio_de_contrato, afastamento: afastamento)
16
+ trabalhadores << inicio_de_contrato.trabalhador
6
17
  end
7
18
 
8
19
  def [](cpf_do_trabalhador:, categoria_do_trabalhador:, data:)
9
20
  contratos
10
21
  .select {
11
- _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.categoria_do_trabalhador == categoria_do_trabalhador &&
22
+ _1.trabalhador.cpf == cpf_do_trabalhador && _1.categoria_do_trabalhador == categoria_do_trabalhador &&
12
23
  _1.ativo?(data)
13
24
  }
14
25
  .max_by(&:data_de_inicio)
@@ -16,7 +27,7 @@ module Teodoro
16
27
 
17
28
  def *(cpf_do_trabalhador:, data:)
18
29
  contratos
19
- .select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
30
+ .select { _1.trabalhador.cpf == cpf_do_trabalhador && _1.ativo?(data) }
20
31
  .sort_by(&:data_de_inicio)
21
32
  end
22
33
 
@@ -44,7 +55,11 @@ module Teodoro
44
55
 
45
56
  extend Forwardable
46
57
 
47
- def_delegators :inicio_de_contrato, :cpf_do_trabalhador, :categoria_do_trabalhador, :data_de_inicio, :recibo
58
+ def_delegators :inicio_de_contrato,
59
+ :trabalhador,
60
+ :categoria_do_trabalhador,
61
+ :data_de_inicio,
62
+ :recibo
48
63
 
49
64
  attr_accessor :afastamento
50
65
 
@@ -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,35 +13,115 @@ 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
 
27
- def contratos_de_emprego
28
- empresa.contratos_de_emprego
29
- end
30
-
31
- def matricula_do_trabalhador
32
- @matricula_do_trabalhador ||= evento['vinculo/matricula']
33
- end
34
-
35
- def data_de_admissao
36
- @data_de_admissao ||= evento['vinculo/infoRegimeTrab/infoCeletista/dtAdm']
21
+ def admissao # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
22
+ @admissao ||= Obj.new(
23
+ trabalhador: trabalhador,
24
+ primeiro_emprego_do_trabalhador: evento['trabalhador/indPriEmpr'],
25
+ matricula_do_trabalhador: evento['vinculo/matricula'],
26
+ tipo_de_regime_trabalhista: evento['vinculo/tpRegTrab'],
27
+ tipo_de_regime_previdenciario: evento['vinculo/tpRegPrev'],
28
+ data_de_admissao: evento['vinculo/infoRegimeTrab/infoCeletista/dtAdm'],
29
+ tipo_de_admissao: evento['vinculo/infoRegimeTrab/infoCeletista/tpAdmissao'],
30
+ indicativo_de_admissao: evento['vinculo/infoRegimeTrab/infoCeletista/indAdmissao'],
31
+ natureza_da_atividade: evento['vinculo/infoRegimeTrab/infoCeletista/natAtividade'],
32
+ opcao_pelo_fgts: de_acordo_com_a_versao_do_leiaute.opcao_pelo_fgts,
33
+ data_de_opcao_pelo_fgts: de_acordo_com_a_versao_do_leiaute.data_de_opcao_pelo_fgts,
34
+ categoria_do_trabalhador: evento['vinculo/infoContrato/codCateg'],
35
+ duracao: Obj.new(tipo_de_contrato: evento['vinculo/infoContrato/duracao/tpContr']),
36
+ recibo: numero_do_recibo
37
+ )
37
38
  end
38
39
 
39
- def categoria_do_trabalhador
40
- @categoria_do_trabalhador ||= evento['vinculo/infoContrato/codCateg']
40
+ def trabalhador # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
41
+ @trabalhador ||= Obj.new(
42
+ cpf: evento['trabalhador/cpfTrab'],
43
+ nis: evento['trabalhador/nisTrab'],
44
+ nome: evento['trabalhador/nmTrab'],
45
+ sexo: evento['trabalhador/sexo'],
46
+ raca_cor: evento['trabalhador/racaCor'],
47
+ estado_civil: evento['trabalhador/estCiv'],
48
+ grau_de_instrucao: evento['trabalhador/grauInstr'],
49
+ nome_social: evento['trabalhador/nmSoc'],
50
+ data_de_nascimento: evento['trabalhador/nascimento/dtNascto'],
51
+ pais_de_nascimento: evento['trabalhador/nascimento/paisNascto'],
52
+ pais_de_nacionalidade: evento['trabalhador/nascimento/paisNac'],
53
+ codigo_do_municipio_de_nascimento: evento['trabalhador/nascimento/codMunic'],
54
+ uf_de_nascimento: evento['trabalhador/nascimento/uf'],
55
+ nome_da_mae: evento['trabalhador/nascimento/nmMae'],
56
+ nome_do_pai: evento['trabalhador/nascimento/nmPai'],
57
+ reside_no_exterior?: evento['trabalhador/endereco/exterior'],
58
+ endereco: Obj.new(
59
+ tipo_de_logradouro: evento['trabalhador/endereco/brasil/tpLograd'],
60
+ logradouro: evento['trabalhador/endereco/brasil/dscLograd'],
61
+ numero: evento['trabalhador/endereco/brasil/nrLograd'],
62
+ complemento: evento['trabalhador/endereco/brasil/complemento'],
63
+ bairro: evento['trabalhador/endereco/brasil/bairro'],
64
+ cep: evento['trabalhador/endereco/brasil/cep'],
65
+ codigo_do_municipio: evento['trabalhador/endereco/brasil/codMunic'],
66
+ uf: evento['trabalhador/endereco/brasil/uf']
67
+ ),
68
+ estrangeiro?: evento['trabalhador/trabEstrangeiro'],
69
+ casado_com_brasileiro: evento['trabalhador/trabEstrangeiro/casadoBr'],
70
+ data_de_chegada_ao_brasil: evento['trabalhador/trabEstrangeiro/dtChegada'],
71
+ filhos_brasileiros: evento['trabalhador/trabEstrangeiro/filhosBr'],
72
+ ctps: Obj.new(
73
+ numero: evento['trabalhador/documentos/CTPS/nrCtps'],
74
+ serie: evento['trabalhador/documentos/CTPS/serieCtps'],
75
+ uf: evento['trabalhador/documentos/CTPS/ufCtps']
76
+ ),
77
+ rg: Obj.new(
78
+ numero: evento['trabalhador/documentos/RG/nrRg'],
79
+ orgao_emissor: evento['trabalhador/documentos/RG/orgaoEmissor'],
80
+ data_da_expedicao: evento['trabalhador/documentos/RG/dtExped']
81
+ ),
82
+ rne: Obj.new(
83
+ numero: evento['trabalhador/documentos/RNE/nrRne'],
84
+ orgao_emissor: evento['trabalhador/documentos/RNE/orgaoEmissor'],
85
+ data_da_expedicao: evento['trabalhador/documentos/RNE/dtExped']
86
+ ),
87
+ ric: Obj.new(
88
+ numero: evento['trabalhador/documentos/RIC/nrRic'],
89
+ orgao_emissor: evento['trabalhador/documentos/RIC/orgaoEmissor'],
90
+ data_da_expedicao: evento['trabalhador/documentos/RIC/dtExped']
91
+ ),
92
+ oc: Obj.new(
93
+ numero: evento['trabalhador/documentos/OC/nrOc'],
94
+ orgao_emissor: evento['trabalhador/documentos/OC/orgaoEmissor'],
95
+ data_da_expedicao: evento['trabalhador/documentos/OC/dtExped']
96
+ ),
97
+ cnh: Obj.new(
98
+ numero_do_registro: evento['trabalhador/documentos/CNH/nrRegCnh'],
99
+ data_da_primeira_habilitacao: evento['trabalhador/documentos/CNH/dtPriHab'],
100
+ data_da_expedicao: evento['trabalhador/documentos/CNH/dtExped'],
101
+ data_de_validade: evento['trabalhador/documentos/CNH/dtValid'],
102
+ categoria: evento['trabalhador/documentos/CNH/categoriaCnh'],
103
+ uf_do_emissor: evento['trabalhador/documentos/CNH/ufCnh']
104
+ ),
105
+ deficiencia: Obj.new(
106
+ fisica: evento['trabalhador/infoDeficiencia/defFisica'],
107
+ visual: evento['trabalhador/infoDeficiencia/defVisual'],
108
+ auditiva: evento['trabalhador/infoDeficiencia/defAuditiva'],
109
+ mental: evento['trabalhador/infoDeficiencia/defMental'],
110
+ intelectual: evento['trabalhador/infoDeficiencia/defIntelectual'],
111
+ reabilitado_ou_readaptado: evento['trabalhador/infoDeficiencia/reabReadap'],
112
+ preenche_cota_de_pessoas_com_deficiencia: evento['trabalhador/infoDeficiencia/infoCota']
113
+ ),
114
+ contato: Obj.new(
115
+ fone_principal: evento['trabalhador/contato/fonePrinc'],
116
+ fone_alternativo: evento['trabalhador/contato/foneAlternat'],
117
+ email_principal: evento['trabalhador/contato/emailPrinc'],
118
+ email_alternativo: evento['trabalhador/contato/emailAlternat']
119
+ )
120
+ )
41
121
  end
42
122
 
43
- def cpf_do_trabalhador
44
- @cpf_do_trabalhador ||= evento['trabalhador/cpfTrab']
123
+ def contratos_de_emprego
124
+ empresa.contratos_de_emprego
45
125
  end
46
126
 
47
127
  def afastamento
@@ -54,14 +134,19 @@ module Teodoro
54
134
  def dados_dos_arquivos_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
55
135
  [
56
136
  Obj.new(
57
- nome: "TRA[#{cpf_do_trabalhador}][EPG_#{matricula_do_trabalhador}_#{data_de_admissao.delete('-')}]-ADM",
137
+ nome: [
138
+ 'TRA',
139
+ "[#{trabalhador.cpf}]",
140
+ "[EPG_#{admissao.matricula_do_trabalhador}_#{admissao.data_de_admissao.delete('-')}]",
141
+ '-ADM'
142
+ ].join,
58
143
  itens_do_conteudo: [
59
144
  # rubocop:disable Layout/LineLength
60
- ['ESX_CPF', cpf_do_trabalhador],
61
- ['ESX_MATRICULA', matricula_do_trabalhador],
62
- ['ESX_CATEGORIA', categoria_do_trabalhador],
145
+ ['ESX_CPF', trabalhador.cpf],
146
+ ['ESX_MATRICULA', admissao.matricula_do_trabalhador],
147
+ ['ESX_CATEGORIA', admissao.categoria_do_trabalhador],
63
148
  %w[ESX_SEMVINCULO 0],
64
- ['ESX_DATAADMISSAO', data_de_admissao, :data],
149
+ ['ESX_DATAADMISSAO', admissao.data_de_admissao, :data],
65
150
  ['IdEventoXml', id_do_evento],
66
151
  ['NrReciboEventoOriginal'],
67
152
  ['EventoAdmissao_TipoEventoEnviado'],
@@ -81,83 +166,83 @@ module Teodoro
81
166
  ['DescricaoProcEmi', processo_de_emissao_do_evento],
82
167
  ['VerProc', versao_do_processo_de_emissao_do_evento],
83
168
  ['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']],
169
+ ['EventoAdmissao_InfoTrabalhador_Cpf', trabalhador.cpf],
170
+ ['EventoAdmissao_InfoTrabalhador_Nome', trabalhador.nome],
171
+ ['EventoAdmissao_InfoTrabalhador_Nis', trabalhador.nis],
172
+ ['EventoAdmissao_InfoTrabalhador_Sexo', trabalhador.sexo],
88
173
  ['EventoAdmissao_InfoTrabalhador_Sexo_TEXT'],
89
- ['EventoAdmissao_InfoTrabalhador_RacaCor', evento['trabalhador/racaCor']],
174
+ ['EventoAdmissao_InfoTrabalhador_RacaCor', trabalhador.raca_cor],
90
175
  ['EventoAdmissao_InfoTrabalhador_RacaCor_TEXT'],
91
- ['EventoAdmissao_InfoTrabalhador_EstadoCivil', evento['trabalhador/estCiv']],
176
+ ['EventoAdmissao_InfoTrabalhador_EstadoCivil', trabalhador.estado_civil],
92
177
  ['EventoAdmissao_InfoTrabalhador_EstadoCivil_TEXT'],
93
- ['EventoAdmissao_InfoTrabalhador_GrauInstrucao', evento['trabalhador/grauInstr']],
178
+ ['EventoAdmissao_InfoTrabalhador_GrauInstrucao', trabalhador.grau_de_instrucao],
94
179
  ['EventoAdmissao_InfoTrabalhador_GrauInstrucao_TEXT'],
95
180
  ['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']],
181
+ ['EventoAdmissao_InfoTrabalhador_NomeSocial', trabalhador.nome_social],
182
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio', trabalhador.codigo_do_municipio_de_nascimento],
183
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT', Municipios[trabalhador.codigo_do_municipio_de_nascimento]],
184
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento', trabalhador.data_de_nascimento, :data],
185
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae', trabalhador.nome_da_mae],
186
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai', trabalhador.nome_do_pai],
187
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento', trabalhador.pais_de_nascimento],
103
188
  ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento_TEXT'],
104
- ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade', evento['trabalhador/nascimento/paisNac']],
189
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade', trabalhador.pais_de_nacionalidade],
105
190
  ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade_TEXT'],
106
- ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf', evento['trabalhador/nascimento/uf']],
191
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf', trabalhador.uf_de_nascimento],
107
192
  ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf_TEXT'],
108
- ['EventoAdmissao_EnderecoResidencialBR_Bairro', evento['trabalhador/endereco/brasil/bairro']],
109
- ['EventoAdmissao_EnderecoResidencialBR_Cep', evento['trabalhador/endereco/brasil/cep']],
110
- ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio', evento['trabalhador/endereco/brasil/codMunic']],
111
- ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio_TEXT'],
112
- ['EventoAdmissao_EnderecoResidencialBR_Complemento', evento['trabalhador/endereco/brasil/complemento']],
113
- ['EventoAdmissao_EnderecoResidencialBR_DescricaoLogradouro', evento['trabalhador/endereco/brasil/dscLograd']],
114
- ['EventoAdmissao_EnderecoResidencialBR_NumeroLogradouro', evento['trabalhador/endereco/brasil/nrLograd']],
193
+ ['EventoAdmissao_EnderecoResidencialBR_Bairro', trabalhador.endereco.bairro],
194
+ ['EventoAdmissao_EnderecoResidencialBR_Cep', trabalhador.endereco.cep],
195
+ ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio', trabalhador.endereco.codigo_do_municipio],
196
+ ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio_TEXT', Municipios[trabalhador.endereco.codigo_do_municipio]],
197
+ ['EventoAdmissao_EnderecoResidencialBR_Complemento', trabalhador.endereco.complemento],
198
+ ['EventoAdmissao_EnderecoResidencialBR_DescricaoLogradouro', trabalhador.endereco.logradouro],
199
+ ['EventoAdmissao_EnderecoResidencialBR_NumeroLogradouro', trabalhador.endereco.numero],
115
200
  ['SemNumeroLogradouroEnderecoBR'],
116
- ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro', evento['trabalhador/endereco/brasil/tpLograd']],
117
- ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT'],
118
- ['EventoAdmissao_EnderecoResidencialBR_Uf', evento['trabalhador/endereco/brasil/uf']],
201
+ ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro', trabalhador.endereco.tipo_de_logradouro],
202
+ ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT', trabalhador.endereco.tipo_de_logradouro.then { "#{_1} - #{TiposDeLogradouro[_1]}" }],
203
+ ['EventoAdmissao_EnderecoResidencialBR_Uf', trabalhador.endereco.uf],
119
204
  ['EventoAdmissao_EnderecoResidencialBR_Uf_TEXT'],
120
- ['ResideExterior', evento['trabalhador/endereco/exterior'], :bool],
205
+ ['ResideExterior', trabalhador.reside_no_exterior?, :bool],
121
206
  ['SemNumeroLogradouroEnderecoEX'],
122
- ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', evento['trabalhador/trabEstrangeiro/casadoBr']],
123
- ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', evento['trabalhador/trabEstrangeiro/dtChegada'], :data],
124
- ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_FilhosBrasileiros', evento['trabalhador/trabEstrangeiro/filhosBr']],
207
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', trabalhador.casado_com_brasileiro],
208
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', trabalhador.data_de_chegada_ao_brasil, :data],
209
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_FilhosBrasileiros', trabalhador.filhos_brasileiros],
125
210
  de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao'],
126
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh', evento['trabalhador/documentos/CNH/categoriaCnh']],
211
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh', trabalhador.cnh.categoria],
127
212
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh_TEXT'],
128
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao', evento['trabalhador/documentos/CNH/dtExped'], :data],
129
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataPrimeiraHabilitacao', evento['trabalhador/documentos/CNH/dtPriHab'], :data],
130
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataValidade', evento['trabalhador/documentos/CNH/dtValid'], :data],
131
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_NumeroCnh', evento['trabalhador/documentos/CNH/nrRegCnh']],
132
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh', evento['trabalhador/documentos/CNH/ufCnh']],
213
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao', trabalhador.cnh.data_da_expedicao, :data],
214
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataPrimeiraHabilitacao', trabalhador.cnh.data_da_primeira_habilitacao, :data],
215
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataValidade', trabalhador.cnh.data_de_validade, :data],
216
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_NumeroCnh', trabalhador.cnh.numero_do_registro],
217
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh', trabalhador.cnh.uf_do_emissor],
133
218
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh_TEXT'],
134
- ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_NumeroCtps', evento['trabalhador/documentos/CTPS/nrCtps']],
135
- ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_SerieCtps', evento['trabalhador/documentos/CTPS/serieCtps']],
136
- ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps', evento['trabalhador/documentos/CTPS/ufCtps']],
219
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_NumeroCtps', trabalhador.ctps.numero],
220
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_SerieCtps', trabalhador.ctps.serie],
221
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps', trabalhador.ctps.uf],
137
222
  ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps_TEXT'],
138
- ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_DataExpedicao', evento['trabalhador/documentos/OC/dtExped']],
139
- ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_NumeroOc', evento['trabalhador/documentos/OC/nrOc']],
140
- ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_OrgaoEmissor', evento['trabalhador/documentos/OC/orgaoEmissor']],
141
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao', evento['trabalhador/documentos/RG/dtExped'], :data],
142
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_NumeroRg', evento['trabalhador/documentos/RG/nrRg']],
143
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_OrgaoEmissor', evento['trabalhador/documentos/RG/orgaoEmissor']],
144
- ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_DataExpedicao', evento['trabalhador/documentos/RIC/dtExped'], :data],
145
- ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_NumeroRic', evento['trabalhador/documentos/RIC/nrRic']],
146
- ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_OrgaoEmissor', evento['trabalhador/documentos/RIC/orgaoEmissor']],
147
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_DataExpedicao', evento['trabalhador/documentos/RNE/dtExped'], :data],
148
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_NumerorRne', evento['trabalhador/documentos/RNE/nrRne']],
149
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_OrgaoEmissor', evento['trabalhador/documentos/RNE/orgaoEmissor']],
150
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaAuditiva', evento['trabalhador/infoDeficiencia/defAuditiva']],
151
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaFisica', evento['trabalhador/infoDeficiencia/defFisica']],
152
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaIntelectual', evento['trabalhador/infoDeficiencia/defIntelectual']],
153
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaMental', evento['trabalhador/infoDeficiencia/defMental']],
154
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaVisual', evento['trabalhador/infoDeficiencia/defVisual']],
155
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_InfoCota', evento['trabalhador/infoDeficiencia/infoCota']],
156
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_ReabilitadoOuReadaptado', evento['trabalhador/infoDeficiencia/reabReadap']],
157
- ['EventoAdmissao_Contato_TelefonePrincipal', evento['trabalhador/contato/fonePrinc']],
158
- ['EventoAdmissao_Contato_EmailPrincipal', evento['trabalhador/contato/emailPrinc']],
159
- ['EventoAdmissao_Contato_TelefoneAlternativo', evento['trabalhador/contato/foneAlternat']],
160
- ['EventoAdmissao_Contato_EmailAlternativo', evento['trabalhador/contato/emailAlternat']],
223
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_DataExpedicao', trabalhador.oc.data_da_expedicao, :data],
224
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_NumeroOc', trabalhador.oc.numero],
225
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_OrgaoEmissor', trabalhador.oc.orgao_emissor],
226
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao', trabalhador.rg.data_da_expedicao, :data],
227
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_NumeroRg', trabalhador.rg.numero],
228
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_OrgaoEmissor', trabalhador.rg.orgao_emissor],
229
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_DataExpedicao', trabalhador.ric.data_da_expedicao, :data],
230
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_NumeroRic', trabalhador.ric.numero],
231
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_OrgaoEmissor', trabalhador.ric.orgao_emissor],
232
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_DataExpedicao', trabalhador.rne.data_da_expedicao, :data],
233
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_NumerorRne', trabalhador.rne.numero],
234
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_OrgaoEmissor', trabalhador.rne.orgao_emissor],
235
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaAuditiva', trabalhador.deficiencia.auditiva],
236
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaFisica', trabalhador.deficiencia.fisica],
237
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaIntelectual', trabalhador.deficiencia.intelectual],
238
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaMental', trabalhador.deficiencia.mental],
239
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaVisual', trabalhador.deficiencia.visual],
240
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_InfoCota', trabalhador.deficiencia.preenche_cota_de_pessoas_com_deficiencia],
241
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_ReabilitadoOuReadaptado', trabalhador.deficiencia.reabilitado_ou_readaptado],
242
+ ['EventoAdmissao_Contato_TelefonePrincipal', trabalhador.contato.fone_principal],
243
+ ['EventoAdmissao_Contato_EmailPrincipal', trabalhador.contato.email_principal],
244
+ ['EventoAdmissao_Contato_TelefoneAlternativo', trabalhador.contato.fone_alternativo],
245
+ ['EventoAdmissao_Contato_EmailAlternativo', trabalhador.contato.email_alternativo],
161
246
  *evento.*('trabalhador/dependente').map.with_index(1) do |dependente, seq|
162
247
  [
163
248
  ["EventoAdmissao_Dependente_#{seq}_CPFDependente", dependente['cpfDep']],
@@ -183,19 +268,19 @@ module Teodoro
183
268
  ["InfoVinculo_InfoContrato_FiliacaoSindical_#{seq}_CnpjSindicatoTrabalhador", filiacao['cnpjSindTrab']]
184
269
  ]
185
270
  end.sum([]),
186
- ['EventoAdmissao_InfoVinculo_InfoContrato_CodigoCategoria', categoria_do_trabalhador],
187
- ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_TipoContrato', evento['vinculo/infoContrato/duracao/tpContr']],
271
+ ['EventoAdmissao_InfoVinculo_InfoContrato_CodigoCategoria', admissao.categoria_do_trabalhador],
272
+ ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_TipoContrato', admissao.duracao.tipo_de_contrato],
188
273
  ['EventoAdmissao_InfoVinculo_InfoContrato_Remuneracao_UnidadeSalarioFixo', evento['vinculo/infoContrato/remuneracao/undSalFixo']],
189
274
  ['EventoAdmissao_InfoVinculo_InfoContrato_Remuneracao_ValorSalarioFixo', evento['vinculo/infoContrato/remuneracao/vrSalFx'], :decimal],
190
275
  ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_CnpjSindicatoCategoriaProfissional', evento['vinculo/infoRegimeTrab/infoCeletista/cnpjSindCategProf']],
191
276
  ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_DataAdmissao', evento['vinculo/infoRegimeTrab/infoCeletista/dtAdm'], :data],
192
- ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_IndicativoAdmissao', evento['vinculo/infoRegimeTrab/infoCeletista/indAdmissao']],
193
- ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_NaturezaAtividade', evento['vinculo/infoRegimeTrab/infoCeletista/natAtividade']],
194
- ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TipoAdmissao', evento['vinculo/infoRegimeTrab/infoCeletista/tpAdmissao']],
277
+ ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_IndicativoAdmissao', admissao.indicativo_de_admissao],
278
+ ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_NaturezaAtividade', admissao.natureza_da_atividade],
279
+ ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TipoAdmissao', admissao.tipo_de_admissao],
195
280
  ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TipoRegimeJornada', evento['vinculo/infoRegimeTrab/infoCeletista/tpRegJor']],
196
281
  ['EventoAdmissao_InfoVinculo_Matricula', evento['vinculo/matricula']],
197
- ['EventoAdmissao_InfoVinculo_TipoRegimePrevidenciario', evento['vinculo/tpRegPrev']],
198
- ['EventoAdmissao_InfoVinculo_TipoRegimeTrabalhista', evento['vinculo/tpRegTrab']],
282
+ ['EventoAdmissao_InfoVinculo_TipoRegimePrevidenciario', admissao.tipo_de_regime_previdenciario],
283
+ ['EventoAdmissao_InfoVinculo_TipoRegimeTrabalhista', admissao.tipo_de_regime_trabalhista],
199
284
  de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS'],
200
285
  de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_DataOpcaoFGTS'],
201
286
  de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InfoContrato_CodigoCargo'],
@@ -259,6 +344,18 @@ module Teodoro
259
344
  @evento = evento
260
345
  end
261
346
 
347
+ public
348
+
349
+ def opcao_pelo_fgts
350
+ @opcao_pelo_fgts ||= evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/opcFGTS']
351
+ end
352
+
353
+ def data_de_opcao_pelo_fgts
354
+ @data_de_opcao_pelo_fgts ||= evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/dtOpcFGTS']
355
+ end
356
+
357
+ private
358
+
262
359
  def dados_do_arquivo_data # rubocop:disable Metrics/MethodLength
263
360
  [
264
361
  # rubocop:disable Layout/LineLength
@@ -276,11 +373,11 @@ module Teodoro
276
373
  ],
277
374
  [
278
375
  'EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS',
279
- evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/opcFGTS']
376
+ opcao_pelo_fgts
280
377
  ],
281
378
  [
282
379
  'EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_DataOpcaoFGTS',
283
- evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/dtOpcFGTS'],
380
+ data_de_opcao_pelo_fgts,
284
381
  :data
285
382
  ],
286
383
  [
@@ -308,7 +405,19 @@ module Teodoro
308
405
 
309
406
  attr_reader :empresa
310
407
 
311
- def dados_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
408
+ public
409
+
410
+ def opcao_pelo_fgts
411
+ @opcao_pelo_fgts ||= evento['vinculo/infoRegimeTrab/infoCeletista/FGTS'] ? 1 : 2
412
+ end
413
+
414
+ def data_de_opcao_pelo_fgts
415
+ @data_de_opcao_pelo_fgts ||= evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/dtOpcFGTS']
416
+ end
417
+
418
+ private
419
+
420
+ def dados_do_arquivo_data # rubocop:disable Metrics/MethodLength
312
421
  [
313
422
  # rubocop:disable Layout/LineLength
314
423
  [
@@ -333,11 +442,11 @@ module Teodoro
333
442
  ],
334
443
  [
335
444
  'EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS',
336
- evento['vinculo/infoRegimeTrab/infoCeletista/FGTS'] ? 1 : 2
445
+ opcao_pelo_fgts
337
446
  ],
338
447
  [
339
448
  'EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_DataOpcaoFGTS',
340
- evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/dtOpcFGTS'],
449
+ data_de_opcao_pelo_fgts,
341
450
  :data
342
451
  ],
343
452
  [