teodoro 0.10.1 → 0.15.1

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 +6 -0
  3. data/lib/teodoro/arquivo_data.rb +21 -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 +4 -0
  7. data/lib/teodoro/arquivo_de_evento_de_tabela.rb +49 -19
  8. data/lib/teodoro/arquivo_de_evento_nao_periodico.rb +1 -1
  9. data/lib/teodoro/arquivo_xml.rb +30 -3
  10. data/lib/teodoro/empresa.rb +13 -138
  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
@@ -1,7 +1,7 @@
1
1
  module Teodoro
2
2
  module Leiaute
3
3
  class ArquivoS1050
4
- include ArquivoDeEventoDeTabela
4
+ include ArquivoDeEventoDeTabela::DescritorDeArquivoData
5
5
 
6
6
  private
7
7
 
@@ -28,8 +28,8 @@ module Teodoro
28
28
  ['BloquearCodigo'],
29
29
  ['BloquearAntigoPeriodoValidade'],
30
30
  ['CodigoHorarioContratual', codigo_do_horario],
31
- ['InicioValidade', [inicio_da_validade, :mes_ano]],
32
- ['FimValidade', [fim_da_validade, :mes_ano]],
31
+ ['InicioValidade', inicio_da_validade, :mes_ano],
32
+ ['FimValidade', fim_da_validade, :mes_ano],
33
33
  ['DadosHorario_HoraEntrada', evento['infoHorContratual/*/dadosHorContratual/hrEntr']],
34
34
  ['DadosHorario_HoraSaida', evento['infoHorContratual/*/dadosHorContratual/hrSaida']],
35
35
  ['DadosHorario_DuracaoJornada', evento['infoHorContratual/*/dadosHorContratual/durJornada'].to_i],
@@ -1,7 +1,7 @@
1
1
  module Teodoro
2
2
  module Leiaute
3
3
  class ArquivoS1070
4
- include ArquivoDeEventoDeTabela
4
+ include ArquivoDeEventoDeTabela::DescritorDeArquivoData
5
5
 
6
6
  private
7
7
 
@@ -30,8 +30,8 @@ module Teodoro
30
30
  ['TipoProcesso', evento['infoProcesso/*/ideProcesso/tpProc']],
31
31
  ['NumeroProcesso', numero_do_processo],
32
32
  ['tipoProcessoAnterior'],
33
- ['InicioValidade', [inicio_da_validade, :mes_ano]],
34
- ['FimValidade', [fim_da_validade, :mes_ano]],
33
+ ['InicioValidade', inicio_da_validade, :mes_ano],
34
+ ['FimValidade', fim_da_validade, :mes_ano],
35
35
  ['IndicativoAutoria', evento['infoProcesso/*/dadosProc/indAutoria']],
36
36
  ['IndicativoMateria', evento['infoProcesso/*/dadosProc/indMatProc']],
37
37
  ['Observacao', evento['infoProcesso/*/dadosProc/observacao']],
@@ -58,7 +58,7 @@ module Teodoro
58
58
  [
59
59
  ["ListaInformacoesSuspensao_#{seq}_CodigoIndicativoSuspensao", suspensao['codSusp']],
60
60
  ["ListaInformacoesSuspensao_#{seq}_IndicativoSuspensao", suspensao['indSusp']],
61
- ["ListaInformacoesSuspensao_#{seq}_DataDecisao", [suspensao['dtDecisao'], :data]],
61
+ ["ListaInformacoesSuspensao_#{seq}_DataDecisao", suspensao['dtDecisao'], :data],
62
62
  ["ListaInformacoesSuspensao_#{seq}_IndicativoDeposito", suspensao['indDeposito']]
63
63
  ]
64
64
  end.sum([])
@@ -13,8 +13,8 @@ module Teodoro
13
13
  ['NrRecibo', recibo['recibo/nrRecibo']],
