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.
@@ -0,0 +1,31 @@
1
+ module Teodoro
2
+ class Empresa
3
+ class ArquivosData
4
+ private
5
+
6
+ def initialize(destino_dos_arquivos_data)
7
+ @destino_dos_arquivos_data = destino_dos_arquivos_data
8
+ end
9
+
10
+ attr_reader :destino_dos_arquivos_data
11
+
12
+ public
13
+
14
+ def registrar(recibo:, nome:)
15
+ (nomes_por_recibo[recibo] ||= []) << nome
16
+ end
17
+
18
+ def excluir(recibo)
19
+ (nomes_por_recibo.delete(recibo) || [])
20
+ .map { |nome| File.join(destino_dos_arquivos_data, "#{nome}.data") }
21
+ .each { File.delete(_1) }
22
+ end
23
+
24
+ private
25
+
26
+ def nomes_por_recibo
27
+ @nomes_por_recibo ||= {}
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,86 @@
1
+ module Teodoro
2
+ class Empresa
3
+ class CargosGerados
4
+ private
5
+
6
+ def initialize(empresa)
7
+ @empresa = empresa
8
+ end
9
+
10
+ attr_reader :empresa
11
+
12
+ public
13
+
14
+ extend Forwardable
15
+
16
+ def_delegators :cargos, :each
17
+
18
+ def [](nome:, cbo:)
19
+ indice[nome: nome, cbo: cbo] ||= Cargo.new(empresa: empresa, dados: Obj.new(nome: nome, cbo: cbo)) if nome
20
+ end
21
+
22
+ private
23
+
24
+ def cargos
25
+ indice.values
26
+ end
27
+
28
+ def indice
29
+ @indice ||= {}
30
+ end
31
+
32
+ class Cargo
33
+ private
34
+
35
+ def initialize(empresa:, dados:)
36
+ @empresa = empresa
37
+ @dados = dados
38
+ end
39
+
40
+ attr_reader :empresa
41
+
42
+ public
43
+
44
+ attr_reader :dados
45
+
46
+ def codigo
47
+ @codigo ||= SecureRandom.hex(15)
48
+ end
49
+
50
+ def processar
51
+ criar_arquivo_data
52
+ end
53
+
54
+ private
55
+
56
+ def criar_arquivo_data
57
+ arquivo_data.criar
58
+ end
59
+
60
+ def arquivo_data # rubocop:disable Metrics/MethodLength
61
+ ArquivoData.new(
62
+ diretorio: empresa.destino_dos_arquivos_data,
63
+ nome: ArquivoDeEventoDeTabela::NomeDoArquivoData.new(
64
+ identificacao: ArquivoData::CAR::Identificacao.new(codigo),
65
+ inicio_da_validade: empresa.inicio_da_validade
66
+ ),
67
+ itens_do_conteudo: ArquivoData::CAR::ItensDeConteudo.new(
68
+ Obj.new(
69
+ codigo_do_cargo: codigo,
70
+ inicio_da_validade: empresa.inicio_da_validade,
71
+ fim_da_validade: nil,
72
+ nome_do_cargo: dados.nome,
73
+ cbo: dados.cbo,
74
+ orgao_publico?: false,
75
+ id_do_evento: nil,
76
+ numero_do_recibo: nil,
77
+ processo_de_emissao_do_evento: nil,
78
+ versao_do_aplicativo_de_processamento_do_evento: nil
79
+ )
80
+ )
81
+ )
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,59 @@
1
+ module Teodoro
2
+ class Empresa
3
+ class ContratosDeEmprego
4
+ def registrar_admissao(admissao:, afastamento:)
5
+ contratos_por_matricula[admissao.matricula] = Contrato.new(admissao: admissao, afastamento: afastamento)
6
+ end
7
+
8
+ def [](matricula)
9
+ contratos_por_matricula[matricula]
10
+ end
11
+
12
+ def *(cpf_do_trabalhador:, data:)
13
+ contratos
14
+ .select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
15
+ .sort_by(&:data_de_admissao)
16
+ end
17
+
18
+ def remover(recibo)
19
+ contratos_por_matricula.delete_if { _2.recibo == recibo }
20
+ end
21
+
22
+ private
23
+
24
+ def contratos_por_matricula
25
+ @contratos_por_matricula ||= {}
26
+ end
27
+
28
+ def contratos
29
+ contratos_por_matricula.values
30
+ end
31
+
32
+ class Contrato
33
+ private
34
+
35
+ def initialize(admissao:, afastamento:)
36
+ @admissao = admissao
37
+ @afastamento = afastamento
38
+ end
39
+
40
+ attr_reader :admissao, :data_de_desligamento
41
+
42
+ public
43
+
44
+ extend Forwardable
45
+
46
+ def_delegators :admissao, :matricula, :data_de_admissao, :categoria_do_trabalhador, :cpf_do_trabalhador,
47
+ :recibo
48
+
49
+ attr_accessor :afastamento
50
+
51
+ attr_writer :data_de_desligamento
52
+
53
+ def ativo?(data)
54
+ data_de_admissao <= data && (!data_de_desligamento || data_de_desligamento >= data)
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,59 @@
1
+ module Teodoro
2
+ class Empresa
3
+ class ContratosDeTrabalhoSemVinculo
4
+ def registrar_inicio_de_contrato(inicio_de_contrato:, afastamento:)
5
+ contratos << Contrato.new(inicio_de_contrato: inicio_de_contrato, afastamento: afastamento)
6
+ end
7
+
8
+ def [](cpf_do_trabalhador:, categoria_do_trabalhador:, data:)
9
+ contratos
10
+ .select {
11
+ _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.categoria_do_trabalhador == categoria_do_trabalhador &&
12
+ _1.ativo?(data)
13
+ }
14
+ .max_by(&:data_de_inicio)
15
+ end
16
+
17
+ def *(cpf_do_trabalhador:, data:)
18
+ contratos
19
+ .select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
20
+ .sort_by(&:data_de_inicio)
21
+ end
22
+
23
+ def remover(recibo)
24
+ contratos.delete_if { _1.recibo == recibo }
25
+ end
26
+
27
+ private
28
+
29
+ def contratos
30
+ @contratos ||= []
31
+ end
32
+
33
+ class Contrato
34
+ private
35
+
36
+ def initialize(inicio_de_contrato:, afastamento:)
37
+ @inicio_de_contrato = inicio_de_contrato
38
+ @afastamento = afastamento
39
+ end
40
+
41
+ attr_reader :inicio_de_contrato, :data_do_termino
42
+
43
+ public
44
+
45
+ extend Forwardable
46
+
47
+ def_delegators :inicio_de_contrato, :cpf_do_trabalhador, :categoria_do_trabalhador, :data_de_inicio, :recibo
48
+
49
+ attr_accessor :afastamento
50
+
51
+ attr_writer :data_do_termino
52
+
53
+ def ativo?(data)
54
+ data_de_inicio <= data && (!data_do_termino || data_do_termino >= data)
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -1,10 +1,22 @@
1
1
  module Teodoro
