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
@@ -55,12 +55,12 @@ module Teodoro
55
55
  ['ESX_CPF', cpf_do_trabalhador],
56
56
  ['ESX_CATEGORIA', categoria_do_trabalhador],
57
57
  %w[ESX_SEMVINCULO 1],
58
- ['ESX_DATAADMISSAO', [data_de_inicio, :data]],
58
+ ['ESX_DATAADMISSAO', data_de_inicio, :data],
59
59
  ['IdEventoXml'],
60
60
  ['NrReciboEventoOriginal'],
61
61
  ['EventoAdmissao_NrRecibo'],
62
62
  ['EventoAdmissao_InformacoesInicio_IndicativoCadastramentoInicial', evento['infoTSVInicio/cadIni']],
63
- ['EventoAdmissao_InformacoesInicio_DataInicio', [data_de_inicio, :data]],
63
+ ['EventoAdmissao_InformacoesInicio_DataInicio', data_de_inicio, :data],
64
64
  ['SomenteLeitura'],
65
65
  ['UrlRetorno'],
66
66
  ['IdEvento'],
@@ -85,7 +85,7 @@ module Teodoro
85
85
  ['EventoAdmissao_InfoTrabalhador_NomeSocial', evento['trabalhador/nmSoc']],
86
86
  ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio', evento['trabalhador/nascimento/codMunic']],
87
87
  ['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT'],
88
- ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento', [evento['trabalhador/nascimento/dtNascto'], :data]],
88
+ ['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento', evento['trabalhador/nascimento/dtNascto'], :data],
89
89
  ['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae', evento['trabalhador/nascimento/nmMae']],
90
90
  ['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai', evento['trabalhador/nascimento/nmPai']],
91
91
  ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento', evento['trabalhador/nascimento/paisNascto']],
@@ -98,15 +98,15 @@ module Teodoro
98
98
  ['ResideExterior'],
99
99
  ['SemNumeroLogradouroEnderecoEX'],
100
100
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', evento['trabalhador/trabEstrangeiro/casadoBr']],
101
- ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao', evento['trabalhador/trabEstrangeiro/classTrabEstrang']],
101
+ de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao'],
102
102
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao_TEXT'],
103
- ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', [evento['trabalhador/trabEstrangeiro/dtChegada'], :data]],
103
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', evento['trabalhador/trabEstrangeiro/dtChegada'], :data],
104
104
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_FilhosBrasileiros', evento['trabalhador/trabEstrangeiro/filhosBr']],
105
105
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh', evento['trabalhador/documentos/CNH/categoriaCnh']],
106
106
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh_TEXT'],
107
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao', [evento['trabalhador/documentos/CNH/dtExped'], :data]],
108
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataPrimeiraHabilitacao', [evento['trabalhador/documentos/CNH/dtPriHab'], :data]],
109
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataValidade', [evento['trabalhador/documentos/CNH/dtValid'], :data]],
107
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao', evento['trabalhador/documentos/CNH/dtExped'], :data],
108
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataPrimeiraHabilitacao', evento['trabalhador/documentos/CNH/dtPriHab'], :data],
109
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataValidade', evento['trabalhador/documentos/CNH/dtValid'], :data],
110
110
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_NumeroCnh', evento['trabalhador/documentos/CNH/nrRegCnh']],
111
111
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh', evento['trabalhador/documentos/CNH/ufCnh']],
112
112
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh_TEXT'],
@@ -114,10 +114,10 @@ module Teodoro
114
114
  ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_SerieCtps', evento['trabalhador/documentos/CTPS/serieCtps']],
115
115
  ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps', evento['trabalhador/documentos/CTPS/ufCtps']],
116
116
  ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps_TEXT'],
117
- ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_DataExpedicao', [evento['trabalhador/documentos/OC/dtExped'], :data]],
117
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_DataExpedicao', evento['trabalhador/documentos/OC/dtExped'], :data],
118
118
  ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_NumeroOc', evento['trabalhador/documentos/OC/nrOc']],
119
119
  ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_OrgaoEmissor', evento['trabalhador/documentos/OC/orgaoEmissor']],
120
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao', [evento['trabalhador/documentos/RG/dtExped'], :data]],
120
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao', evento['trabalhador/documentos/RG/dtExped'], :data],
121
121
  ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_NumeroRg', evento['trabalhador/documentos/RG/nrRg']],
122
122
  ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_OrgaoEmissor', evento['trabalhador/documentos/RG/orgaoEmissor']],
123
123
  ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaAuditiva', evento['trabalhador/infoDeficiencia/defAuditiva']],