14
14
  ['CPF', evento['infoRegPrelim/cpfTrab']],
15
15
  ['Nome'],
16
- ['DataNascimento', [evento['infoRegPrelim/dtNascto'], :data]],
17
- ['DataAdmissao', [evento['infoRegPrelim/dtAdm'], :data]],
16
+ ['DataNascimento', evento['infoRegPrelim/dtNascto'], :data],
17
+ ['DataAdmissao', evento['infoRegPrelim/dtAdm'], :data],
18
18
  ['IdEvento']
19
19
  ]
20
20
  )
@@ -61,7 +61,7 @@ module Teodoro
61
61
  ['ESX_MATRICULA', matricula_do_trabalhador],
62
62
  ['ESX_CATEGORIA', categoria_do_trabalhador],
63
63
  %w[ESX_SEMVINCULO 0],
64
- ['ESX_DATAADMISSAO', [data_de_admissao, :data]],
64
+ ['ESX_DATAADMISSAO', data_de_admissao, :data],
65
65
  ['IdEventoXml', id_do_evento],
66
66
  ['NrReciboEventoOriginal'],
67
67
  ['EventoAdmissao_TipoEventoEnviado'],
@@ -96,7 +96,7 @@ module Teodoro
96
96
  ['EventoAdmissao_InfoTrabalhador_NomeSocial', evento['trabalhador/nmSoc']],
97
97
  ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio', evento['trabalhador/nascimento/codMunic']],
98
98
  ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT'],
99
- ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento', [evento['trabalhador/nascimento/dtNascto'], :data]],
99
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento', evento['trabalhador/nascimento/dtNascto'], :data],
100
100
  ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae', evento['trabalhador/nascimento/nmMae']],
101
101
  ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai', evento['trabalhador/nascimento/nmPai']],
102
102
  ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento', evento['trabalhador/nascimento/paisNascto']],
@@ -117,16 +117,17 @@ module Teodoro
117
117
  ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT'],
118
118
  ['EventoAdmissao_EnderecoResidencialBR_Uf', evento['trabalhador/endereco/brasil/uf']],
119
119
  ['EventoAdmissao_EnderecoResidencialBR_Uf_TEXT'],
120
- ['ResideExterior', [evento['trabalhador/endereco/exterior'], :bool]],
120
+ ['ResideExterior', evento['trabalhador/endereco/exterior'], :bool],
121
121
  ['SemNumeroLogradouroEnderecoEX'],
122
122
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', evento['trabalhador/trabEstrangeiro/casadoBr']],
123
- ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', [evento['trabalhador/trabEstrangeiro/dtChegada'], :data]],
123
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', evento['trabalhador/trabEstrangeiro/dtChegada'], :data],
124
124
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_FilhosBrasileiros', evento['trabalhador/trabEstrangeiro/filhosBr']],
125
+ de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao'],
125
126
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh', evento['trabalhador/documentos/CNH/categoriaCnh']],
126
127
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh_TEXT'],
127
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao', [evento['trabalhador/documentos/CNH/dtExped'], :data]],
128
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataPrimeiraHabilitacao', [evento['trabalhador/documentos/CNH/dtPriHab'], :data]],
129
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataValidade', [evento['trabalhador/documentos/CNH/dtValid'], :data]],
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],
130
131
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_NumeroCnh', evento['trabalhador/documentos/CNH/nrRegCnh']],
131
132
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh', evento['trabalhador/documentos/CNH/ufCnh']],
132
133
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh_TEXT'],
@@ -137,13 +138,13 @@ module Teodoro
137
138
  ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_DataExpedicao', evento['trabalhador/documentos/OC/dtExped']],
138
139
  ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_NumeroOc', evento['trabalhador/documentos/OC/nrOc']],
139
140
  ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_OrgaoEmissor', evento['trabalhador/documentos/OC/orgaoEmissor']],