2
2
  module Leiaute
3
3
  class ArquivoS1000 # rubocop:disable Metrics/ClassLength
4
- include ArquivoDeEventoDeTabela
4
+ include ArquivoDeEventoDeTabela::DescritorDeArquivoData
5
5
 
6
6
  private
7
7
 
8
+ def criar_arquivo_data
9
+ super
10
+
11
+ registrar_inicio_da_validade
12
+ end
13
+
14
+ def registrar_inicio_da_validade
15
+ return unless !empresa.inicio_da_validade || inicio_da_validade < empresa.inicio_da_validade
16
+
17
+ empresa.inicio_da_validade = inicio_da_validade
18
+ end
19
+
8
20
  def noh_de_informacoes_do_evento
9
21
  'infoEmpregador'
10
22
  end
@@ -1,7 +1,7 @@
1
1
  module Teodoro
2
2
  module Leiaute
3
3
  class ArquivoS1005
4
- include ArquivoDeEventoDeTabela
4
+ include ArquivoDeEventoDeTabela::DescritorDeArquivoData
5
5
 
6
6
  private
7
7
 
@@ -1,7 +1,7 @@
1
1
  module Teodoro
2
2
  module Leiaute
3
3
  class ArquivoS1010
4
- include ArquivoDeEventoDeTabela
4
+ include ArquivoDeEventoDeTabela::DescritorDeArquivoData
5
5
 
6
6
  private
7
7
 
@@ -41,7 +41,7 @@ module Teodoro
41
41
  ['DadosRubrica_Natureza', evento['infoRubrica/*/dadosRubrica/natRubr']],
42
42
  ['DadosRubrica_TipoRubrica', evento['infoRubrica/*/dadosRubrica/tpRubr']],
43
43
  ['DadosRubrica_CodigoIncidenciaPrevidencia', evento['infoRubrica/*/dadosRubrica/codIncCP']],
44
- ['DadosRubrica_CodigoIncidenciaIR', evento['infoRubrica/*/dadosRubrica/codIncIRRF']],
44
+ de_acordo_com_a_versao_do_leiaute['DadosRubrica_CodigoIncidenciaIR'],
45
45
  ['DadosRubrica_CodigoIncidenciaFGTS', evento['infoRubrica/*/dadosRubrica/codIncFGTS']],
