teodoro 0.11.0 → 0.16.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.
- checksums.yaml +4 -4
- data/lib/teodoro.rb +1 -0
- data/lib/teodoro/arquivo_data.rb +13 -10
- data/lib/teodoro/arquivo_data/car.rb +34 -0
- data/lib/teodoro/arquivo_data/tra_epg_avi.rb +55 -0
- data/lib/teodoro/arquivo_de_evento.rb +4 -0
- data/lib/teodoro/arquivo_de_evento_de_tabela.rb +49 -19
- data/lib/teodoro/arquivo_de_evento_nao_periodico.rb +1 -1
- data/lib/teodoro/arquivo_xml.rb +24 -2
- data/lib/teodoro/empresa.rb +13 -138
- data/lib/teodoro/empresa/arquivos_data.rb +31 -0
- data/lib/teodoro/empresa/cargos_gerados.rb +86 -0
- data/lib/teodoro/empresa/contratos_de_emprego.rb +59 -0
- data/lib/teodoro/empresa/contratos_de_trabalho_sem_vinculo.rb +59 -0
- data/lib/teodoro/leiaute/arquivo_s1000.rb +13 -1
- data/lib/teodoro/leiaute/arquivo_s1005.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s1010.rb +29 -2
- data/lib/teodoro/leiaute/arquivo_s1020.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s1030.rb +19 -23
- data/lib/teodoro/leiaute/arquivo_s1040.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s1050.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s1070.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s2200.rb +159 -1
- data/lib/teodoro/leiaute/arquivo_s2205.rb +30 -30
- data/lib/teodoro/leiaute/arquivo_s2206.rb +177 -74
- data/lib/teodoro/leiaute/arquivo_s2250.rb +14 -34
- data/lib/teodoro/leiaute/arquivo_s2299.rb +65 -1
- data/lib/teodoro/leiaute/arquivo_s2300.rb +129 -2
- data/lib/teodoro/leiaute/arquivo_s2306.rb +25 -1
- metadata +8 -3
- data/lib/teodoro/leiaute.rb +0 -24
@@ -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 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'
|
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 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
|
-
|
17
|
+
ArquivoData::CAR::Identificacao.new(codigo_do_cargo)
|
18
18
|
end
|
19
19
|
|
20
|
-
def
|
21
|
-
@
|
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
|
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
|
@@ -122,6 +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
|
+
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
128
|
['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao', evento['trabalhador/documentos/CNH/dtExped'], :data],
|
@@ -194,7 +195,23 @@ module Teodoro
|
|
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
|