140
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao', [evento['trabalhador/documentos/RG/dtExped'], :data]],
141
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao', evento['trabalhador/documentos/RG/dtExped'], :data],
141
142
  ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_NumeroRg', evento['trabalhador/documentos/RG/nrRg']],
142
143
  ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_OrgaoEmissor', evento['trabalhador/documentos/RG/orgaoEmissor']],
143
- ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_DataExpedicao', [evento['trabalhador/documentos/RIC/dtExped'], :data]],
144
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_DataExpedicao', evento['trabalhador/documentos/RIC/dtExped'], :data],
144
145
  ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_NumeroRic', evento['trabalhador/documentos/RIC/nrRic']],
145
146
  ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_OrgaoEmissor', evento['trabalhador/documentos/RIC/orgaoEmissor']],
146
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_DataExpedicao', [evento['trabalhador/documentos/RNE/dtExped'], :data]],
147
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_DataExpedicao', evento['trabalhador/documentos/RNE/dtExped'], :data],
147
148
  ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_NumerorRne', evento['trabalhador/documentos/RNE/nrRne']],
148
149
  ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_OrgaoEmissor', evento['trabalhador/documentos/RNE/orgaoEmissor']],
149
150
  ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaAuditiva', evento['trabalhador/infoDeficiencia/defAuditiva']],
@@ -160,8 +161,8 @@ module Teodoro
160
161
  *evento.*('trabalhador/dependente').map.with_index(1) do |dependente, seq|