46
46
  ['DadosRubrica_CodigoIncidenciaSindical', evento['infoRubrica/*/dadosRubrica/codIncSIND']],
47
47
  ['IdEventoXml'],
@@ -54,6 +54,33 @@ module Teodoro
54
54
  ['hd_ProcessoSindicato']
55
55
  ]
56
56
  end
57
+
58
+ def de_acordo_com_a_versao_do_leiaute # rubocop:disable Metrics/MethodLength
59
+ @de_acordo_com_a_versao_do_leiaute ||=
60
+ (
61
+ if leiaute_simplificado?
62
+ [
63
+ [
64
+ 'DadosRubrica_CodigoIncidenciaIR',
65
+ evento['infoRubrica/*/dadosRubrica/codIncIRRF'].then { {
66
+ '0' => '00',
67
+ '1' => '01',
68
+ '9' => '09',
69
+ '700' => '79',
70
+ '701' => '79'
71
+ }[_1] || _1 }
72
+ ]
73
+ ]
74
+ else
75
+ [
76
+ [
77
+ 'DadosRubrica_CodigoIncidenciaIR',
78
+ evento['infoRubrica/*/dadosRubrica/codIncIRRF']
79
+ ]
80
+ ]
81
+ end
82
+ ).map { [_1.first, _1] }.to_h
83
+ end
57
84
  end
58
85
  end
59
86
  end
@@ -1,7 +1,7 @@
1
1
  module Teodoro
2
2
  module Leiaute
3
3
  class ArquivoS1020
4
- include ArquivoDeEventoDeTabela
4
+ include ArquivoDeEventoDeTabela::DescritorDeArquivoData
5
5
 
6
6
  private
7
7
 
@@ -1,7 +1,7 @@
1
1
  module Teodoro
2
2
  module Leiaute
3
3
  class ArquivoS1030
4
- include ArquivoDeEventoDeTabela
4
+ include ArquivoDeEventoDeTabela::DescritorDeArquivoData
5
5
 
6
6
  private
7
7
 
@@ -14,32 +14,28 @@ module Teodoro
14
14
  end
15
15
 
16
16
  def identificacao_do_arquivo_data
17
- ['CAR', codigo_do_cargo]
17
+ ArquivoData::CAR::Identificacao.new(codigo_do_cargo)
18
18
  end
19
19
 
20
- def codigo_do_cargo
21
- @codigo_do_cargo ||= evento['infoCargo/*/ideCargo/codCargo']
20
+ def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength
21
+ @itens_do_conteudo_do_arquivo_data ||= ArquivoData::CAR::ItensDeConteudo.new(
22
+ Obj.new(
23
+ codigo_do_cargo: codigo_do_cargo,
24
+ inicio_da_validade: inicio_da_validade,
25
+ fim_da_validade: fim_da_validade,
26
+ nome_do_cargo: evento['infoCargo/*/dadosCargo/nmCargo'],
27
+ cbo: evento['infoCargo/*/dadosCargo/codCBO'],
28
+ orgao_publico?: evento['infoCargo/*/dadosCargo/cargoPublico'],
29
+ id_do_evento: id_do_evento,
30
+ numero_do_recibo: numero_do_recibo,
31
+ processo_de_emissao_do_evento: processo_de_emissao_do_evento,
32
+ versao_do_aplicativo_de_processamento_do_evento: versao_do_aplicativo_de_processamento_do_evento
33
+ )
34
+ )
22
35
  end
23
36
 
24
- def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength
25
- [
26
- ['RequestVerificationToken'],
27
- ['SomenteVisualizacao'],
28
- ['BloquearCodigo'],
29
- ['BloquearAntigoPeriodoValidade'],
30
- ['CodigoCargo', codigo_do_cargo],
31
- ['InicioValidade', inicio_da_validade, :mes_ano],
32
- ['FimValidade', fim_da_validade, :mes_ano],
33
- ['DadosCargo_DescricaoCargo', evento['infoCargo/*/dadosCargo/nmCargo']],
34
- ['DadosCargo_CodigoCBO', evento['infoCargo/*/dadosCargo/codCBO']],
35
- ['DadosCargo_CodigoCBO_TEXT'],
36
- ['autocomplete_DadosCargo_CodigoCBO'],
37
- ['PreencherCargoPublico', evento['infoCargo/*/dadosCargo/cargoPublico'], :bool],
38
- ['IdEventoXml', id_do_evento],
39
- ['NrReciboEventoOriginal', numero_do_recibo],
40
- ['DescricaoProcEmi', processo_de_emissao_do_evento],
41
- ['VerProc', versao_do_aplicativo_de_processamento_do_evento]
42
- ]
37
+ def codigo_do_cargo
38
+ @codigo_do_cargo ||= evento['infoCargo/*/ideCargo/codCargo']
43
39
  end
