teodoro 0.10.0 → 0.15.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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/lib/teodoro.rb +9 -2
  3. data/lib/teodoro/arquivo_data.rb +19 -22
  4. data/lib/teodoro/arquivo_data/car.rb +34 -0
  5. data/lib/teodoro/arquivo_data/tra_epg_avi.rb +55 -0
  6. data/lib/teodoro/arquivo_de_evento.rb +6 -2
  7. data/lib/teodoro/arquivo_de_evento_de_tabela.rb +52 -19
  8. data/lib/teodoro/arquivo_de_evento_nao_periodico.rb +6 -2
  9. data/lib/teodoro/arquivo_xml.rb +33 -6
  10. data/lib/teodoro/empresa.rb +17 -140
  11. data/lib/teodoro/empresa/arquivos_data.rb +31 -0
  12. data/lib/teodoro/empresa/cargos_gerados.rb +86 -0
  13. data/lib/teodoro/empresa/contratos_de_emprego.rb +59 -0
  14. data/lib/teodoro/empresa/contratos_de_trabalho_sem_vinculo.rb +59 -0
  15. data/lib/teodoro/leiaute/arquivo_s1000.rb +18 -8
  16. data/lib/teodoro/leiaute/arquivo_s1005.rb +5 -5
  17. data/lib/teodoro/leiaute/arquivo_s1010.rb +3 -3
  18. data/lib/teodoro/leiaute/arquivo_s1020.rb +3 -3
  19. data/lib/teodoro/leiaute/arquivo_s1030.rb +19 -23
  20. data/lib/teodoro/leiaute/arquivo_s1040.rb +3 -3
  21. data/lib/teodoro/leiaute/arquivo_s1050.rb +3 -3
  22. data/lib/teodoro/leiaute/arquivo_s1070.rb +4 -4
  23. data/lib/teodoro/leiaute/arquivo_s2190.rb +2 -2
  24. data/lib/teodoro/leiaute/arquivo_s2200.rb +173 -15
  25. data/lib/teodoro/leiaute/arquivo_s2205.rb +42 -42
  26. data/lib/teodoro/leiaute/arquivo_s2206.rb +177 -74
  27. data/lib/teodoro/leiaute/arquivo_s2230.rb +5 -5
  28. data/lib/teodoro/leiaute/arquivo_s2250.rb +14 -34
  29. data/lib/teodoro/leiaute/arquivo_s2299.rb +67 -3
  30. data/lib/teodoro/leiaute/arquivo_s2300.rb +141 -14
  31. data/lib/teodoro/leiaute/arquivo_s2306.rb +85 -6
  32. metadata +8 -3
  33. data/lib/teodoro/leiaute.rb +0 -24
@@ -5,31 +5,6 @@ module Teodoro
5
5
 
6
6
  private
7
7
 
8
- def contratos_de_trabalho
9
- (contratos_de_emprego + contratos_de_trabalho_sem_vinculo)
10
- .map { |classe, contrato| classe.new(contrato) }
11
- end
12
-
13
- def contratos_de_emprego
14
- empresa.contratos_de_emprego
15
- .*(cpf_do_trabalhador: cpf_do_trabalhador, data: data_da_alteracao)
16
- .map { [ContratoDeEmprego, _1] }
17
- end
18
-
19
- def contratos_de_trabalho_sem_vinculo
20
- empresa.contratos_de_trabalho_sem_vinculo
21
- .*(cpf_do_trabalhador: cpf_do_trabalhador, data: data_da_alteracao)
22
- .map { [ContratoDeTrabalhoSemVinculo, _1] }
23
- end
24
-
25
- def cpf_do_trabalhador
26
- @cpf_do_trabalhador ||= evento['ideTrabalhador/cpfTrab']
27
- end
28
-
29
- def data_da_alteracao
30
- @data_da_alteracao ||= evento['alteracao/dtAlteracao']
31
- end
32
-
33
8
  def dados_dos_arquivos_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
34
9
  contratos_de_trabalho.map do |contrato_de_trabalho| # rubocop:disable Metrics/BlockLength
