teodoro 0.0.10 → 0.1.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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/lib/teodoro.rb +5 -11
  3. data/lib/teodoro/arquivo_de_evento.rb +22 -8
  4. data/lib/teodoro/{arquivo_de_evento_exceto_de_exclusao.rb → arquivo_de_evento_criador_de_arquivo_data.rb} +2 -8
  5. data/lib/teodoro/arquivo_de_evento_de_tabela.rb +2 -12
  6. data/lib/teodoro/arquivo_de_evento_nao_periodico.rb +9 -42
  7. data/lib/teodoro/arquivo_de_evento_processador_de_arquivo_data.rb +30 -0
  8. data/lib/teodoro/arquivo_de_evento_retificavel.rb +23 -0
  9. data/lib/teodoro/arquivo_de_origem.rb +1 -1
  10. data/lib/teodoro/arquivo_xml.rb +44 -73
  11. data/lib/teodoro/console.rb +2 -6
  12. data/lib/teodoro/empresa.rb +108 -14
  13. data/lib/teodoro/leiaute.rb +24 -0
  14. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s1000.rb +7 -9
  15. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s1005.rb +4 -4
  16. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s1010.rb +3 -5
  17. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s1020.rb +4 -4
  18. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s1030.rb +4 -4
  19. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s1040.rb +2 -4
  20. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s1050.rb +4 -4
  21. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s1070.rb +2 -4
  22. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s2190.rb +2 -2
  23. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s2200.rb +138 -22
  24. data/lib/teodoro/leiaute/arquivo_s2205.rb +264 -0
  25. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s2206.rb +18 -7
  26. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s2230.rb +56 -12
  27. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s2250.rb +25 -9
  28. data/lib/teodoro/leiaute/arquivo_s2299.rb +313 -0
  29. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s2300.rb +31 -5
  30. data/lib/teodoro/{leiaute_2_4_1 → leiaute}/arquivo_s2306.rb +27 -7
  31. data/lib/teodoro/leiaute/arquivo_s2399.rb +306 -0
  32. data/lib/teodoro/leiaute/arquivo_s3000.rb +33 -0
  33. data/lib/teodoro/obj.rb +5 -0
  34. metadata +26 -21
  35. data/lib/teodoro/leiaute_2_4_1.rb +0 -22
  36. data/lib/teodoro/leiaute_2_4_1/arquivo_s2205.rb +0 -157
  37. data/lib/teodoro/leiaute_2_4_1/arquivo_s3000.rb +0 -45
@@ -1,10 +1,44 @@
1
1
  module Teodoro
2
- module Leiaute_2_4_1
2
+ module Leiaute
3
3
  class ArquivoS2200 # rubocop:disable Metrics/ClassLength
4
4
  include ArquivoDeEventoNaoPeriodico
5
5
 
6
+ def processar
7
+ remover_registro_do_contrato_de_emprego if retificacao?
8
+
9
+ super
10
+
11
+ registrar_contrato_de_emprego
12
+ end
13
+
6
14
  private
7
15
 
16
+ def remover_registro_do_contrato_de_emprego
17
+ contratos_de_emprego.remover(numero_do_recibo_a_retificar)
18
+ end
19
+
20
+ def registrar_contrato_de_emprego
21
+ contratos_de_emprego << Obj.new(
22
+ matricula: matricula_do_trabalhador,
23
+ data_de_admissao: data_de_admissao,
24
+ categoria_do_trabalhador: categoria_do_trabalhador,
25
+ cpf_do_trabalhador: cpf_do_trabalhador,
26
+ recibo: numero_do_recibo
27
+ )
28
+ end
29
+
30
+ def contratos_de_emprego
31
+ empresa.contratos_de_emprego
32
+ end
33
+
34
+ def data_de_admissao
35
+ @data_de_admissao ||= evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/dtAdm']
36
+ end
37
+
38
+ def categoria_do_trabalhador
39
+ @categoria_do_trabalhador ||= evento['evtAdmissao/vinculo/infoContrato/codCateg']
40
+ end
41
+
8
42
  def noh_principal_do_evento
9
43
  'evtAdmissao'
10
44
  end