44
40
  end
45
41
  end
@@ -1,7 +1,7 @@
1
1
  module Teodoro
2
2
  module Leiaute
3
3
  class ArquivoS1040
4
- include ArquivoDeEventoDeTabela
4
+ include ArquivoDeEventoDeTabela::DescritorDeArquivoData
5
5
 
6
6
  def noh_de_informacoes_do_evento
7
7
  'infoFuncao'
@@ -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
 
@@ -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
 
@@ -122,7 +122,7 @@ module Teodoro
122
122
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', evento['trabalhador/trabEstrangeiro/casadoBr']],
123
123
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', evento['trabalhador/trabEstrangeiro/dtChegada'], :data],
124
124
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_FilhosBrasileiros', evento['trabalhador/trabEstrangeiro/filhosBr']],
125
- ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao', evento['trabalhador/trabEstrangeiro/classTrabEstrang']],
125
+ de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao'],
126
126
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh', evento['trabalhador/documentos/CNH/categoriaCnh']],
127
127
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh_TEXT'],
128
128
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao', evento['trabalhador/documentos/CNH/dtExped'], :data],
@@ -196,21 +196,21 @@ module Teodoro
196
196
  ['EventoAdmissao_InfoVinculo_Matricula', evento['vinculo/matricula']],
197
197
  ['EventoAdmissao_InfoVinculo_TipoRegimePrevidenciario', evento['vinculo/tpRegPrev']],
198
198
  ['EventoAdmissao_InfoVinculo_TipoRegimeTrabalhista', evento['vinculo/tpRegTrab']],
199
- ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS', evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/opcFGTS']],
200
- ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_DataOpcaoFGTS', evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/dtOpcFGTS'], :data],
201
- ['EventoAdmissao_InfoVinculo_InfoContrato_CodigoCargo', evento['vinculo/infoContrato/codCargo']],
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
202
  ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_DataTermino', evento['vinculo/infoContrato/duracao/dtTerm'], :data],
203
203
  ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_ClausulaAssecuratoria', evento['vinculo/infoContrato/duracao/clauAssec']],
204
204
  ['EventoAdmissao_InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_TipoInscricao', evento['vinculo/infoContrato/localTrabalho/localTrabGeral/tpInsc']],
205
205
  ['EventoAdmissao_InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_NumeroInscricao', evento['vinculo/infoContrato/localTrabalho/localTrabGeral/nrInsc']],
206
206
  ['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_QuantidadedHorasSemanal', evento['vinculo/infoContrato/horContratual/qtdHrsSem'], :decimal],
207
- ['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_TipoJornada', evento['vinculo/infoContrato/horContratual/tpJornada']],
208
- ['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_DescricaoTipoJornada', evento['vinculo/infoContrato/horContratual/dscTpJorn']],
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
209
  ['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_JornadaTempoParcial', evento['vinculo/infoContrato/horContratual/tmpParc']],
210
210
  ['EventoAdmissao_InfoVinculo_DataInicioAfastamento', evento['vinculo/afastamento/dtIniAfast'], :data],
211
211
  ['EventoAdmissao_InfoVinculo_CodigoMotivoAfastamento', evento['vinculo/afastamento/codMotAfast']],
212
212
  ['EventoAdmissao_InfoVinculo_SucessaoVinculo_DataTransferencia', evento['vinculo/sucessaoVinc/dtTransf'], :data],
213
- ['EventoAdmissao_InfoVinculo_SucessaoVinculo_CnpjEmpregadorAnterior', evento['vinculo/sucessaoVinc/cnpjEmpregAnt']],
213
+ de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_SucessaoVinculo_CnpjEmpregadorAnterior'],
214
214
  ['EventoAdmissao_InfoVinculo_SucessaoVinculo_MatriculaAnterior', evento['vinculo/sucessaoVinc/matricAnt']]
215
215
  # rubocop:enable Layout/LineLength
216
216
  ]
@@ -221,6 +221,147 @@ module Teodoro
221
221
  def indicativo_de_cadastramento_inicial
222
222
  @indicativo_de_cadastramento_inicial ||= evento['vinculo/cadIni']
223
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
224
365
  end
225
366
  end
226
367
  end