161
162
  [
162
163
  ["EventoAdmissao_Dependente_#{seq}_CPFDependente", dependente['cpfDep']],
163
- ["EventoAdmissao_Dependente_#{seq}_DataNascimento", [dependente['dtNascto'], :data]],
164
- ["EventoAdmissao_Dependente_#{seq}_DataNascimentoFormatada", [dependente['dtNascto'], :data]],
164
+ ["EventoAdmissao_Dependente_#{seq}_DataNascimento", dependente['dtNascto'], :data],
165
+ ["EventoAdmissao_Dependente_#{seq}_DataNascimentoFormatada", dependente['dtNascto'], :data],
165
166
  ["EventoAdmissao_Dependente_#{seq}_DependenteIRRF", dependente['depIRRF']],
166
167
  ["EventoAdmissao_Dependente_#{seq}_DependenteSF", dependente['depSF']],
167
168
  ["EventoAdmissao_Dependente_#{seq}_IncapacidadeDependente", dependente['incTrab']],
@@ -185,16 +186,32 @@ module Teodoro
185
186
  ['EventoAdmissao_InfoVinculo_InfoContrato_CodigoCategoria', categoria_do_trabalhador],
186
187
  ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_TipoContrato', evento['vinculo/infoContrato/duracao/tpContr']],
187
188
  ['EventoAdmissao_InfoVinculo_InfoContrato_Remuneracao_UnidadeSalarioFixo', evento['vinculo/infoContrato/remuneracao/undSalFixo']],
188
- ['EventoAdmissao_InfoVinculo_InfoContrato_Remuneracao_ValorSalarioFixo', evento['vinculo/infoContrato/remuneracao/vrSalFx']],
189
+ ['EventoAdmissao_InfoVinculo_InfoContrato_Remuneracao_ValorSalarioFixo', evento['vinculo/infoContrato/remuneracao/vrSalFx'], :decimal],
189
190
  ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_CnpjSindicatoCategoriaProfissional', evento['vinculo/infoRegimeTrab/infoCeletista/cnpjSindCategProf']],
190
- ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_DataAdmissao', [evento['vinculo/infoRegimeTrab/infoCeletista/dtAdm'], :data]],
191
+ ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_DataAdmissao', evento['vinculo/infoRegimeTrab/infoCeletista/dtAdm'], :data],
191
192
  ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_IndicativoAdmissao', evento['vinculo/infoRegimeTrab/infoCeletista/indAdmissao']],
192
193
  ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_NaturezaAtividade', evento['vinculo/infoRegimeTrab/infoCeletista/natAtividade']],
193
194
  ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TipoAdmissao', evento['vinculo/infoRegimeTrab/infoCeletista/tpAdmissao']],
194
195
  ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TipoRegimeJornada', evento['vinculo/infoRegimeTrab/infoCeletista/tpRegJor']],
195
196
  ['EventoAdmissao_InfoVinculo_Matricula', evento['vinculo/matricula']],
196
197
  ['EventoAdmissao_InfoVinculo_TipoRegimePrevidenciario', evento['vinculo/tpRegPrev']],
197
- ['EventoAdmissao_InfoVinculo_TipoRegimeTrabalhista', evento['vinculo/tpRegTrab']]
198
+ ['EventoAdmissao_InfoVinculo_TipoRegimeTrabalhista', evento['vinculo/tpRegTrab']],
199
+ de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS'],
200
+ de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_DataOpcaoFGTS'],
201
+ de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InfoContrato_CodigoCargo'],
202
+ ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_DataTermino', evento['vinculo/infoContrato/duracao/dtTerm'], :data],
203
+ ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_ClausulaAssecuratoria', evento['vinculo/infoContrato/duracao/clauAssec']],
204
+ ['EventoAdmissao_InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_TipoInscricao', evento['vinculo/infoContrato/localTrabalho/localTrabGeral/tpInsc']],
205
+ ['EventoAdmissao_InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_NumeroInscricao', evento['vinculo/infoContrato/localTrabalho/localTrabGeral/nrInsc']],
206
+ ['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_QuantidadedHorasSemanal', evento['vinculo/infoContrato/horContratual/qtdHrsSem'], :decimal],
207
+ de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_TipoJornada'],
208
+ de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_DescricaoTipoJornada'],
209
+ ['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_JornadaTempoParcial', evento['vinculo/infoContrato/horContratual/tmpParc']],
210
+ ['EventoAdmissao_InfoVinculo_DataInicioAfastamento', evento['vinculo/afastamento/dtIniAfast'], :data],
211
+ ['EventoAdmissao_InfoVinculo_CodigoMotivoAfastamento', evento['vinculo/afastamento/codMotAfast']],
212
+ ['EventoAdmissao_InfoVinculo_SucessaoVinculo_DataTransferencia', evento['vinculo/sucessaoVinc/dtTransf'], :data],
213
+ de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_SucessaoVinculo_CnpjEmpregadorAnterior'],
214
+ ['EventoAdmissao_InfoVinculo_SucessaoVinculo_MatriculaAnterior', evento['vinculo/sucessaoVinc/matricAnt']]
198
215
  # rubocop:enable Layout/LineLength
199
216
  ]
200
217
  )
@@ -204,6 +221,147 @@ module Teodoro
204
221
  def indicativo_de_cadastramento_inicial
205
222
  @indicativo_de_cadastramento_inicial ||= evento['vinculo/cadIni']
206
223
  end