@@ -22,13 +56,9 @@ module Teodoro
22
56
  @matricula_do_trabalhador ||= evento['evtAdmissao/vinculo/matricula']
23
57
  end
24
58
 
25
- def data_de_admissao
26
- @data_de_admissao ||= evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/dtAdm']
27
- end
28
-
29
- # rubocop:disable Metrics/MethodLength, Layout/LineLength, Metrics/AbcSize
30
- def itens_do_conteudo_do_arquivo_data
59
+ def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
31
60
  [
61
+ # rubocop:disable Layout/LineLength
32
62
  ['ESX_CPF', cpf_do_trabalhador],
33
63
  ['ESX_MATRICULA', matricula_do_trabalhador],
34
64
  ['ESX_CATEGORIA', categoria_do_trabalhador],
@@ -39,7 +69,7 @@ module Teodoro
39
69
  ['NrReciboEventoOriginal'],
40
70
  ['EventoAdmissao_TipoEventoEnviado'],
41
71
  ['TipoInscricaoEmpregador', tipo_de_inscricao_do_empregador],
42
- ['EventoAdmissao_NrRecibo', numero_do_recibo_a_retificar], # FIXME: Tales
72
+ ['EventoAdmissao_NrRecibo', numero_do_recibo],
43
73
  ['EventoAdmissao_DataAlteracaoCadastral'],
44
74
  ['EventoAdmissao_InformacoesInicio_IndicativoCadastramentoInicial', evento['evtAdmissao/vinculo/cadIni']],
45
75
  ['EventoAdmissao_InformacoesInicio_DataInicio'],
@@ -137,7 +167,7 @@ module Teodoro
137
167
  ['EventoAdmissao_EnderecoResidencialEX_PaisResidencia_TEXT'],
138
168
  ['SemNumeroLogradouroEnderecoEX'],
139
169
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', evento['evtAdmissao/trabalhador/trabEstrangeiro/casadoBr']],
140
- ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao', evento['evtAdmissao/trabalhador/trabEstrangeiro/classTrabEstrang']],
170
+ item_do_conteudo_do_arquivo_data('EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao'),
141
171
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao_TEXT'],
142
172
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', evento['evtAdmissao/trabalhador/trabEstrangeiro/dtChegada']],
143
173
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_FilhosBrasileiros', evento['evtAdmissao/trabalhador/trabEstrangeiro/filhosBr']],
@@ -230,19 +260,19 @@ module Teodoro
230
260
  ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_DescricaoComplementar', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabGeral/descComp']],
231
261
  ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_NumeroInscricao', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabGeral/nrInsc']],
232
262
  ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_TipoInscricao', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabGeral/tpInsc']],
233
- ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Uf', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/uf']],
234
- ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_TipoLogradouro', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/tpLograd']],
263
+ item_do_conteudo_do_arquivo_data('InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Uf'),
264
+ item_do_conteudo_do_arquivo_data('InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_TipoLogradouro'),
235
265
  ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_TipoLogradouro_TEXT'],