@@ -129,7 +129,7 @@ module Teodoro
129
129
  *evento.*('trabalhador/dependente').map.with_index(1) do |dependente, seq|
130
130
  [
131
131
  ["EventoAdmissao_Dependente_#{seq}_CPFDependente", dependente['cpfDep']],
132
- ["EventoAdmissao_Dependente_#{seq}_DataNascimento", [dependente['dtNascto'], :data]],
132
+ ["EventoAdmissao_Dependente_#{seq}_DataNascimento", dependente['dtNascto'], :data],
133
133
  ["EventoAdmissao_Dependente_#{seq}_DataNascimentoFormatada"],
134
134
  ["EventoAdmissao_Dependente_#{seq}_DependenteIRRF", dependente['depIRRF']],
135
135
  ["EventoAdmissao_Dependente_#{seq}_DependenteSF", dependente['depSF']],
@@ -140,7 +140,7 @@ module Teodoro
140
140
  end.sum([]),
141
141
  ['CodigoCBO'],
142
142
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_AreaAtuacao', evento['infoTSVInicio/infoComplementares/infoEstagiario/areaAtuacao']],
143
- ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_DtPrevistaTermino', [evento['infoTSVInicio/infoComplementares/infoEstagiario/dtPrevTerm'], :data]],
143
+ ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_DtPrevistaTermino', evento['infoTSVInicio/infoComplementares/infoEstagiario/dtPrevTerm'], :data],
144
144
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_InfoAgenteIntegracao_Bairro', evento['infoTSVInicio/infoComplementares/infoEstagiario/ageIntegracao/bairro']],
145
145
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_InfoAgenteIntegracao_Cep', evento['infoTSVInicio/infoComplementares/infoEstagiario/ageIntegracao/cep']],
146
146
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_InfoAgenteIntegracao_Cnpj', evento['infoTSVInicio/infoComplementares/infoEstagiario/ageIntegracao/cnpjAgntInteg']],
@@ -162,16 +162,143 @@ module Teodoro
162
162
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_NaturezaEstagio', evento['infoTSVInicio/infoComplementares/infoEstagiario/natEstagio']],
163
163
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_NivelEstagio', evento['infoTSVInicio/infoComplementares/infoEstagiario/nivEstagio']],
164
164
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_NrApoliceSeguro', evento['infoTSVInicio/infoComplementares/infoEstagiario/nrApol']],
165
- ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_ValorBolsa', evento['infoTSVInicio/infoComplementares/infoEstagiario/vlrBolsa']],
165
+ ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_ValorBolsa', evento['infoTSVInicio/infoComplementares/infoEstagiario/vlrBolsa'], :decimal],
166
166
  ['EventoAdmissao_InformacoesInicio_CodigoCategoria', categoria_do_trabalhador],
167
167
  ['DescricaoProcEmi', processo_de_emissao_do_evento],
168
168
  ['IdEventoXml', id_do_evento],
169
- ['NrReciboEventoOriginal', numero_do_recibo]
169
+ ['NrReciboEventoOriginal', numero_do_recibo],
170
+ ['EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_Bairro', evento['trabalhador/endereco/brasil/bairro']],
171
+ ['EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_Cep', evento['trabalhador/endereco/brasil/cep']],
172
+ ['EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_CodigoMunicipio', evento['trabalhador/endereco/brasil/codMunic']],
173
+ ['EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_Complemento', evento['trabalhador/endereco/brasil/complemento']],
174
+ ['EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_DescricaoLogradouro', evento['trabalhador/endereco/brasil/dscLograd']],
175
+ ['EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_NumeroLogradouro', evento['trabalhador/endereco/brasil/nrLograd']],
176
+ ['EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_TipoLogradouro', evento['trabalhador/endereco/brasil/tpLograd']],
177
+ ['EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_Uf', evento['trabalhador/endereco/brasil/uf']],
178
+ de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoCargo'],
179
+ de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoFgts_OptanteFGTS'],
180
+ de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoFgts_DataOpcaoFGTS'],
181
+ ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_Remuneracao_UnidadeSalarioFixo', evento['infoTSVInicio/infoComplementares/remuneracao/undSalFixo']],
182
+ ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_Remuneracao_ValorSalarioFixo', evento['infoTSVInicio/infoComplementares/remuneracao/vrSalFx'], :decimal],
183
+ ['EventoAdmissao_InformacoesInicio_NaturezaAtividade', evento['infoTSVInicio/natAtividade']]
170
184
  # rubocop:enable Layout/LineLength
171
185
  ]
