teodoro 0.45.0 → 0.46.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/arquivo_data.rb +7 -4
- data/lib/teodoro/arquivo_xml.rb +4 -0
- data/lib/teodoro/empresa/arquivo_de_dados_gerais.rb +55 -0
- data/lib/teodoro/empresa/contratos_de_trabalho_sem_vinculo.rb +4 -1
- data/lib/teodoro/empresa.rb +14 -0
- data/lib/teodoro/leiaute/arquivo_s1298.rb +17 -0
- data/lib/teodoro/leiaute/arquivo_s1299.rb +17 -0
- data/lib/teodoro/leiaute/arquivo_s2200.rb +10 -1
- data/lib/teodoro/leiaute/arquivo_s2206.rb +6 -1
- data/lib/teodoro/leiaute/arquivo_s2230.rb +1 -0
- data/lib/teodoro/leiaute/arquivo_s2300.rb +1 -0
- data/lib/teodoro/leiaute/arquivo_s2306.rb +14 -3
- data/lib/teodoro/leiaute/arquivo_s2399.rb +14 -3
- data/lib/teodoro/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76c8918c7124a971c158c41b7c1d0de13c09b2f155fa2b7fc42be79a7807c805
|
4
|
+
data.tar.gz: 3e47d002a6482058c13c2e6a360edfa0f30aeacc3b0798a50de857ae15ec26ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47150df11fb3df6d7d2254a6cca993ff71bfaf12308fad4c98890ae8b9bd14682a4eb192b14538aee96dbc077718256fcec9edac9ba85a8708983e06c02504cb
|
7
|
+
data.tar.gz: 89b1f8e0712f195334b5fb4f074fc3b1bfc566098d59f524c26c7c0afb1c5f3ccc7168264eb43192bbc241fb83f8b37c77a2bf355b2332334549440ce79b21cb
|
data/lib/teodoro/arquivo_data.rb
CHANGED
@@ -33,13 +33,16 @@ module Teodoro
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def conteudo_do_arquivo
|
36
|
-
|
37
|
-
.map {
|
38
|
-
.
|
39
|
-
.reject { |_chave, valor| valor.vazio? }
|
36
|
+
itens_de_conteudo_ajustados
|
37
|
+
.map { |chave, valor, formato, opcoes| [chave, Valor.new(valor, formato: formato), opcoes] }
|
38
|
+
.reject { |_chave, valor, opcoes| valor.vazio? && !opcoes[:manter_se_vazio] }
|
40
39
|
.map { |chave, valor| "#{chave}=#{valor}" }
|
41
40
|
end
|
42
41
|
|
42
|
+
def itens_de_conteudo_ajustados
|
43
|
+
itens_do_conteudo.map { [_1[0], _1[1], _1.size == 1 ? :vazio : _1[2], _1[3] || {}] }
|
44
|
+
end
|
45
|
+
|
43
46
|
class Caminho
|
44
47
|
private
|
45
48
|
|
data/lib/teodoro/arquivo_xml.rb
CHANGED
@@ -11,6 +11,8 @@ require_relative 'leiaute/arquivo_s1030'
|
|
11
11
|
require_relative 'leiaute/arquivo_s1040'
|
12
12
|
require_relative 'leiaute/arquivo_s1050'
|
13
13
|
require_relative 'leiaute/arquivo_s1070'
|
14
|
+
require_relative 'leiaute/arquivo_s1298'
|
15
|
+
require_relative 'leiaute/arquivo_s1299'
|
14
16
|
require_relative 'leiaute/arquivo_s2190'
|
15
17
|
require_relative 'leiaute/arquivo_s2200'
|
16
18
|
require_relative 'leiaute/arquivo_s2205'
|
@@ -39,6 +41,8 @@ module Teodoro
|
|
39
41
|
S1040
|
40
42
|
S1050
|
41
43
|
S1070
|
44
|
+
S1298
|
45
|
+
S1299
|
42
46
|
S2190
|
43
47
|
S2200
|
44
48
|
S2205
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Teodoro
|
2
|
+
class Empresa
|
3
|
+
class ArquivoDeDadosGerais
|
4
|
+
def initialize(empresa:, destino:)
|
5
|
+
@empresa = empresa
|
6
|
+
@destino = destino
|
7
|
+
end
|
8
|
+
|
9
|
+
attr_reader :empresa, :destino
|
10
|
+
|
11
|
+
def gerar # rubocop:disable Metrics/MethodLength
|
12
|
+
ArquivoData.new(
|
13
|
+
diretorio: destino,
|
14
|
+
nome: 'DADOS_GERAIS',
|
15
|
+
itens_do_conteudo: [
|
16
|
+
[
|
17
|
+
'ULTIMA_COMPETENCIA_FECHADA',
|
18
|
+
ultima_competencia_fechada,
|
19
|
+
:mes_ano,
|
20
|
+
{ manter_se_vazio: true }
|
21
|
+
],
|
22
|
+
[
|
23
|
+
'ULTIMA_COMPETENCIA_FECHADA_DECIMO_TERCEIRO',
|
24
|
+
ultima_competencia_fechada_decimo_terceiro,
|
25
|
+
nil,
|
26
|
+
{ manter_se_vazio: true }
|
27
|
+
]
|
28
|
+
]
|
29
|
+
).criar
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def ultima_competencia_fechada
|
35
|
+
meses_anos.max
|
36
|
+
end
|
37
|
+
|
38
|
+
def meses_anos
|
39
|
+
competencias_encerradas.grep(/^\d{4}-\d{2}$/)
|
40
|
+
end
|
41
|
+
|
42
|
+
def competencias_encerradas
|
43
|
+
empresa.competencias_encerradas
|
44
|
+
end
|
45
|
+
|
46
|
+
def ultima_competencia_fechada_decimo_terceiro
|
47
|
+
anos.max
|
48
|
+
end
|
49
|
+
|
50
|
+
def anos
|
51
|
+
competencias_encerradas.grep(/^\d{4}$/)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -16,7 +16,9 @@ module Teodoro
|
|
16
16
|
trabalhadores << inicio_de_contrato.trabalhador
|
17
17
|
end
|
18
18
|
|
19
|
-
def [](cpf_do_trabalhador:, categoria_do_trabalhador:, data:)
|
19
|
+
def [](cpf_do_trabalhador:, matricula_do_trabalhador:, categoria_do_trabalhador:, data:)
|
20
|
+
return contratos.find { _1.matricula_do_trabalhador == matricula_do_trabalhador } if matricula_do_trabalhador
|
21
|
+
|
20
22
|
contratos
|
21
23
|
.select do |contrato|
|
22
24
|
contrato.trabalhador.cpf == cpf_do_trabalhador &&
|
@@ -58,6 +60,7 @@ module Teodoro
|
|
58
60
|
|
59
61
|
def_delegators :inicio_de_contrato,
|
60
62
|
:trabalhador,
|
63
|
+
:matricula_do_trabalhador,
|
61
64
|
:categoria_do_trabalhador,
|
62
65
|
:data_de_inicio,
|
63
66
|
:recibo
|
data/lib/teodoro/empresa.rb
CHANGED
@@ -3,6 +3,7 @@ require_relative 'arquivo_xml'
|
|
3
3
|
require_relative 'empresa/arquivos_data'
|
4
4
|
require_relative 'empresa/arquivo_data_emp'
|
5
5
|
require_relative 'empresa/arquivo_data_rub'
|
6
|
+
require_relative 'empresa/arquivo_de_dados_gerais'
|
6
7
|
require_relative 'empresa/cargos_gerados'
|
7
8
|
require_relative 'empresa/contratos_de_emprego'
|
8
9
|
require_relative 'empresa/contratos_de_trabalho_sem_vinculo'
|
@@ -49,6 +50,7 @@ module Teodoro
|
|
49
50
|
classificar_arquivos_xml
|
50
51
|
ordenar_arquivos_xml
|
51
52
|
processar_arquivos_xml
|
53
|
+
gerar_arquivo_de_dados_gerais
|
52
54
|
processar_cargos_gerados
|
53
55
|
processar_funcoes_geradas
|
54
56
|
setar_proximo_identificador_de_tabela_de_rubricas_nos_arquivos_data_emp
|
@@ -63,6 +65,10 @@ module Teodoro
|
|
63
65
|
@arquivos_data ||= ArquivosData.new(destino_dos_arquivos_data)
|
64
66
|
end
|
65
67
|
|
68
|
+
def competencias_encerradas
|
69
|
+
@competencias_encerradas ||= []
|
70
|
+
end
|
71
|
+
|
66
72
|
def trabalhadores
|
67
73
|
@trabalhadores ||= Trabalhadores.new
|
68
74
|
end
|
@@ -159,6 +165,14 @@ module Teodoro
|
|
159
165
|
arquivos_xml.shift.processar while arquivos_xml.any?
|
160
166
|
end
|
161
167
|
|
168
|
+
def gerar_arquivo_de_dados_gerais
|
169
|
+
arquivo_de_dados_gerais.gerar
|
170
|
+
end
|
171
|
+
|
172
|
+
def arquivo_de_dados_gerais
|
173
|
+
ArquivoDeDadosGerais.new(empresa: self, destino: destino_dos_arquivos_data)
|
174
|
+
end
|
175
|
+
|
162
176
|
def processar_cargos_gerados
|
163
177
|
cargos_gerados.each(&:processar)
|
164
178
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Teodoro
|
2
|
+
module Leiaute
|
3
|
+
class ArquivoS1298
|
4
|
+
include ArquivoDeEvento
|
5
|
+
|
6
|
+
def processar
|
7
|
+
empresa.competencias_encerradas.delete(periodo_de_apuracao)
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def periodo_de_apuracao
|
13
|
+
evento['ideEvento/perApur']
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Teodoro
|
2
|
+
module Leiaute
|
3
|
+
class ArquivoS1299
|
4
|
+
include ArquivoDeEvento
|
5
|
+
|
6
|
+
def processar
|
7
|
+
empresa.competencias_encerradas << periodo_de_apuracao
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def periodo_de_apuracao
|
13
|
+
evento['ideEvento/perApur']
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -276,7 +276,16 @@ module Teodoro
|
|
276
276
|
['EventoAdmissao_InfoVinculo_CodigoMotivoAfastamento', evento['vinculo/afastamento/codMotAfast']],
|
277
277
|
['EventoAdmissao_InfoVinculo_SucessaoVinculo_DataTransferencia', evento['vinculo/sucessaoVinc/dtTransf'], :data],
|
278
278
|
leiaute['EventoAdmissao_InfoVinculo_SucessaoVinculo_CnpjEmpregadorAnterior'],
|
279
|
-
['EventoAdmissao_InfoVinculo_SucessaoVinculo_MatriculaAnterior', evento['vinculo/sucessaoVinc/matricAnt']]
|
279
|
+
['EventoAdmissao_InfoVinculo_SucessaoVinculo_MatriculaAnterior', evento['vinculo/sucessaoVinc/matricAnt']],
|
280
|
+
*(
|
281
|
+
if leiaute_simplificado?
|
282
|
+
evento.*('vinculo/infoContrato/treiCap').map.with_index(1) do |treinamento_capacitacao, seq|
|
283
|
+
[
|
284
|
+
["treiCap_#{seq}_codTreiCap", treinamento_capacitacao['codTreiCap']]
|
285
|
+
]
|
286
|
+
end.sum([])
|
287
|
+
end
|
288
|
+
)
|
280
289
|
# rubocop:enable Layout/LineLength
|
281
290
|
]
|
282
291
|
)
|
@@ -192,7 +192,12 @@ module Teodoro
|
|
192
192
|
['InformacoesContrato_HorarioContratual_DescricaoTipoJornada', evento['altContratual/vinculo/infoContrato/horContratual/dscJorn']],
|
193
193
|
['InformacoesContrato_CodigoCargo', codigo_do_cargo],
|
194
194
|
['InformacoesContrato_CodigoFuncao', codigo_da_funcao],
|
195
|
-
['InformacoesContrato_DataTermino', evento['altContratual/vinculo/infoContrato/duracao/dtTerm'], :data]
|
195
|
+
['InformacoesContrato_DataTermino', evento['altContratual/vinculo/infoContrato/duracao/dtTerm'], :data],
|
196
|
+
*evento.*('altContratual/vinculo/infoContrato/treiCap').map.with_index(1) do |treinamento_capacitacao, seq|
|
197
|
+
[
|
198
|
+
["treiCap_#{seq}_codTreiCap", treinamento_capacitacao['codTreiCap']]
|
199
|
+
]
|
200
|
+
end.sum([])
|
196
201
|
# rubocop:enable Layout/LineLength
|
197
202
|
]
|
198
203
|
end
|
@@ -83,6 +83,7 @@ module Teodoro
|
|
83
83
|
def contrato_de_trabalho_sem_vinculo
|
84
84
|
@contrato_de_trabalho_sem_vinculo ||= contratos_de_trabalho_sem_vinculo[
|
85
85
|
cpf_do_trabalhador: cpf_do_trabalhador,
|
86
|
+
matricula_do_trabalhador: matricula_do_trabalhador,
|
86
87
|
categoria_do_trabalhador: categoria_do_trabalhador,
|
87
88
|
data: inicio_do_afastamento? ? data_de_inicio_do_afastamento : data_de_termino_do_afastamento
|
88
89
|
]
|
@@ -25,6 +25,7 @@ module Teodoro
|
|
25
25
|
def inicio_de_contrato
|
26
26
|
@inicio_de_contrato ||= Obj.new(
|
27
27
|
trabalhador: trabalhador,
|
28
|
+
matricula_do_trabalhador: evento['infoTSVInicio/matricula'],
|
28
29
|
categoria_do_trabalhador: evento['infoTSVInicio/codCateg'],
|
29
30
|
data_de_inicio: evento['infoTSVInicio/dtInicio'],
|
30
31
|
matricula: evento['infoTSVInicio/matricula'],
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Teodoro
|
2
2
|
module Leiaute
|
3
|
-
class ArquivoS2306
|
3
|
+
class ArquivoS2306 # rubocop:disable Metrics/ClassLength
|
4
4
|
include ArquivoDeEventoNaoPeriodico
|
5
5
|
|
6
6
|
private
|
@@ -17,6 +17,7 @@ module Teodoro
|
|
17
17
|
itens_do_conteudo: [
|
18
18
|
# rubocop:disable Layout/LineLength
|
19
19
|
['ESX_CPF', cpf_do_trabalhador],
|
20
|
+
['matricula', matricula_do_trabalhador],
|
20
21
|
['ESX_CATEGORIA', categoria_do_trabalhador],
|
21
22
|
%w[ESX_SEMVINCULO 1],
|
22
23
|
['ESX_DATAADMISSAO', data_de_inicio, :data],
|
@@ -69,8 +70,17 @@ module Teodoro
|
|
69
70
|
@cpf_do_trabalhador ||= evento['ideTrabSemVinculo/cpfTrab']
|
70
71
|
end
|
71
72
|
|
73
|
+
def matricula_do_trabalhador
|
74
|
+
@matricula_do_trabalhador ||= evento['ideTrabSemVinculo/matricula']
|
75
|
+
end
|
76
|
+
|
72
77
|
def categoria_do_trabalhador
|
73
|
-
@categoria_do_trabalhador ||=
|
78
|
+
@categoria_do_trabalhador ||=
|
79
|
+
if matricula_do_trabalhador
|
80
|
+
contrato_de_trabalho.categoria_do_trabalhador
|
81
|
+
else
|
82
|
+
evento['ideTrabSemVinculo/codCateg']
|
83
|
+
end
|
74
84
|
end
|
75
85
|
|
76
86
|
def data_de_inicio
|
@@ -80,7 +90,8 @@ module Teodoro
|
|
80
90
|
def contrato_de_trabalho
|
81
91
|
contratos_de_trabalho_sem_vinculo[
|
82
92
|
cpf_do_trabalhador: cpf_do_trabalhador,
|
83
|
-
|
93
|
+
matricula_do_trabalhador: matricula_do_trabalhador,
|
94
|
+
categoria_do_trabalhador: (categoria_do_trabalhador unless matricula_do_trabalhador),
|
84
95
|
data: data_da_alteracao
|
85
96
|
]
|
86
97
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Teodoro
|
2
2
|
module Leiaute
|
3
|
-
class ArquivoS2399
|
3
|
+
class ArquivoS2399 # rubocop:disable Metrics/ClassLength
|
4
4
|
include ArquivoDeEventoNaoPeriodico
|
5
5
|
|
6
6
|
private
|
@@ -18,7 +18,8 @@ module Teodoro
|
|
18
18
|
def contrato_de_trabalho
|
19
19
|
@contrato_de_trabalho ||= contratos_de_trabalho_sem_vinculo[
|
20
20
|
cpf_do_trabalhador: cpf_do_trabalhador,
|
21
|
-
|
21
|
+
matricula_do_trabalhador: matricula_do_trabalhador,
|
22
|
+
categoria_do_trabalhador: (categoria_do_trabalhador unless matricula_do_trabalhador),
|
22
23
|
data: data_do_termino
|
23
24
|
]
|
24
25
|
end
|
@@ -31,12 +32,21 @@ module Teodoro
|
|
31
32
|
@data_do_termino ||= evento['infoTSVTermino/dtTerm']
|
32
33
|
end
|
33
34
|
|
35
|
+
def matricula_do_trabalhador
|
36
|
+
@matricula_do_trabalhador ||= evento['ideTrabSemVinculo/matricula']
|
37
|
+
end
|
38
|
+
|
34
39
|
def cpf_do_trabalhador
|
35
40
|
@cpf_do_trabalhador ||= evento['ideTrabSemVinculo/cpfTrab']
|
36
41
|
end
|
37
42
|
|
38
43
|
def categoria_do_trabalhador
|
39
|
-
@categoria_do_trabalhador ||=
|
44
|
+
@categoria_do_trabalhador ||=
|
45
|
+
if matricula_do_trabalhador
|
46
|
+
contrato_de_trabalho.categoria_do_trabalhador
|
47
|
+
else
|
48
|
+
evento['ideTrabSemVinculo/codCateg']
|
49
|
+
end
|
40
50
|
end
|
41
51
|
|
42
52
|
def dados_dos_arquivos_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
@@ -46,6 +56,7 @@ module Teodoro
|
|
46
56
|
itens_do_conteudo: [
|
47
57
|
# rubocop:disable Layout/LineLength
|
48
58
|
['ESX_CPF', cpf_do_trabalhador],
|
59
|
+
['matricula', matricula_do_trabalhador],
|
49
60
|
['ESX_CATEGORIA', categoria_do_trabalhador],
|
50
61
|
%w[ESX_SEMVINCULO 1],
|
51
62
|
['ESX_DATAADMISSAO', data_de_inicio],
|
data/lib/teodoro/version.rb
CHANGED
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.
|
4
|
+
version: 0.46.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fortes Tecnologia
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -203,6 +203,7 @@ files:
|
|
203
203
|
- lib/teodoro/empresa.rb
|
204
204
|
- lib/teodoro/empresa/arquivo_data_emp.rb
|
205
205
|
- lib/teodoro/empresa/arquivo_data_rub.rb
|
206
|
+
- lib/teodoro/empresa/arquivo_de_dados_gerais.rb
|
206
207
|
- lib/teodoro/empresa/arquivos_data.rb
|
207
208
|
- lib/teodoro/empresa/cargos_gerados.rb
|
208
209
|
- lib/teodoro/empresa/contratos_de_emprego.rb
|
@@ -217,6 +218,8 @@ files:
|
|
217
218
|
- lib/teodoro/leiaute/arquivo_s1040.rb
|
218
219
|
- lib/teodoro/leiaute/arquivo_s1050.rb
|
219
220
|
- lib/teodoro/leiaute/arquivo_s1070.rb
|
221
|
+
- lib/teodoro/leiaute/arquivo_s1298.rb
|
222
|
+
- lib/teodoro/leiaute/arquivo_s1299.rb
|
220
223
|
- lib/teodoro/leiaute/arquivo_s2190.rb
|
221
224
|
- lib/teodoro/leiaute/arquivo_s2200.rb
|
222
225
|
- lib/teodoro/leiaute/arquivo_s2205.rb
|