teodoro 0.12.0 → 0.17.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.
@@ -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(
@@ -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
49
  ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento', evento['alteracao/dadosTrabalhador/nascimento/dtNascto'], :data],
75
- ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae'],
76
- ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai'],
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']],
@@ -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,101 +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'], :decimal],
72
- ['InformacoesContrato_LocalTrabalho_LocalTrabalhoGeral_TipoInscricao', evento['altContratual/infoContrato/localTrabalho/localTrabGeral/tpInsc']],
73
- ['InformacoesContrato_LocalTrabalho_LocalTrabalhoGeral_NumeroInscricao', evento['altContratual/infoContrato/localTrabalho/localTrabGeral/nrInsc']],
74
- ['InformacoesContrato_HorarioContratual_TipoJornada', evento['altContratual/infoContrato/horContratual/tpJornada']],
75
- ['InformacoesContrato_HorarioContratual_JornadaTempoParcial', evento['altContratual/infoContrato/horContratual/tmpParc']],
76
- ['InformacoesContrato_HorarioContratual_QuantidadedHorasSemanal', evento['altContratual/infoContrato/horContratual/qtdHrsSem'], :decimal],
77
- ['InformacoesContrato_HorarioContratual_DescricaoTipoJornada', evento['altContratual/infoContrato/horContratual/dscTpJorn']],
78
- ['InformacoesContrato_CodigoCargo', evento['altContratual/infoContrato/codCargo']],
79
- ['InformacoesContrato_DataTermino', evento['altContratual/infoContrato/duracao/dtTerm'], :data]
80
- # rubocop:enable Layout/LineLength
81
- ]
47
+ itens_do_conteudo: itens_do_conteudo
82
48
  )
83
49
  ]
84
50
  end
85
51
 
86
- def cpf_do_trabalhador
87
- @cpf_do_trabalhador ||= evento['ideVinculo/cpfTrab']
52
+ def itens_do_conteudo
53
+ leiaute.itens_do_conteudo
88
54
  end
89
55
 
90
- def matricula_do_trabalhador
91
- @matricula_do_trabalhador ||= evento['ideVinculo/matricula']
56
+ def leiaute
57
+ (leiaute_simplificado? ? LeiauteSimplificado : Leiaute2).new(empresa: empresa, arquivo_xml: arquivo_xml)
92
58
  end
93
59
 
94
- def data_de_admissao
95
- contrato_de_emprego.data_de_admissao
60
+ module Leiaute
61
+ include ArquivoDeEvento
62
+ include DadosGerais
96
63
  end
97
64
 
98
- def contrato_de_emprego
99
- contratos_de_emprego[matricula_do_trabalhador]
100
- end
65
+ class Leiaute2
66
+ include Leiaute
101
67
 
102
- def contratos_de_emprego
103
- 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
104
135
  end
105
136
 
106
- def data_da_alteracao
107
- evento['altContratual/dtAlteracao']
108
- 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
109
200
 
110
- def categoria_do_trabalhador
111
- @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
112
207
  end
113
208
  end
114
209
  end
@@ -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
@@ -10,6 +10,7 @@ module Teodoro
10
10
 
11
11
  registrar_desligamento
12
12
  avisar_que_tem_mais_de_um_demonstrativo if mais_de_um_demontrativo?
13
+ criar_arquivo_data_do_aviso_previo if criar_arquivo_data_do_aviso_previo?
13
14
  end
14
15
 
15
16
  def registrar_desligamento
@@ -53,7 +54,7 @@ module Teodoro
53
54
  ['ESX_DATADESLIGAMENTO', data_de_desligamento, :data],
54
55
  ['ESX_INFOWEB_RESCISAO_IDEDMDEV', identificador_do_demonstrativo],
55
56
  ['ESX_INFOWEB_RESCISAO_RECIBO', numero_do_recibo],
56
- ['ESX_INFOWEB_RESCISAO_MOTIVO', evento['infoDeslig/mtvDeslig']],
57
+ ['ESX_INFOWEB_RESCISAO_MOTIVO', motivo_do_desligamento],
57
58
  ['ESX_INFOWEB_RESCISAO_MOTIVO_TEXT'],
58
59
  ['IdEventoXml'],
59
60
  ['NrReciboEventoOriginal'],
@@ -210,9 +211,72 @@ module Teodoro
210
211
  @identificadores_de_demonstrativo ||= evento.*('infoDeslig/verbasResc/dmDev').map { _1['ideDmDev'] }
211
212
  end
212
213
 
214
+ def motivo_do_desligamento
215
+ @motivo_do_desligamento ||= evento['infoDeslig/mtvDeslig']
216
+ end
217
+
213
218
  def categoria_do_trabalhador
214
219
  contrato_de_emprego.categoria_do_trabalhador
215
220
  end
221
+
222
+ def criar_arquivo_data_do_aviso_previo?
223
+ leiaute_simplificado? && aviso_previo?
224
+ end
225
+
226
+ def aviso_previo?
227
+ data_do_aviso_previo
228
+ end
229
+
230
+ def data_do_aviso_previo
231
+ @data_do_aviso_previo ||= evento['infoDeslig/dvAvPrev']
232
+ end
233
+
234
+ def criar_arquivo_data_do_aviso_previo
235
+ arquivo_data_do_aviso_previo.criar
236
+ end
237
+
238
+ def arquivo_data_do_aviso_previo
239
+ ArquivoData.new(
240
+ diretorio: empresa.destino_dos_arquivos_data,
241
+ nome: dados_do_arquivo_data_do_aviso_previo.nome,
242
+ itens_do_conteudo: dados_do_arquivo_data_do_aviso_previo.itens_do_conteudo
243
+ )
244
+ end
245
+
246
+ def dados_do_arquivo_data_do_aviso_previo # rubocop:disable Metrics/MethodLength
247
+ @dados_do_arquivo_data_do_aviso_previo ||= ArquivoData::TRA_EPG_AVI.new(
248
+ Obj.new(
249
+ cpf_do_trabalhador: cpf_do_trabalhador,
250
+ matricula_do_trabalhador: matricula_do_trabalhador,
251
+ data_de_admissao: data_de_admissao,
252
+ tipo_do_aviso_previo: tipo_do_aviso_previo,
253
+ data_do_aviso_previo: data_do_aviso_previo,
254
+ data_de_previsao_do_desligamento: data_de_desligamento,
255
+ observacao: nil,
256
+ id_do_evento: nil,
257
+ numero_do_recibo: nil,
258
+ processo_de_emissao_do_evento: nil,
259
+ versao_do_aplicativo_de_processamento_do_evento: nil
260
+ )
261
+ )
262
+ end
263
+
264
+ def tipo_do_aviso_previo
265
+ {
266
+ 1 => por_iniciativa_do_empregador? && duracao_do_aviso_previo >= 30,
267
+ 2 => por_iniciativa_do_empregador? && duracao_do_aviso_previo < 30,
268
+ 4 => %w[04 07 08 09].include?(motivo_do_desligamento),
269
+ 6 => motivo_do_desligamento == '33'
270
+ }.find { _2 }&.first
271
+ end
272
+
273
+ def por_iniciativa_do_empregador?
274
+ @por_iniciativa_do_empregador ||= %w[01 02 03 14 23 24].include?(motivo_do_desligamento)
275
+ end
276
+
277
+ def duracao_do_aviso_previo
278
+ @duracao_do_aviso_previo ||= Date.parse(data_de_desligamento) - Date.parse(data_do_aviso_previo)
279
+ end
216
280
  end
217
281
  end
218
282
  end