236
- ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_NumeroLogradouro', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/nrLograd']],
237
- ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_DescricaoLogradouro', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/dscLograd']],
238
- ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Complemento', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/complemento']],
239
- ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_CodigoMunicipio', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/codMunic']],
240
- ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Cep', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/cep']],
241
- ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Bairro', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/bairro']],
266
+ item_do_conteudo_do_arquivo_data('InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_NumeroLogradouro'),
267
+ item_do_conteudo_do_arquivo_data('InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_DescricaoLogradouro'),
268
+ item_do_conteudo_do_arquivo_data('InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Complemento'),
269
+ item_do_conteudo_do_arquivo_data('InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_CodigoMunicipio'),
270
+ item_do_conteudo_do_arquivo_data('InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Cep'),
271
+ item_do_conteudo_do_arquivo_data('InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Bairro'),
242
272
  ['InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TrabalhoTemporario_EmpresaContratante_NumeroInscricao', evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/trabTemporario/ideTomadorServ/nrInsc']],
243
273
  ['InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TrabalhoTemporario_EmpresaContratante_TipoInscricao', evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/trabTemporario/ideTomadorServ/tpInsc']],
244
- ['InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TrabalhoTemporario_EmpresaContratante_EstabelecimentoVinculadoTemporario_NumeroInscricao', evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/trabTemporario/ideTomadorServ/ideEstabVinc/nrInsc']],
245
- ['InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TrabalhoTemporario_EmpresaContratante_EstabelecimentoVinculadoTemporario_TipoInscricao', evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/trabTemporario/ideTomadorServ/ideEstabVinc/tpInsc']],
274
+ item_do_conteudo_do_arquivo_data('InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TrabalhoTemporario_EmpresaContratante_EstabelecimentoVinculadoTemporario_NumeroInscricao'),
275
+ item_do_conteudo_do_arquivo_data('InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TrabalhoTemporario_EmpresaContratante_EstabelecimentoVinculadoTemporario_TipoInscricao'),
246
276
  ['InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TrabalhoTemporario_HipoteseLegal', evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/trabTemporario/hipLeg']],
247
277
  ['InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TrabalhoTemporario_JustificaHipoteseLegal', evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/trabTemporario/justContr']],
248
278
  ['InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TrabalhoTemporario_TipoInclusaoContrato', evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/trabTemporario/tpInclContr']],
@@ -288,12 +318,98 @@ module Teodoro
288
318
  ["InfoVinculo_InfoContrato_FiliacaoSindical_#{seq}_CnpjSindicatoTrabalhador", filiacao['cnpjSindTrab']]
289
319
  ]
290
320
  end.sum([])
321
+ # rubocop:enable Layout/LineLength
291
322
  ]
292
323
  end
293
- # rubocop:enable Metrics/MethodLength, Layout/LineLength, Metrics/AbcSize
294
324
 
295
- def categoria_do_trabalhador
296
- @categoria_do_trabalhador ||= evento['evtAdmissao/vinculo/infoContrato/codCateg']
325
+ def item_do_conteudo_do_arquivo_data(chave)
326
+ chaves_valores_de_acordo_com_a_versao_do_leiaute[chave]
327
+ end
328
+
329
+ def chaves_valores_de_acordo_com_a_versao_do_leiaute
330
+ @chaves_valores_de_acordo_com_a_versao_do_leiaute ||=
331
+ (leiaute_simplificado? ? ChavesValoresDoLeiauteSimplificado : ChavesValoresDoLeiaute2).new(evento)
332
+ end
333
+
334
+ module ChavesValores
335
+ private
336
+
337
+ def initialize(evento)
338
+ @evento = evento
339
+ end
340
+
341
+ attr_reader :evento
342
+
343
+ public
344
+
345
+ def [](chave)
346
+ de_chave_para_chave_valor[chave]
347
+ end
348
+
349
+ private
350
+
351
+ def de_chave_para_chave_valor
352
+ @de_chave_para_chave_valor ||=
353
+ itens_do_conteudo_do_arquivo_data.map { |chave, valor| [chave, [chave, valor]] }.to_h
354
+ end
355
+ end
356
+
357
+ class ChavesValoresDoLeiaute2
358
+ include ChavesValores
359
+
360
+ private
361
+
362
+ def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
363
+ [
364
+ # rubocop:disable Layout/LineLength
365
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao', evento['evtAdmissao/trabalhador/trabEstrangeiro/classTrabEstrang']],
366
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Uf', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/uf']],
367
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_TipoLogradouro', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/tpLograd']],
368
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_NumeroLogradouro', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/nrLograd']],
369
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_DescricaoLogradouro', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/dscLograd']],
370
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Complemento', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/complemento']],
371
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_CodigoMunicipio', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/codMunic']],
372
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Cep', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/cep']],
373
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Bairro', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom/bairro']],
374
+ ['InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TrabalhoTemporario_EmpresaContratante_EstabelecimentoVinculadoTemporario_NumeroInscricao', evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/trabTemporario/ideTomadorServ/ideEstabVinc/nrInsc']],
375
+ ['InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TrabalhoTemporario_EmpresaContratante_EstabelecimentoVinculadoTemporario_TipoInscricao', evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/trabTemporario/ideTomadorServ/ideEstabVinc/tpInsc']]
376
+ # rubocop:enable Layout/LineLength
377
+ ]
378
+ end
379
+ end
380
+
381
+ class ChavesValoresDoLeiauteSimplificado
382
+ include ChavesValores
383
+
384
+ private
385
+
386
+ def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
387
+ [
388
+ # rubocop:disable Layout/LineLength
389
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao', condicao_de_ingresso_do_trabalhador_imigrante],
390
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Uf', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTempDom/uf']],
391
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_TipoLogradouro', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTempDom/tpLograd']],
392
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_NumeroLogradouro', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTempDom/nrLograd']],
393
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_DescricaoLogradouro', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTempDom/dscLograd']],
394
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Complemento', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTempDom/complemento']],
395
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_CodigoMunicipio', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTempDom/codMunic']],
396
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Cep', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTempDom/cep']],
397
+ ['InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoDomestico_Bairro', evento['evtAdmissao/vinculo/infoContrato/localTrabalho/localTempDom/bairro']],
398
+ ['InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TrabalhoTemporario_EmpresaContratante_EstabelecimentoVinculadoTemporario_NumeroInscricao', evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/trabTemporario/ideEstabVinc/nrInsc']],
399
+ ['InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TrabalhoTemporario_EmpresaContratante_EstabelecimentoVinculadoTemporario_TipoInscricao', evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/trabTemporario/ideEstabVinc/tpInsc']]
400
+ # rubocop:enable Layout/LineLength
401
+ ]
402
+ end
403
+
404
+ def condicao_de_ingresso_do_trabalhador_imigrante
405
+ {
406
+ '1' => 4,
407
+ '2' => 5,
408
+ '4' => 10,
409
+ '5' => 11,
410
+ '6' => 12
411
+ }[evento['evtAdmissao/trabalhador/trabImig/condIng']] || evento['evtAdmissao/trabalhador/trabImig/tmpResid']
412
+ end
297
413
  end
298
414
  end
299
415
  end
@@ -0,0 +1,264 @@
1
+ module Teodoro
2
+ module Leiaute
3
+ class ArquivoS2205
4
+ include ArquivoDeEventoProcessadorDeArquivoData
5
+ include ArquivoDeEventoRetificavel
6
+
7
+ def processar
8
+ deletar_arquivos_data_originais if retificacao?
9
+ processar_contratos_de_trabalho
10
+ end
11
+
12
+ private
13
+
14
+ def noh_principal_do_evento
15
+ 'evtAltCadastral'
16
+ end
17
+
18
+ def processar_contratos_de_trabalho
19
+ contratos_de_trabalho.each(&:processar)
20
+ end
21
+
22
+ def contratos_de_trabalho
23
+ (contratos_de_emprego + contratos_de_trabalho_sem_vinculo)
24
+ .map { |classe, contrato| classe.new(empresa: empresa, arquivo_xml: arquivo_xml, contrato: contrato) }
25
+ end
26
+
27
+ def contratos_de_emprego
28
+ empresa.contratos_de_emprego
29
+ .*(cpf_do_trabalhador: cpf_do_trabalhador, data: data_da_alteracao)
30
+ .map { [ContratoDeEmprego, _1] }
31
+ end
32
+
33
+ def contratos_de_trabalho_sem_vinculo
34
+ empresa.contratos_de_trabalho_sem_vinculo
35
+ .*(cpf_do_trabalhador: cpf_do_trabalhador, data: data_da_alteracao)
36
+ .map { [ContratoDeTrabalhoSemVinculo, _1] }
37
+ end
38
+
39
+ def cpf_do_trabalhador
40
+ @cpf_do_trabalhador ||= evento['evtAltCadastral/ideTrabalhador/cpfTrab']
41
+ end
42
+
43
+ def data_da_alteracao
44
+ @data_da_alteracao ||= evento['evtAltCadastral/alteracao/dtAlteracao']
45
+ end
46
+
47
+ module ContratoDeTrabalho # rubocop:disable Metrics/ModuleLength
48
+ include ArquivoDeEventoNaoPeriodico
49
+
50
+ private
51
+
52
+ def initialize(contrato:, **args)
53
+ super(**args)
54
+
55
+ @contrato = contrato
56
+ end
57
+
58
+ attr_reader :contrato
59
+
60
+ def noh_principal_do_evento
61
+ 'evtAltCadastral'
62
+ end
63
+
64
+ def nome_do_arquivo_data
65
+ @nome_do_arquivo_data ||= [
66
+ "TRA[#{cpf_do_trabalhador}]",
67
+ nome_do_arquivo_data_identificacao_do_contrato,
68
+ "-ACA[#{data_da_alteracao.delete('-')}]"
69
+ ].join
70
+ end
71
+
72
+ def cpf_do_trabalhador
73
+ @cpf_do_trabalhador ||= evento['evtAltCadastral/ideTrabalhador/cpfTrab']
74
+ end
75
+
76
+ def data_da_alteracao
77
+ @data_da_alteracao ||= evento['evtAltCadastral/alteracao/dtAlteracao']
78
+ end
79
+
80
+ def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
81
+ [
82
+ # rubocop:disable Layout/LineLength
83
+ ['ESX_CPF', cpf_do_trabalhador],
84
+ ['ESX_MATRICULA', matricula_do_contrato],
85
+ ['ESX_CATEGORIA', categoria_do_trabalhador],
86
+ %w[ESX_SEMVINCULO 0], # FIXME: Tales TC
87
+ ['ESX_DATAADMISSAO', data_de_inicio_do_contrato_de_trabalho],
88
+ ['ESX_DATAALTERACAO', data_da_alteracao],
89
+ ['DataAlteracao', data_da_alteracao],
90
+ ['IdEventoXml'],
91
+ ['NrReciboEventoOriginal'],
92
+ ['RequestVerificationToken'],
93
+ ['SomenteLeitura'],
94
+ ['VisualizarDadosCadastrais'],
95
+ ['UrlRetorno'],
96
+ ['visualizar'],
97
+ ['DescricaoProcEmi', processo_de_emissao_do_evento],
98
+ ['VerProc', recibo['retornoEvento/processamento/versaoAppProcessamento']],
99
+ ['IdEdicaoDependente'],
100
+ ['commandArgument'],
101
+ ['EventoAdmissao_TipoEventoEnviado'],
102
+ ['HiddenCurrentUrl'],
103
+ ['ehCodigoAcesso'],
104
+ ['ExibirTrocarPerfil'],
105
+ ['EventoAdmissao_InfoTrabalhador_Cpf', cpf_do_trabalhador],
106
+ ['EventoAdmissao_InfoTrabalhador_Nome', evento['evtAltCadastral/alteracao/dadosTrabalhador/nmTrab']],
107
+ ['EventoAdmissao_InfoTrabalhador_Nis', evento['evtAltCadastral/alteracao/dadosTrabalhador/nisTrab']],
108
+ ['EventoAdmissao_InfoTrabalhador_Sexo', evento['evtAltCadastral/alteracao/dadosTrabalhador/sexo']],
109
+ ['EventoAdmissao_InfoTrabalhador_Sexo_TEXT'],
110
+ ['EventoAdmissao_InfoTrabalhador_RacaCor', evento['evtAltCadastral/alteracao/dadosTrabalhador/racaCor']],
111
+ ['EventoAdmissao_InfoTrabalhador_RacaCor_TEXT'],
112
+ ['EventoAdmissao_InfoTrabalhador_EstadoCivil', evento['evtAltCadastral/alteracao/dadosTrabalhador/estCiv']],
113
+ ['EventoAdmissao_InfoTrabalhador_EstadoCivil_TEXT'],
114
+ ['EventoAdmissao_InfoTrabalhador_GrauInstrucao', evento['evtAltCadastral/alteracao/dadosTrabalhador/grauInstr']],
115
+ ['EventoAdmissao_InfoTrabalhador_GrauInstrucao_TEXT'],
116
+ ['EventoAdmissao_InfoTrabalhador_PrimeiroEmprego'],
117
+ ['EventoAdmissao_InfoTrabalhador_NomeSocial', evento['evtAltCadastral/alteracao/dadosTrabalhador/nmSoc']],
118
+ ['EventoAdmissao_Aposentadoria_TrabalhadorAposentado', evento['evtAltCadastral/alteracao/dadosTrabalhador/aposentadoria/trabAposent']],
119
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio'],
120
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT'],
121
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento'],
122
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae'],
123
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai'],
124
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento'],
125
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento_TEXT'],
126
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade'],
127
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade_TEXT'],
128
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf'],
129
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf_TEXT'],
130
+ ['EventoAdmissao_EnderecoResidencialBR_Bairro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/bairro']],
131
+ ['EventoAdmissao_EnderecoResidencialBR_Cep', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/cep']],
132
+ ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/codMunic']],
133
+ ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio_TEXT'],
134
+ ['EventoAdmissao_EnderecoResidencialBR_Complemento', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/complemento']],
135
+ ['EventoAdmissao_EnderecoResidencialBR_DescricaoLogradouro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/dscLograd']],
136
+ ['EventoAdmissao_EnderecoResidencialBR_NumeroLogradouro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/nrLograd']],
137
+ ['SemNumeroLogradouroEnderecoBR'],
138
+ ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/tpLograd']],
139
+ ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT'],
140
+ ['EventoAdmissao_EnderecoResidencialBR_Uf', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/uf']],
141
+ ['EventoAdmissao_EnderecoResidencialBR_Uf_TEXT'],
142
+ ['EventoAdmissao_EnderecoResidencialEX_Bairro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/bairro']],
143
+ ['EventoAdmissao_EnderecoResidencialEX_CodigoPostal', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/codPostal']],
144
+ ['EventoAdmissao_EnderecoResidencialEX_Complemento', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/complemento']],
145
+ ['EventoAdmissao_EnderecoResidencialEX_DescricaoLogradouro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/dscLograd']],
146
+ ['EventoAdmissao_EnderecoResidencialEX_NomeCidade', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/nmCid']],
147
+ ['EventoAdmissao_EnderecoResidencialEX_NumeroLogradouro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/nrLograd']],
148
+ ['ResideExterior'],
149
+ ['EventoAdmissao_EnderecoResidencialEX_PaisResidencia', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/paisResid']],
150
+ ['EventoAdmissao_EnderecoResidencialEX_PaisResidencia_TEXT'],
151
+ ['SemNumeroLogradouroEnderecoEX'],
152
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', evento['evtAltCadastral/alteracao/dadosTrabalhador/trabEstrangeiro/casadoBr']],
153
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao', evento['evtAltCadastral/alteracao/dadosTrabalhador/trabEstrangeiro/classTrabEstrang']],
154
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao_TEXT'],
155
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', evento['evtAltCadastral/alteracao/dadosTrabalhador/trabEstrangeiro/dtChegada']],
156
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_FilhosBrasileiros', evento['evtAltCadastral/alteracao/dadosTrabalhador/trabEstrangeiro/filhosBr']],
157
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CNH/categoriaCnh']],
158
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh_TEXT'],
159
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CNH/dtExped']],
160
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataPrimeiraHabilitacao', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CNH/dtPriHab']],
161
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataValidade', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CNH/dtValid']],
162
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_NumeroCnh', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CNH/nrRegCnh']],
163
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CNH/ufCnh']],
164
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh_TEXT'],
165
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_NumeroCtps', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CTPS/nrCtps']],
166
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_SerieCtps', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CTPS/serieCtps']],
167
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CTPS/ufCtps']],
168
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps_TEXT'],
169
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_DataExpedicao', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/OC/dtExped']],
170
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_DataValidade', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/OC/dtValid']],
171
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_NumeroOc', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/OC/nrOc']],
172
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_OrgaoEmissor', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/OC/orgaoEmissor']],
173
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RG/dtExped']],
174
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_NumeroRg', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RG/nrRg']],
175
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_OrgaoEmissor', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RG/orgaoEmissor']],
176
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_DataExpedicao', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RIC/dtExped']],
177
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_NumeroRic', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RIC/nrRic']],
178
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_OrgaoEmissor', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RIC/orgaoEmissor']],
179
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_DataExpedicao', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RNE/dtExped']],
180
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_NumerorRne', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RNE/nrRne']],
181
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_OrgaoEmissor', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RNE/orgaoEmissor']],
182
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaAuditiva', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/defAuditiva']],
183
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaFisica', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/defFisica']],
184
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaIntelectual', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/defIntelectual']],
185
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaMental', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/defMental']],
186
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaVisual', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/defVisual']],
187
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_InfoCota', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/infoCota']],
188
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_Observacao', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/observacao']],
189
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_ReabilitadoOuReadaptado', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/reabReadap']],
190
+ ['EventoAdmissao_Contato_TelefonePrincipal', evento['evtAltCadastral/alteracao/dadosTrabalhador/contato/fonePrinc']],
191
+ ['EventoAdmissao_Contato_EmailPrincipal', evento['evtAltCadastral/alteracao/dadosTrabalhador/contato/emailPrinc']],
192
+ ['EventoAdmissao_Contato_TelefoneAlternativo', evento['evtAltCadastral/alteracao/dadosTrabalhador/contato/foneAlternat']],
193
+ ['EventoAdmissao_Contato_EmailAlternativo', evento['evtAltCadastral/alteracao/dadosTrabalhador/contato/emailAlternat']],
194
+ *evento.*('evtAltCadastral/alteracao/dadosTrabalhador/dependente').map.with_index(1) do |dependente, seq|
195
+ [
196
+ ["EventoAdmissao_Dependente_#{seq}_CPFDependente", dependente['cpfDep']],
197
+ ["EventoAdmissao_Dependente_#{seq}_DataNascimento", dependente['dtNascto']],
198
+ ["EventoAdmissao_Dependente_#{seq}_DataNascimentoFormatada"],
199
+ ["EventoAdmissao_Dependente_#{seq}_DependenteIRRF", dependente['depIRRF']],
200
+ ["EventoAdmissao_Dependente_#{seq}_DependenteSF", dependente['depSF']],
201
+ ["EventoAdmissao_Dependente_#{seq}_IncapacidadeDependente", dependente['incTrab']],
202
+ ["EventoAdmissao_Dependente_#{seq}_NomeDependente", dependente['nmDep']],
203
+ ["EventoAdmissao_Dependente_#{seq}_TipoDependente", dependente['tpDep']]
204
+ ]
205
+ end.sum([])
206
+ # rubocop:enable Layout/LineLength
207
+ ]
208
+ end
209
+ end
210
+
211
+ class ContratoDeEmprego
212
+ include ContratoDeTrabalho
213
+
214
+ private
215
+
216
+ def nome_do_arquivo_data_identificacao_do_contrato
217
+ "[EPG_#{matricula_do_contrato}_#{data_de_admissao.delete('-')}]"
218
+ end
219
+
220
+ def matricula_do_contrato
221
+ contrato.matricula
222
+ end
223
+
224
+ def data_de_admissao
225
+ contrato.data_de_admissao
226
+ end
227
+
228
+ def categoria_do_trabalhador
229
+ contrato.categoria_do_trabalhador
230
+ end
231
+
232
+ def data_de_inicio_do_contrato_de_trabalho
233
+ data_de_admissao
234
+ end
235
+ end
236
+
237
+ class ContratoDeTrabalhoSemVinculo
238
+ include ContratoDeTrabalho
239
+
240
+ private
241
+
242
+ def nome_do_arquivo_data_identificacao_do_contrato
243
+ "[TSV_#{categoria_do_trabalhador}_#{data_de_inicio_do_contrato_de_trabalho_sem_vinculo.delete('-')}]"
244
+ end
245
+
246
+ def categoria_do_trabalhador
247
+ contrato.categoria_do_trabalhador
248
+ end
249
+
250
+ def data_de_inicio_do_contrato_de_trabalho_sem_vinculo
251
+ contrato.data_de_inicio
252
+ end
253
+
254
+ def matricula_do_contrato
255
+ nil
256
+ end
257
+
258
+ def data_de_inicio_do_contrato_de_trabalho
259
+ data_de_inicio_do_contrato_de_trabalho_sem_vinculo
260
+ end
261
+ end
262
+ end
263
+ end
264
+ end