35
10
  Obj.new(
@@ -44,9 +19,9 @@ module Teodoro
44
19
  ['ESX_MATRICULA', contrato_de_trabalho.matricula_do_contrato],
45
20
  ['ESX_CATEGORIA', contrato_de_trabalho.categoria_do_trabalhador],
46
21
  %w[ESX_SEMVINCULO 0], # FIXME: Tales TC
47
- ['ESX_DATAADMISSAO', [contrato_de_trabalho.data_de_inicio, :data]],
48
- ['ESX_DATAALTERACAO', [data_da_alteracao, :data]],
49
- ['DataAlteracao', [data_da_alteracao, :data]],
22
+ ['ESX_DATAADMISSAO', contrato_de_trabalho.data_de_inicio, :data],
23
+ ['ESX_DATAALTERACAO', data_da_alteracao, :data],
24
+ ['DataAlteracao', data_da_alteracao, :data],
50
25
  ['IdEventoXml', id_do_evento],
51
26
  ['NrReciboEventoOriginal', numero_do_recibo],
52
27
  ['RequestVerificationToken'],
@@ -69,16 +44,16 @@ module Teodoro
69
44
  ['EventoAdmissao_InfoTrabalhador_GrauInstrucao', evento['alteracao/dadosTrabalhador/grauInstr']],
70
45
  ['EventoAdmissao_InfoTrabalhador_GrauInstrucao_TEXT'],
71
46
  ['EventoAdmissao_InfoTrabalhador_NomeSocial', evento['alteracao/dadosTrabalhador/nmSoc']],
72
- ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio'],
47
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio', evento['alteracao/dadosTrabalhador/nascimento/codMunic']],
73
48
  ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT'],
74
- ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento', [evento['alteracao/dadosTrabalhador/nascimento/dtNascto'], :data]],
75
- ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae'],
76
- ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai'],
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']],
77
52
  ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento', evento['alteracao/dadosTrabalhador/nascimento/paisNascto']],
78
53
  ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento_TEXT'],
79
- ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade', evento['alteracao/dadosTrabalhador/nascimento/paisNac']],
54
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade', evento["alteracao/dadosTrabalhador/#{'nascimento' unless leiaute_simplificado?}/paisNac"]],
80
55
  ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade_TEXT'],
81
- ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf'],
56
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf', evento['alteracao/dadosTrabalhador/nascimento/uf']],
82
57
  ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf_TEXT'],
83
58
  ['EventoAdmissao_EnderecoResidencialBR_Bairro', evento['alteracao/dadosTrabalhador/endereco/brasil/bairro']],
84
59
  ['EventoAdmissao_EnderecoResidencialBR_Cep', evento['alteracao/dadosTrabalhador/endereco/brasil/cep']],
@@ -95,13 +70,13 @@ module Teodoro
95
70
  ['ResideExterior'],
96
71
  ['SemNumeroLogradouroEnderecoEX'],
97
72
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', evento['alteracao/dadosTrabalhador/trabEstrangeiro/casadoBr']],
98
- ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', [evento['alteracao/dadosTrabalhador/trabEstrangeiro/dtChegada'], :data]],
73
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', evento['alteracao/dadosTrabalhador/trabEstrangeiro/dtChegada'], :data],
99
74
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_FilhosBrasileiros', evento['alteracao/dadosTrabalhador/trabEstrangeiro/filhosBr']],
100
75
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh', evento['alteracao/dadosTrabalhador/documentos/CNH/categoriaCnh']],
101
76
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh_TEXT'],
102
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao', [evento['alteracao/dadosTrabalhador/documentos/CNH/dtExped'], :data]],
103
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataPrimeiraHabilitacao', [evento['alteracao/dadosTrabalhador/documentos/CNH/dtPriHab'], :data]],
104
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataValidade', [evento['alteracao/dadosTrabalhador/documentos/CNH/dtValid'], :data]],
77
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao', evento['alteracao/dadosTrabalhador/documentos/CNH/dtExped'], :data],
78
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataPrimeiraHabilitacao', evento['alteracao/dadosTrabalhador/documentos/CNH/dtPriHab'], :data],
79
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataValidade', evento['alteracao/dadosTrabalhador/documentos/CNH/dtValid'], :data],
105
80
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_NumeroCnh', evento['alteracao/dadosTrabalhador/documentos/CNH/nrRegCnh']],
106
81
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh', evento['alteracao/dadosTrabalhador/documentos/CNH/ufCnh']],
107
82
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh_TEXT'],
@@ -109,10 +84,10 @@ module Teodoro
109
84
  ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_SerieCtps', evento['alteracao/dadosTrabalhador/documentos/CTPS/serieCtps']],
110
85
  ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps', evento['alteracao/dadosTrabalhador/documentos/CTPS/ufCtps']],
111
86
  ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps_TEXT'],
112
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao', [evento['alteracao/dadosTrabalhador/documentos/RG/dtExped'], :data]],
87
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao', evento['alteracao/dadosTrabalhador/documentos/RG/dtExped'], :data],
113
88
  ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_NumeroRg', evento['alteracao/dadosTrabalhador/documentos/RG/nrRg']],
114
89
  ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_OrgaoEmissor', evento['alteracao/dadosTrabalhador/documentos/RG/orgaoEmissor']],
115
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_DataExpedicao', [evento['alteracao/dadosTrabalhador/documentos/RNE/dtExped'], :data]],
90
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_DataExpedicao', evento['alteracao/dadosTrabalhador/documentos/RNE/dtExped'], :data],
116
91
  ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_NumerorRne', evento['alteracao/dadosTrabalhador/documentos/RNE/nrRne']],
117
92
  ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_OrgaoEmissor', evento['alteracao/dadosTrabalhador/documentos/RNE/orgaoEmissor']],
118
93
  ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaAuditiva', evento['alteracao/dadosTrabalhador/infoDeficiencia/defAuditiva']],
@@ -128,8 +103,8 @@ module Teodoro
128
103
  *evento.*('alteracao/dadosTrabalhador/dependente').map.with_index(1) do |dependente, seq|
129
104
  [
130
105
  ["EventoAdmissao_Dependente_#{seq}_CPFDependente", dependente['cpfDep']],
131
- ["EventoAdmissao_Dependente_#{seq}_DataNascimento", [dependente['dtNascto'], :data]],
132
- ["EventoAdmissao_Dependente_#{seq}_DataNascimentoFormatada", [dependente['dtNascto'], :data]],
106
+ ["EventoAdmissao_Dependente_#{seq}_DataNascimento", dependente['dtNascto'], :data],
107
+ ["EventoAdmissao_Dependente_#{seq}_DataNascimentoFormatada", dependente['dtNascto'], :data],
133
108
  ["EventoAdmissao_Dependente_#{seq}_DependenteIRRF", dependente['depIRRF']],
134
109
  ["EventoAdmissao_Dependente_#{seq}_DependenteSF", dependente['depSF']],
135
110
  ["EventoAdmissao_Dependente_#{seq}_IncapacidadeDependente", dependente['incTrab']],
@@ -143,6 +118,31 @@ module Teodoro
143
118
  end
144
119
  end
145
120
 
121
+ def contratos_de_trabalho
122
+ (contratos_de_emprego + contratos_de_trabalho_sem_vinculo)
123
+ .map { |classe, contrato| classe.new(contrato) }
124
+ end
125
+
126
+ def contratos_de_emprego
127
+ empresa.contratos_de_emprego
128
+ .*(cpf_do_trabalhador: cpf_do_trabalhador, data: data_da_alteracao)
129
+ .map { [ContratoDeEmprego, _1] }
130
+ end
131
+
132
+ def contratos_de_trabalho_sem_vinculo
133
+ empresa.contratos_de_trabalho_sem_vinculo
134
+ .*(cpf_do_trabalhador: cpf_do_trabalhador, data: data_da_alteracao)
135
+ .map { [ContratoDeTrabalhoSemVinculo, _1] }
136
+ end
137
+
138
+ def cpf_do_trabalhador
139
+ @cpf_do_trabalhador ||= evento['ideTrabalhador/cpfTrab']
140
+ end
141
+
142
+ def data_da_alteracao
143
+ @data_da_alteracao ||= evento['alteracao/dtAlteracao']
144
+ end
145
+
146
146
  module ContratoDeTrabalho
147
147
  private
148
148
 
@@ -3,9 +3,39 @@ module Teodoro
3
3
  class ArquivoS2206
4
4
  include ArquivoDeEventoNaoPeriodico
5
5
 
6
+ module DadosGerais
7
+ private
8
+
9
+ def cpf_do_trabalhador
10
+ @cpf_do_trabalhador ||= evento['ideVinculo/cpfTrab']
11
+ end
12
+
13
+ def matricula_do_trabalhador
14
+ @matricula_do_trabalhador ||= evento['ideVinculo/matricula']
15
+ end
16
+
17
+ def data_de_admissao
18
+ contrato_de_emprego.data_de_admissao
19
+ end
20
+
21
+ def contrato_de_emprego
22
+ contratos_de_emprego[matricula_do_trabalhador]
23
+ end
24
+
25
+ def contratos_de_emprego
26
+ empresa.contratos_de_emprego
27
+ end
28
+
29
+ def data_da_alteracao
30
+ evento['altContratual/dtAlteracao']
31
+ end
32
+ end
33
+
34
+ include DadosGerais
35
+
6
36
  private
7
37
 
8
- def dados_dos_arquivos_data # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
38
+ def dados_dos_arquivos_data # rubocop:disable Metrics/MethodLength
9
39
  [
10
40
  Obj.new(
11
41
  nome: [
@@ -14,93 +44,166 @@ module Teodoro
14
44
  "[EPG_#{matricula_do_trabalhador}_#{data_de_admissao.delete('-')}]",
15
45
  "-ACO[#{data_da_alteracao.delete('-')}]"
16
46
  ].join,
17
- itens_do_conteudo: [
18
- # rubocop:disable Layout/LineLength
19
- ['ESX_CPF', cpf_do_trabalhador],
20
- ['ESX_MATRICULA', matricula_do_trabalhador],
21
- %w[ESX_SEMVINCULO 0],
22
- ['ESX_DATAADMISSAO', [data_de_admissao, :data]],
23
- ['ESX_DATAALTERACAO', [data_da_alteracao, :data]],
24
- ['cpfTrabalhador', cpf_do_trabalhador],
25
- %w[nomeTrabalhador nomeTrabalhador],
26
- ['IdentificacaoVinculo_Cpf', cpf_do_trabalhador],
27
- ['IdentificacaoVinculo_Matricula', matricula_do_trabalhador],
28
- ['TipoInscricaoEmpregador', tipo_de_inscricao_do_empregador],
29
- ['AlteracaoContratual_DataAlteracao', [data_da_alteracao, :data]],
30
- ['AlteracaoContratual_DataEfeito', [evento['altContratual/dtEf'], :data]],
31
- ['AlteracaoContratual_DescricaoAlteracao', evento['altContratual/dscAlt']],
32
- ['IdentificacaoVinculo_Nis', evento['ideVinculo/nisTrab']],
33
- ['IndicadorRetificacao'],
34
- ['IdEventoXml', id_do_evento],
35
- ['NrReciboEventoOriginal', numero_do_recibo],
36
- ['UrlRetorno'],
37
- ['idContrato'],
38
- ['SomenteLeitura'],
39
- ['IdEvento'],
40
- ['RequestVerificationToken'],
41
- ['IdContratoAlterado'],
42
- ['regTrab'],
43
- ['InformacoesContrato_CodigoCategoria', categoria_do_trabalhador],
44
- ['VinculoAlteracao_TipoRegimePrevidenciario', evento['altContratual/vinculo/tpRegPrev']],
45
- ['dataAdmissao', [data_de_admissao, :data]],
46
- ['InformacoesCeletista_TipoRegimeJornada', evento['altContratual/infoRegimeTrab/infoCeletista/tpRegJor']],
47
- ['InformacoesCeletista_NaturezaAtividade', evento['altContratual/infoRegimeTrab/infoCeletista/natAtividade']],
48
- ['FiltroCargo'],
49
- ['FiltroFuncao'],
50
- ['HorarioTela_Dia'],
51
- ['dataNomeacao'],
52
- ['DescricaoProcEmi', processo_de_emissao_do_evento],
53
- ['VerProc', recibo['processamento/versaoAppProcessamento']],
54
- ['FiltroEstabelecimentoLocalTrabalho'],
55
- ['NomeEstabelecimentoLocalTrabalho'],
56
- ['CodigoCBO'],
57
- ['InformacoesContrato_Remuneracao_UnidadeSalarioFixo', evento['altContratual/infoContrato/remuneracao/undSalFixo']],
58
- ['InformacoesContrato_TipoContrato', evento['altContratual/infoContrato/duracao/tpContr']],
59
- ['CodigoCNAE'],
60
- *evento.*('altContratual/infoContrato/horContratual/horario').map.with_index(1) do |horario, seq|
61
- [
62
- ["Horarios_#{seq}_CodigoHorarioContratual", horario['codHorContrat']],
63
- ["Horarios_#{seq}_Dia", horario['dia']]
64
- ]
65
- end.sum([]),
66
- *evento.*('altContratual/infoContrato/filiacaoSindical').map.with_index(1) do |filiacao, seq|
67
- [
68
- ["InfoVinculo_InfoContrato_FiliacaoSindical_#{seq}_CnpjSindicatoTrabalhador", filiacao['cnpjSindTrab']]
69
- ]
70
- end.sum([]),
71
- ['InformacoesContrato_Remuneracao_ValorSalarioFixo', evento['altContratual/infoContrato/remuneracao/vrSalFx']]
72
- # rubocop:enable Layout/LineLength
73
- ]
47
+ itens_do_conteudo: itens_do_conteudo
74
48
  )
75
49
  ]
76
50
  end
77
51
 
78
- def cpf_do_trabalhador
79
- @cpf_do_trabalhador ||= evento['ideVinculo/cpfTrab']
52
+ def itens_do_conteudo
53
+ leiaute.itens_do_conteudo
80
54
  end
81
55
 
82
- def matricula_do_trabalhador
83
- @matricula_do_trabalhador ||= evento['ideVinculo/matricula']
56
+ def leiaute
57
+ (leiaute_simplificado? ? LeiauteSimplificado : Leiaute2).new(empresa: empresa, arquivo_xml: arquivo_xml)
84
58
  end
85
59
 
86
- def data_de_admissao
87
- contrato_de_emprego.data_de_admissao
60
+ module Leiaute
61
+ include ArquivoDeEvento
62
+ include DadosGerais
88
63
  end
89
64
 
90
- def contrato_de_emprego
91
- contratos_de_emprego[matricula_do_trabalhador]
92
- end
65
+ class Leiaute2
66
+ include Leiaute
93
67
 
94
- def contratos_de_emprego
95
- empresa.contratos_de_emprego
68
+ def itens_do_conteudo # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
69
+ [
70
+ # rubocop:disable Layout/LineLength
71
+ ['ESX_CPF', cpf_do_trabalhador],
72
+ ['ESX_MATRICULA', matricula_do_trabalhador],
73
+ %w[ESX_SEMVINCULO 0],
74
+ ['ESX_DATAADMISSAO', data_de_admissao, :data],
75
+ ['ESX_DATAALTERACAO', data_da_alteracao, :data],
76
+ ['cpfTrabalhador', cpf_do_trabalhador],
77
+ %w[nomeTrabalhador nomeTrabalhador],
78
+ ['IdentificacaoVinculo_Cpf', cpf_do_trabalhador],
79
+ ['IdentificacaoVinculo_Matricula', matricula_do_trabalhador],
80
+ ['TipoInscricaoEmpregador', tipo_de_inscricao_do_empregador],
81
+ ['AlteracaoContratual_DataAlteracao', data_da_alteracao, :data],
82
+ ['AlteracaoContratual_DataEfeito', evento['altContratual/dtEf'], :data],
83
+ ['AlteracaoContratual_DescricaoAlteracao', evento['altContratual/dscAlt']],
84
+ ['IdentificacaoVinculo_Nis', evento['ideVinculo/nisTrab']],
85
+ ['IndicadorRetificacao'],
86
+ ['IdEventoXml', id_do_evento],
87
+ ['NrReciboEventoOriginal', numero_do_recibo],
88
+ ['UrlRetorno'],
89
+ ['idContrato'],
90
+ ['SomenteLeitura'],
91
+ ['IdEvento'],
92
+ ['RequestVerificationToken'],
93
+ ['IdContratoAlterado'],
94
+ ['regTrab'],
95
+ ['InformacoesContrato_CodigoCategoria', evento['altContratual/infoContrato/codCateg']],
96
+ ['VinculoAlteracao_TipoRegimePrevidenciario', evento['altContratual/vinculo/tpRegPrev']],
97
+ ['dataAdmissao', data_de_admissao, :data],
98
+ ['InformacoesCeletista_TipoRegimeJornada', evento['altContratual/infoRegimeTrab/infoCeletista/tpRegJor']],
99
+ ['InformacoesCeletista_NaturezaAtividade', evento['altContratual/infoRegimeTrab/infoCeletista/natAtividade']],
100
+ ['FiltroCargo'],
101
+ ['FiltroFuncao'],
102
+ ['HorarioTela_Dia'],
103
+ ['dataNomeacao'],
104
+ ['DescricaoProcEmi', processo_de_emissao_do_evento],
105
+ ['VerProc', recibo['processamento/versaoAppProcessamento']],
106
+ ['FiltroEstabelecimentoLocalTrabalho'],
107
+ ['NomeEstabelecimentoLocalTrabalho'],
108
+ ['CodigoCBO'],
109
+ ['InformacoesContrato_Remuneracao_UnidadeSalarioFixo', evento['altContratual/infoContrato/remuneracao/undSalFixo']],
110
+ ['InformacoesContrato_TipoContrato', evento['altContratual/infoContrato/duracao/tpContr']],
111
+ ['CodigoCNAE'],
112
+ *evento.*('altContratual/infoContrato/horContratual/horario').map.with_index(1) do |horario, seq|
113
+ [
114
+ ["Horarios_#{seq}_CodigoHorarioContratual", horario['codHorContrat']],
115
+ ["Horarios_#{seq}_Dia", horario['dia']]
116
+ ]
117
+ end.sum([]),
118
+ *evento.*('altContratual/infoContrato/filiacaoSindical').map.with_index(1) do |filiacao, seq|
119
+ [
120
+ ["InfoVinculo_InfoContrato_FiliacaoSindical_#{seq}_CnpjSindicatoTrabalhador", filiacao['cnpjSindTrab']]
121
+ ]
122
+ end.sum([]),
123
+ ['InformacoesContrato_Remuneracao_ValorSalarioFixo', evento['altContratual/infoContrato/remuneracao/vrSalFx'], :decimal],
124
+ ['InformacoesContrato_LocalTrabalho_LocalTrabalhoGeral_TipoInscricao', evento['altContratual/infoContrato/localTrabalho/localTrabGeral/tpInsc']],
125
+ ['InformacoesContrato_LocalTrabalho_LocalTrabalhoGeral_NumeroInscricao', evento['altContratual/infoContrato/localTrabalho/localTrabGeral/nrInsc']],
126
+ ['InformacoesContrato_HorarioContratual_TipoJornada', evento['altContratual/infoContrato/horContratual/tpJornada']],
127
+ ['InformacoesContrato_HorarioContratual_JornadaTempoParcial', evento['altContratual/infoContrato/horContratual/tmpParc']],
128
+ ['InformacoesContrato_HorarioContratual_QuantidadedHorasSemanal', evento['altContratual/infoContrato/horContratual/qtdHrsSem'], :decimal],
129
+ ['InformacoesContrato_HorarioContratual_DescricaoTipoJornada', evento['altContratual/infoContrato/horContratual/dscTpJorn']],
130
+ ['InformacoesContrato_CodigoCargo', evento['altContratual/infoContrato/codCargo']],
131
+ ['InformacoesContrato_DataTermino', evento['altContratual/infoContrato/duracao/dtTerm'], :data]
132
+ # rubocop:enable Layout/LineLength
133
+ ]
134
+ end
96
135
  end
97
136
 
98
- def data_da_alteracao
99
- evento['altContratual/dtAlteracao']
100
- end
137
+ class LeiauteSimplificado
138
+ include Leiaute
139
+
140
+ def itens_do_conteudo # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
141
+ [
142
+ # rubocop:disable Layout/LineLength
143
+ ['ESX_CPF', cpf_do_trabalhador],
144
+ ['ESX_MATRICULA', matricula_do_trabalhador],
145
+ %w[ESX_SEMVINCULO 0],
146
+ ['ESX_DATAADMISSAO', data_de_admissao, :data],
147
+ ['ESX_DATAALTERACAO', data_da_alteracao, :data],
148
+ ['cpfTrabalhador', cpf_do_trabalhador],
149
+ %w[nomeTrabalhador nomeTrabalhador],
150
+ ['IdentificacaoVinculo_Cpf', cpf_do_trabalhador],
151
+ ['IdentificacaoVinculo_Matricula', matricula_do_trabalhador],
152
+ ['TipoInscricaoEmpregador', tipo_de_inscricao_do_empregador],
153
+ ['AlteracaoContratual_DataAlteracao', data_da_alteracao, :data],
154
+ ['AlteracaoContratual_DataEfeito', evento['altContratual/dtEf'], :data],
155
+ ['AlteracaoContratual_DescricaoAlteracao', evento['altContratual/dscAlt']],
156
+ ['IdentificacaoVinculo_Nis', evento['ideVinculo/nisTrab']],
157
+ ['IndicadorRetificacao'],
158
+ ['IdEventoXml', id_do_evento],
159
+ ['NrReciboEventoOriginal', numero_do_recibo],
160
+ ['UrlRetorno'],
161
+ ['idContrato'],
162
+ ['SomenteLeitura'],
163
+ ['IdEvento'],
164
+ ['RequestVerificationToken'],
165
+ ['IdContratoAlterado'],
166
+ ['regTrab'],
167
+ ['InformacoesContrato_CodigoCategoria', evento['altContratual/vinculo/infoContrato/codCateg']],
168
+ ['VinculoAlteracao_TipoRegimePrevidenciario', evento['altContratual/vinculo/tpRegPrev']],
169
+ ['dataAdmissao', data_de_admissao, :data],
170
+ ['InformacoesCeletista_TipoRegimeJornada', evento['altContratual/vinculo/infoRegimeTrab/infoCeletista/tpRegJor']],
171
+ ['InformacoesCeletista_NaturezaAtividade', evento['altContratual/vinculo/infoRegimeTrab/infoCeletista/natAtividade']],
172
+ ['FiltroCargo'],
173
+ ['FiltroFuncao'],
174
+ ['HorarioTela_Dia'],
175
+ ['dataNomeacao'],
176
+ ['DescricaoProcEmi', processo_de_emissao_do_evento],
177
+ ['VerProc', recibo['processamento/versaoAppProcessamento']],
178
+ ['FiltroEstabelecimentoLocalTrabalho'],
179
+ ['NomeEstabelecimentoLocalTrabalho'],
180
+ ['CodigoCBO'],
181
+ ['InformacoesContrato_Remuneracao_UnidadeSalarioFixo', evento['altContratual/vinculo/infoContrato/remuneracao/undSalFixo']],
182
+ ['InformacoesContrato_TipoContrato', evento['altContratual/vinculo/infoContrato/duracao/tpContr']],
183
+ ['CodigoCNAE'],
184
+ ['InformacoesContrato_Remuneracao_ValorSalarioFixo', evento['altContratual/vinculo/infoContrato/remuneracao/vrSalFx'], :decimal],
185
+ ['InformacoesContrato_LocalTrabalho_LocalTrabalhoGeral_TipoInscricao', evento['altContratual/vinculo/infoContrato/localTrabalho/localTrabGeral/tpInsc']],
186
+ ['InformacoesContrato_LocalTrabalho_LocalTrabalhoGeral_NumeroInscricao', evento['altContratual/vinculo/infoContrato/localTrabalho/localTrabGeral/nrInsc']],
187
+ ['InformacoesContrato_HorarioContratual_TipoJornada', evento['altContratual/vinculo/infoContrato/horContratual/tpJornada'].then { %w[2 3].include?(_1) ? _1 : 9 }],
188
+ ['InformacoesContrato_HorarioContratual_JornadaTempoParcial', evento['altContratual/vinculo/infoContrato/horContratual/tmpParc']],
189
+ ['InformacoesContrato_HorarioContratual_QuantidadedHorasSemanal', evento['altContratual/vinculo/infoContrato/horContratual/qtdHrsSem'], :decimal],
190
+ ['InformacoesContrato_HorarioContratual_DescricaoTipoJornada', evento['altContratual/vinculo/infoContrato/horContratual/dscJorn']],
191
+ ['InformacoesContrato_CodigoCargo', codigo_do_cargo],
192
+ ['InformacoesContrato_DataTermino', evento['altContratual/vinculo/infoContrato/duracao/dtTerm'], :data]
193
+ # rubocop:enable Layout/LineLength
194
+ ]
195
+ end
196
+
197
+ def codigo_do_cargo
198
+ cargo&.codigo
199
+ end
101
200
 
102
- def categoria_do_trabalhador
103
- @categoria_do_trabalhador ||= evento['altContratual/infoContrato/codCateg']
201
+ def cargo
202
+ empresa.cargos_gerados[
203
+ nome: evento['altContratual/vinculo/infoContrato/nmCargo'],
204
+ cbo: evento['altContratual/vinculo/infoContrato/CBOCargo']
205
+ ]
206
+ end
104
207
  end
105
208
  end
106
209
  end
@@ -119,10 +119,10 @@ module Teodoro
119
119
  ['ESX_MATRICULA', matricula_do_trabalhador],
120
120
  ['ESX_DATAADMISSAO'],
121
121
  %w[ESX_SEMVINCULO 0],
122
- ['ESX_INICIO', [data_de_inicio_do_afastamento, :data_aaaammdd]],
123
- (['ESX_TERMINO', [data_de_termino_do_afastamento, :data_aaaammdd]] if termino_do_afastamento?),
124
- ['IniAfastamento_DataInicioAfastamento', ([data_de_inicio_do_afastamento, :data] if inicio_do_afastamento?)],
125
- (['FimAfastamento_DataTerminoAfastamento', [data_de_termino_do_afastamento, :data]] if termino_do_afastamento?),
122
+ ['ESX_INICIO', data_de_inicio_do_afastamento, :data_aaaammdd],
123
+ (['ESX_TERMINO', data_de_termino_do_afastamento, :data_aaaammdd] if termino_do_afastamento?),
124
+ ['IniAfastamento_DataInicioAfastamento', (data_de_inicio_do_afastamento if inicio_do_afastamento?), :data],
125
+ (['FimAfastamento_DataTerminoAfastamento', data_de_termino_do_afastamento, :data] if termino_do_afastamento?),
126
126
  ['IniAfastamento_CodMotivoAfastamento', codigo_do_motivo_de_afastamento],
127
127
  ['IniAfastamento_CodMotivoAfastamento_TEXT'],
128
128
  ['IniAfastamento_InfoMesmoMotivo', evento['infoAfastamento/iniAfastamento/infoMesmoMtv']],
@@ -132,7 +132,7 @@ module Teodoro
132
132
  ['IdEventoXml', id_do_evento],
133
133
  ['NrReciboEventoOriginal', numero_do_recibo],
134
134
  ['IndicadorRetificacao', evento['ideEvento/indRetif']],
135
- ['DataTerminoAfastamentoInformada', [termino_do_afastamento?, :bool]],
135
+ ['DataTerminoAfastamentoInformada', termino_do_afastamento?, :bool],
136
136
  ['ContratoSemVinculo'],
137
137
  ['CodMotivoAfastamentoRetif'],
138
138
  ['TipoEventoCadastro'],
@@ -7,44 +7,24 @@ module Teodoro
7
7
 
8
8
  def dados_dos_arquivos_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
9
9
  [
10
- Obj.new(
11
- nome: "TRA[#{cpf_do_trabalhador}][EPG_#{matricula_do_trabalhador}_#{data_de_admissao.delete('-')}]-AVI",
12
- itens_do_conteudo: [
13
- # rubocop:disable Layout/LineLength
14
- ['ESX_CPF', cpf_do_trabalhador],
15
- ['ESX_MATRICULA', matricula_do_trabalhador],
16
- %w[ESX_SEMVINCULO 0],
17
- ['ESX_DATAADMISSAO', [data_de_admissao, :data]],
18
- ['OperacaoAvisoPrevio'],
19
- ['MostrarCancelamento'],
20
- ['MostrarAvisoPrevio'],
21
- ['IdContrato'],
22
- ['IdCancelamentoAvisoPrevio'],
23
- ['BloquearCodigo'],
24
- ['BloquearAntigoPeriodoValidade'],
25
- ['IdeVinculo_Cpf'],
26
- ['NomeTrabalhador'],
27
- ['IdeVinculo_Matricula', matricula_do_trabalhador],
28
- ['InfoAvisoPrevio_DetalhamentoAvisoPrevio_TipoAvisoPrevio', evento['infoAvPrevio/detAvPrevio/tpAvPrevio']],
29
- ['InfoAvisoPrevio_DetalhamentoAvisoPrevio_TipoAvisoPrevio_TEXT'],
30
- ['InfoAvisoPrevio_DetalhamentoAvisoPrevio_DataAvisoPrevio', [evento['infoAvPrevio/detAvPrevio/dtAvPrv'], :data]],
31
- ['InfoAvisoPrevio_DetalhamentoAvisoPrevio_DataPrevistaDesligamento', [evento['infoAvPrevio/detAvPrevio/dtPrevDeslig'], :data]],
32
- ['InfoAvisoPrevio_DetalhamentoAvisoPrevio_Observacao', evento['infoAvPrevio/detAvPrevio/observacao']],
33
- ['IdEventoXml', id_do_evento],
34
- ['NrReciboEventoOriginal', numero_do_recibo],
35
- ['RequestVerificationToken'],
36
- ['DescricaoProcEmi', processo_de_emissao_do_evento],
37
- ['VerProc', recibo['processamento/versaoAppProcessamento']]
38
- # rubocop:enable Layout/LineLength
39
- ]
10
+ ArquivoData::TRA_EPG_AVI.new(
11
+ Obj.new(
12
+ cpf_do_trabalhador: evento['ideVinculo/cpfTrab'],
13
+ matricula_do_trabalhador: matricula_do_trabalhador,
14
+ data_de_admissao: data_de_admissao,
15
+ tipo_do_aviso_previo: evento['infoAvPrevio/detAvPrevio/tpAvPrevio'],
16
+ data_do_aviso_previo: evento['infoAvPrevio/detAvPrevio/dtAvPrv'],
17
+ data_de_previsao_do_desligamento: evento['infoAvPrevio/detAvPrevio/dtPrevDeslig'],
18
+ observacao: evento['infoAvPrevio/detAvPrevio/observacao'],
19
+ id_do_evento: id_do_evento,
20
+ numero_do_recibo: numero_do_recibo,
21
+ processo_de_emissao_do_evento: processo_de_emissao_do_evento,
22
+ versao_do_aplicativo_de_processamento_do_evento: versao_do_aplicativo_de_processamento_do_evento
23
+ )
40
24
  )
41
25
  ]
42
26
  end
43
27
 
44
- def cpf_do_trabalhador
45
- @cpf_do_trabalhador ||= evento['ideVinculo/cpfTrab']
46
- end
47
-
48
28
  def matricula_do_trabalhador
49
29
  @matricula_do_trabalhador ||= evento['ideVinculo/matricula']
50
30
  end