224
+
225
+ def de_acordo_com_a_versao_do_leiaute
226
+ @de_acordo_com_a_versao_do_leiaute ||=
227
+ if leiaute_simplificado?
228
+ LeiauteSimplificado.new(empresa: empresa, evento: evento)
229
+ else
230
+ Leiaute2.new(evento)
231
+ end
232
+ end
233
+
234
+ module Leiaute
235
+ private
236
+
237
+ attr_reader :evento
238
+
239
+ public
240
+
241
+ def [](chave)
242
+ dados_do_arquivo_data_por_chave[chave]
243
+ end
244
+
245
+ private
246
+
247
+ def dados_do_arquivo_data_por_chave
248
+ @dados_do_arquivo_data_por_chave ||= dados_do_arquivo_data.map { |item| [item.first, item] }.to_h
249
+ end
250
+ end
251
+
252
+ class Leiaute2
253
+ include Leiaute
254
+
255
+ private
256
+
257
+ def initialize(evento)
258
+ @evento = evento
259
+ end
260
+
261
+ def dados_do_arquivo_data # rubocop:disable Metrics/MethodLength
262
+ [
263
+ # rubocop:disable Layout/LineLength
264
+ [
265
+ 'EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao',
266
+ evento['trabalhador/trabEstrangeiro/classTrabEstrang']
267
+ ],
268
+ [
269
+ 'EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_TipoJornada',
270
+ evento['vinculo/infoContrato/horContratual/tpJornada']
271
+ ],
272
+ [
273
+ 'EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_DescricaoTipoJornada',
274
+ evento['vinculo/infoContrato/horContratual/dscTpJorn']
275
+ ],
276
+ [
277
+ 'EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS',
278
+ evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/opcFGTS']
279
+ ],
280
+ [
281
+ 'EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_DataOpcaoFGTS',
282
+ evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/dtOpcFGTS'],
283
+ :data
284
+ ],
285
+ [
286
+ 'EventoAdmissao_InfoVinculo_SucessaoVinculo_CnpjEmpregadorAnterior',
287
+ evento['vinculo/sucessaoVinc/cnpjEmpregAnt']
288
+ ],
289
+ [
290
+ 'EventoAdmissao_InfoVinculo_InfoContrato_CodigoCargo',
291
+ evento['vinculo/infoContrato/codCargo']
292
+ ]
293
+ # rubocop:enable Layout/LineLength
294
+ ]
295
+ end
296
+ end
297
+
298
+ class LeiauteSimplificado
299
+ include Leiaute
300
+
301
+ private
302
+
303
+ def initialize(empresa:, evento:)
304
+ @empresa = empresa
305
+ @evento = evento
306
+ end
307
+
308
+ attr_reader :empresa
309
+
310
+ def dados_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
311
+ [
312
+ # rubocop:disable Layout/LineLength
313
+ [
314
+ 'EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao',
315
+ {
316
+ '1' => 4,
317
+ '2' => 5,
318
+ '3' => 9,
319
+ '4' => 10,
320
+ '5' => 11,
321
+ '6' => 12,
322
+ '7' => evento['trabalhador/trabImig/tmpResid']
323
+ }[evento['trabalhador/trabImig/condIng']]
324
+ ],
325
+ [
326
+ 'EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_TipoJornada',
327
+ evento['vinculo/infoContrato/horContratual/tpJornada'].then { %w[2 3].include?(_1) ? _1 : 9 }
328
+ ],
329
+ [
330
+ 'EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_DescricaoTipoJornada',
331
+ evento['vinculo/infoContrato/horContratual/dscJorn']
332
+ ],
333
+ [
334
+ 'EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS',
335
+ evento['vinculo/infoRegimeTrab/infoCeletista/FGTS'] ? 1 : 2
336
+ ],
337
+ [
338
+ 'EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_DataOpcaoFGTS',
339
+ evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/dtOpcFGTS'],
340
+ :data
341
+ ],
342
+ [
343
+ 'EventoAdmissao_InfoVinculo_SucessaoVinculo_CnpjEmpregadorAnterior',
344
+ evento['vinculo/sucessaoVinc/nrInsc']
345
+ ],
346
+ [
347
+ 'EventoAdmissao_InfoVinculo_InfoContrato_CodigoCargo',
348
+ codigo_do_cargo
349
+ ]
350
+ # rubocop:enable Layout/LineLength
351
+ ]
352
+ end
353
+
354
+ def codigo_do_cargo
355
+ cargo&.codigo
356
+ end
357
+
358
+ def cargo
359
+ empresa.cargos_gerados[
360
+ nome: evento['vinculo/infoContrato/nmCargo'],
361
+ cbo: evento['vinculo/infoContrato/CBOCargo']
362
+ ]
363
+ end
364
+ end
207
365
  end
208
366
  end
209
367
  end
@@ -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