172
186
  )
173
187
  ]
174
188
  end
189
+
190
+ def de_acordo_com_a_versao_do_leiaute
191
+ @de_acordo_com_a_versao_do_leiaute ||=
192
+ if leiaute_simplificado?
193
+ LeiauteSimplificado.new(empresa: empresa, evento: evento)
194
+ else
195
+ Leiaute2.new(evento)
196
+ end
197
+ end
198
+
199
+ module Leiaute
200
+ private
201
+
202
+ attr_reader :evento
203
+
204
+ public
205
+
206
+ def [](chave)
207
+ indice[chave]
208
+ end
209
+
210
+ private
211
+
212
+ def indice
213
+ @indice ||= chaves_valores.map { [_1.first, _1] }.to_h
214
+ end
215
+ end
216
+
217
+ class Leiaute2
218
+ include Leiaute
219
+
220
+ private
221
+
222
+ def initialize(evento)
223
+ @evento = evento
224
+ end
225
+
226
+ def chaves_valores # rubocop:disable Metrics/MethodLength
227
+ [
228
+ [
229
+ 'EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao',
230
+ evento['trabalhador/trabEstrangeiro/classTrabEstrang']
231
+ ],
232
+ [
233
+ 'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoFgts_OptanteFGTS',
234
+ evento['infoTSVInicio/infoComplementares/fgts/opcFGTS']
235
+ ],
236
+ [
237
+ 'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoFgts_DataOpcaoFGTS',
238
+ evento['infoTSVInicio/infoComplementares/fgts/dtOpcFGTS'],
239
+ :data
240
+ ],
241
+ [
242
+ 'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoCargo',
243
+ evento['infoTSVInicio/infoComplementares/cargoFuncao/codCargo']
244
+ ]
245
+ ]
246
+ end
247
+ end
248
+
249
+ class LeiauteSimplificado
250
+ include Leiaute
251
+
252
+ private
253
+
254
+ def initialize(empresa:, evento:)
255
+ @empresa = empresa
256
+ @evento = evento
257
+ end
258
+
259
+ attr_reader :empresa
260
+
261
+ def chaves_valores # rubocop:disable Metrics/MethodLength
262
+ [
263
+ [
264
+ 'EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao',
265
+ {
266
+ '1' => 4,
267
+ '2' => 5,
268
+ '3' => 9,
269
+ '4' => 10,
270
+ '5' => 11,
271
+ '6' => 12,
272
+ '7' => evento['trabalhador/trabImig/tmpResid']
273
+ }[evento['trabalhador/trabImig/condIng']]
274
+ ],
275
+ [
276
+ 'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoFgts_OptanteFGTS',
277
+ (1 if evento['infoTSVInicio/infoComplementares/FGTS'])
278
+ ],
279
+ [
280
+ 'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoFgts_DataOpcaoFGTS',
281
+ evento['infoTSVInicio/infoComplementares/FGTS/dtOpcFGTS'],
282
+ :data
283
+ ],
284
+ [
285
+ 'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoCargo',
286
+ codigo_do_cargo
287
+ ]
288
+ ]
289
+ end
290
+
291
+ def codigo_do_cargo
292
+ cargo&.codigo
293
+ end
294
+
295
+ def cargo
296
+ empresa.cargos_gerados[
297
+ nome: evento['infoTSVInicio/infoComplementares/cargoFuncao/nmCargo'],
298
+ cbo: evento['infoTSVInicio/infoComplementares/cargoFuncao/CBOCargo']
299
+ ]
300
+ end
301
+ end
175
302
  end
176
303
  end
177
304
  end
@@ -20,8 +20,8 @@ module Teodoro
20
20
  ['ESX_MATRICULA'],
21
21
  ['ESX_CATEGORIA', categoria_do_trabalhador],
22
22
  %w[ESX_SEMVINCULO 1],
23
- ['ESX_DATAADMISSAO', [data_de_inicio, :data]],
24
- ['ESX_DATAALTERACAO', [data_da_alteracao, :data]],
23
+ ['ESX_DATAADMISSAO', data_de_inicio, :data],
24
+ ['ESX_DATAALTERACAO', data_da_alteracao, :data],
25
25
  ['cpfTrabalhador'],
26
26
  ['nomeTrabalhador'],
27
27
  ['TipoInscricaoEmpregador', recibo['ideEmpregador/tpInsc']],
@@ -66,7 +66,7 @@ module Teodoro
66
66
  ['InfoVinculo_TipoRegimeTrabalhista'],
67
67
  ['InfoVinculo_TipoRegimePrevidenciario'],
68
68
  ['InfoVinculo_InfoContrato_CodigoCategoria'],
69
- ['InfoVinculo_InfoContrato_CodigoCargo', evento['infoTSVAlteracao/infoComplementares/cargoFuncao/codCargo']],
69
+ de_acordo_com_a_versao_do_leiaute['InfoVinculo_InfoContrato_CodigoCargo'],
70
70
  ['InfoVinculo_InfoContrato_CodigoFuncao', evento['infoTSVAlteracao/infoComplementares/cargoFuncao/codFuncao']],
71
71
  ['InfoVinculo_InfoContrato_CodigoCarreira'],
72
72
  ['InfoVinculo_InfoContrato_DataIngressoCarreira'],
@@ -75,7 +75,7 @@ module Teodoro
75
75
  ['InfoVinculo_DataInicioAfastamento'],
76
76
  ['InfoVinculo_CodigoMotivoAfastamento'],
77
77
  ['InfoVinculo_InfoContrato_Remuneracao_UnidadeSalarioFixo', evento['infoTSVAlteracao/infoComplementares/remuneracao/undSalFixo']],
78
- ['InfoVinculo_InfoContrato_Remuneracao_ValorSalarioFixo', evento['infoTSVAlteracao/infoComplementares/remuneracao/vrSalFx']],
78
+ ['InfoVinculo_InfoContrato_Remuneracao_ValorSalarioFixo', evento['infoTSVAlteracao/infoComplementares/remuneracao/vrSalFx'], :decimal],
79
79
  ['InfoVinculo_InfoContrato_Remuneracao_DescricaoSalarioVariavel', evento['infoTSVAlteracao/infoComplementares/remuneracao/dscSalVar']],
80
80
  ['InfoVinculo_InfoContrato_HorarioContratual_DescricaoTipoJornada'],
81
81
  ['InfoVinculo_InfoContrato_HorarioContratual_JornadaTempoParcial'],
@@ -123,7 +123,7 @@ module Teodoro
123
123
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoTrabalhadorCedido_TipoRegimePrevidenciario'],
124
124
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoTrabalhadorCedido_TipoRegimeTrabalhista'],
125
125
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_AreaAtuacao', evento['infoTSVAlteracao/infoComplementares/infoEstagiario/areaAtuacao']],
126
- ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_DtPrevistaTermino', [evento['infoTSVAlteracao/infoComplementares/infoEstagiario/dtPrevTerm'], :data]],
126
+ ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_DtPrevistaTermino', evento['infoTSVAlteracao/infoComplementares/infoEstagiario/dtPrevTerm'], :data],
127
127
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_InfoAgenteIntegracao_Bairro', evento['infoTSVAlteracao/infoComplementares/infoEstagiario/ageIntegracao/bairro']],
128
128
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_InfoAgenteIntegracao_Cep', evento['infoTSVAlteracao/infoComplementares/infoEstagiario/ageIntegracao/cep']],
129
129
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_InfoAgenteIntegracao_Cnpj', evento['infoTSVAlteracao/infoComplementares/infoEstagiario/ageIntegracao/cnpjAgntInteg']],
@@ -145,7 +145,7 @@ module Teodoro
145
145
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_NaturezaEstagio', evento['infoTSVAlteracao/infoComplementares/infoEstagiario/natEstagio']],
146
146
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_NivelEstagio', evento['infoTSVAlteracao/infoComplementares/infoEstagiario/nivEstagio']],
147
147
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_NrApoliceSeguro', evento['infoTSVAlteracao/infoComplementares/infoEstagiario/nrApol']],
148
- ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_ValorBolsa', evento['infoTSVAlteracao/infoComplementares/infoEstagiario/vlrBolsa']]
148
+ ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_ValorBolsa', evento['infoTSVAlteracao/infoComplementares/infoEstagiario/vlrBolsa'], :decimal]
149
149
  # rubocop:enable Layout/LineLength
150
150
  ]
151
151
  )
@@ -179,6 +179,85 @@ module Teodoro
179
179
  def data_da_alteracao
180
180
  @data_da_alteracao ||= evento['infoTSVAlteracao/dtAlteracao']
181
181
  end
182
+
183
+ def de_acordo_com_a_versao_do_leiaute
184
+ @de_acordo_com_a_versao_do_leiaute ||=
185
+ if leiaute_simplificado?
186
+ LeiauteSimplificado.new(empresa: empresa, evento: evento)
187
+ else
188
+ Leiaute2.new(evento)
189
+ end
190
+ end
191
+
192
+ module Leiaute
193
+ private
194
+
195
+ attr_reader :evento
196
+
197
+ public
198
+
199
+ def [](chave)
200
+ indice[chave]
201
+ end
202
+
203
+ private
204
+
205
+ def indice
206
+ @indice ||= chaves_valores.map { [_1.first, _1] }.to_h
207
+ end
208
+ end
209
+
210
+ class Leiaute2
211
+ include Leiaute
212
+
213
+ private
214
+
215
+ def initialize(evento)
216
+ @evento = evento
217
+ end
218
+
219
+ def chaves_valores
220
+ [
221
+ [
222
+ 'InfoVinculo_InfoContrato_CodigoCargo',
223
+ evento['infoTSVAlteracao/infoComplementares/cargoFuncao/codCargo']
224
+ ]
225
+ ]
226
+ end
227
+ end
228
+
229
+ class LeiauteSimplificado
230
+ include Leiaute
231
+
232
+ private
233
+
234
+ def initialize(empresa:, evento:)
235
+ @empresa = empresa
236
+ @evento = evento
237
+ end
238
+
239
+ attr_reader :empresa
240
+
241
+ def chaves_valores
242
+ [
243
+ [
244
+ 'InfoVinculo_InfoContrato_CodigoCargo',
245
+ codigo_do_cargo
246
+ ]
247
+ ]
248
+ end
249
+
250
+ def codigo_do_cargo
251
+ cargo&.codigo
252
+ end
253
+
254
+ def cargo
255
+ empresa.cargos_gerados[
256
+ nome: evento['infoTSVAlteracao/infoComplementares/cargoFuncao/nmCargo'],
257
+ cbo: evento['infoTSVAlteracao/infoComplementares/cargoFuncao/CBOCargo']
258
+ ]
259
+ end
260
+ end
182
261
  end
183
262
  end
184
263
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teodoro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.15.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clavius Tales
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-22 00:00:00.000000000 Z
11
+ date: 2021-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -188,6 +188,8 @@ files:
188
188
  - bin/teodoro
189
189
  - lib/teodoro.rb
190
190
  - lib/teodoro/arquivo_data.rb
191
+ - lib/teodoro/arquivo_data/car.rb
192
+ - lib/teodoro/arquivo_data/tra_epg_avi.rb
191
193
  - lib/teodoro/arquivo_de_evento.rb
192
194
  - lib/teodoro/arquivo_de_evento_de_tabela.rb
193
195
  - lib/teodoro/arquivo_de_evento_nao_periodico.rb
@@ -196,7 +198,10 @@ files:
196
198
  - lib/teodoro/cnpj.rb
197
199
  - lib/teodoro/console.rb
198
200
  - lib/teodoro/empresa.rb
199
- - lib/teodoro/leiaute.rb
201
+ - lib/teodoro/empresa/arquivos_data.rb
202
+ - lib/teodoro/empresa/cargos_gerados.rb
203
+ - lib/teodoro/empresa/contratos_de_emprego.rb
204
+ - lib/teodoro/empresa/contratos_de_trabalho_sem_vinculo.rb
200
205
  - lib/teodoro/leiaute/arquivo_s1000.rb
201
206
  - lib/teodoro/leiaute/arquivo_s1005.rb
202
207
  - lib/teodoro/leiaute/arquivo_s1010.rb
@@ -1,24 +0,0 @@
1
- require_relative 'leiaute/arquivo_s1000'
2
- require_relative 'leiaute/arquivo_s1005'
3
- require_relative 'leiaute/arquivo_s1010'
4
- require_relative 'leiaute/arquivo_s1020'
5
- require_relative 'leiaute/arquivo_s1030'
6
- require_relative 'leiaute/arquivo_s1040'
7
- require_relative 'leiaute/arquivo_s1050'
8
- require_relative 'leiaute/arquivo_s1070'
9
- require_relative 'leiaute/arquivo_s2190'
10
- require_relative 'leiaute/arquivo_s2200'
11
- require_relative 'leiaute/arquivo_s2205'
12
- require_relative 'leiaute/arquivo_s2206'
13
- require_relative 'leiaute/arquivo_s2230'
14
- require_relative 'leiaute/arquivo_s2250'
15
- require_relative 'leiaute/arquivo_s2299'
16
- require_relative 'leiaute/arquivo_s2300'
17
- require_relative 'leiaute/arquivo_s2306'
18
- require_relative 'leiaute/arquivo_s2399'
19
- require_relative 'leiaute/arquivo_s3000'
20
-
21
- module Teodoro
22
- module Leiaute
23
- end
24
- end