teodoro 0.50.0 → 0.51.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/tra_epg_avi.rb +4 -0
- data/lib/teodoro/arquivo_data.rb +100 -32
- data/lib/teodoro/arquivo_de_evento_de_tabela.rb +3 -3
- data/lib/teodoro/arquivo_de_evento_nao_periodico.rb +4 -3
- data/lib/teodoro/empresa/arquivo_de_dados_gerais.rb +2 -2
- data/lib/teodoro/empresa/cargos_gerados.rb +3 -3
- data/lib/teodoro/empresa/contratos_de_emprego.rb +0 -4
- data/lib/teodoro/empresa/contratos_de_trabalho_sem_vinculo.rb +0 -4
- data/lib/teodoro/empresa/funcoes_geradas.rb +3 -3
- data/lib/teodoro/empresa.rb +4 -11
- data/lib/teodoro/leiaute/arquivo_s1000.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s2190.rb +1 -0
- data/lib/teodoro/leiaute/arquivo_s2200.rb +152 -136
- data/lib/teodoro/leiaute/arquivo_s2205.rb +173 -97
- data/lib/teodoro/leiaute/arquivo_s2206.rb +19 -2
- data/lib/teodoro/leiaute/arquivo_s2210.rb +1 -0
- data/lib/teodoro/leiaute/arquivo_s2220.rb +1 -0
- data/lib/teodoro/leiaute/arquivo_s2230.rb +21 -4
- data/lib/teodoro/leiaute/arquivo_s2240.rb +1 -0
- data/lib/teodoro/leiaute/arquivo_s2299.rb +8 -97
- data/lib/teodoro/leiaute/arquivo_s2300.rb +120 -4
- data/lib/teodoro/leiaute/arquivo_s2306.rb +21 -1
- data/lib/teodoro/leiaute/arquivo_s2399.rb +5 -59
- data/lib/teodoro/leiaute/arquivo_s2500.rb +1 -0
- data/lib/teodoro/leiaute/arquivo_s2501.rb +1 -0
- data/lib/teodoro/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 65669a9ee3ad1d0358849fa220e2720d08452c9a8c4f2d4154f979cca4d45edd
|
4
|
+
data.tar.gz: 00f23d7d9103fb178f932a18976c36ebffb8d79f23eb943f28f3b5069af0800f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d88f0c9d65b366f806c99f148d637196fa10aab61bc7b2b65853e25f64183a443462ad2722c6dd8c8112c440aad87050b365455563cc59b09d62f0a35be4fba
|
7
|
+
data.tar.gz: 801996ba495dc23d1da40a4e3b321236ffc0a0781ceaeb8a96b9c9778bb543ec97d1bbee500b35549c86746dcfa0e0e6029a8ca003bc5c7fedd1f0017c0dbb28
|
data/lib/teodoro/arquivo_data.rb
CHANGED
@@ -6,8 +6,9 @@ module Teodoro
|
|
6
6
|
class ArquivoData
|
7
7
|
private
|
8
8
|
|
9
|
-
def initialize(diretorio:, nome:, itens_do_conteudo:)
|
9
|
+
def initialize(diretorio:, nome:, itens_do_conteudo:, operacao: :inclusao)
|
10
10
|
@diretorio = diretorio
|
11
|
+
@operacao = operacao
|
11
12
|
@nome = nome
|
12
13
|
@itens_do_conteudo = itens_do_conteudo
|
13
14
|
end
|
@@ -16,31 +17,59 @@ module Teodoro
|
|
16
17
|
|
17
18
|
public
|
18
19
|
|
19
|
-
attr_reader :nome
|
20
|
+
attr_reader :operacao, :nome
|
20
21
|
|
21
|
-
def
|
22
|
-
|
22
|
+
def salvar
|
23
|
+
if inclusao_de_arquivo?
|
24
|
+
raise 'evento duplicado' if File.exist?(caminho)
|
25
|
+
elsif atualizacao_de_arquivo?
|
26
|
+
raise 'evento não encontrado' unless File.exist?(caminho)
|
27
|
+
|
28
|
+
salvar_conteudo_do_arquivo_original
|
29
|
+
end
|
23
30
|
|
24
31
|
File.open(caminho, 'w') do |file|
|
25
|
-
file.puts(
|
32
|
+
file.puts(linhas_do_arquivo)
|
26
33
|
end
|
27
34
|
end
|
28
35
|
|
29
36
|
private
|
30
37
|
|
38
|
+
def inclusao_de_arquivo?
|
39
|
+
operacao == :inclusao
|
40
|
+
end
|
41
|
+
|
42
|
+
def atualizacao_de_arquivo?
|
43
|
+
operacao == :atualizacao
|
44
|
+
end
|
45
|
+
|
46
|
+
def salvar_conteudo_do_arquivo_original
|
47
|
+
chaves_valores_do_arquivo_original
|
48
|
+
end
|
49
|
+
|
50
|
+
def chaves_valores_do_arquivo_original
|
51
|
+
@chaves_valores_do_arquivo_original ||=
|
52
|
+
File
|
53
|
+
.readlines(caminho)
|
54
|
+
.to_h { _1.match(/^(.+)=(.*)$/)[1..2] }
|
55
|
+
end
|
56
|
+
|
31
57
|
def caminho
|
32
58
|
@caminho ||= Caminho.new(diretorio: diretorio, nome_do_arquivo: nome)
|
33
59
|
end
|
34
60
|
|
35
|
-
def
|
36
|
-
|
37
|
-
.map { |chave, valor, formato, opcoes| [chave, Valor.new(valor, formato: formato), opcoes] }
|
38
|
-
.reject { |_chave, valor, opcoes| valor.vazio? && !opcoes[:manter_se_vazio] }
|
39
|
-
.map { |chave, valor| "#{chave}=#{valor}" }
|
61
|
+
def linhas_do_arquivo
|
62
|
+
chaves_valores.map { |chave, valor| "#{chave}=#{valor}" }
|
40
63
|
end
|
41
64
|
|
42
|
-
def
|
43
|
-
itens_do_conteudo.
|
65
|
+
def chaves_valores
|
66
|
+
ChavesValores.new(itens_do_conteudo).then do |chaves_valores|
|
67
|
+
if inclusao_de_arquivo?
|
68
|
+
chaves_valores
|
69
|
+
elsif atualizacao_de_arquivo?
|
70
|
+
chaves_valores_do_arquivo_original.merge(chaves_valores)
|
71
|
+
end
|
72
|
+
end
|
44
73
|
end
|
45
74
|
|
46
75
|
class Caminho
|
@@ -64,33 +93,72 @@ module Teodoro
|
|
64
93
|
end
|
65
94
|
end
|
66
95
|
|
67
|
-
class
|
68
|
-
|
69
|
-
bool: proc { _1 ? 'True' : 'False' },
|
70
|
-
data: proc { "#{_1[-2..]}/#{_1[5..6]}/#{_1[0..3]}" if _1 },
|
71
|
-
data_aaaammdd: proc { _1.delete('-') if _1 },
|
72
|
-
decimal: proc { _1.tr('.', ',') if _1 },
|
73
|
-
mes_ano: proc { "#{_1[-2..]}/#{_1[0..3]}" if _1 },
|
74
|
-
vazio: proc {}
|
75
|
-
}.freeze
|
96
|
+
class ChavesValores
|
97
|
+
extend Forwardable
|
76
98
|
|
77
|
-
|
99
|
+
def initialize(itens)
|
100
|
+
@itens = itens
|
101
|
+
.map { Item.new(*_1) }
|
102
|
+
.select(&:selecionar?)
|
103
|
+
.map { [_1.chave, _1.valor] }
|
104
|
+
end
|
105
|
+
|
106
|
+
def_delegators :itens, :map
|
78
107
|
|
79
|
-
def
|
80
|
-
|
81
|
-
@formato = formato
|
108
|
+
def to_hash
|
109
|
+
itens.to_h
|
82
110
|
end
|
83
111
|
|
84
|
-
|
112
|
+
private
|
85
113
|
|
86
|
-
|
114
|
+
attr_reader :itens
|
87
115
|
|
88
|
-
|
89
|
-
|
90
|
-
|
116
|
+
class Item
|
117
|
+
def initialize(*args)
|
118
|
+
@chave = args[0]
|
119
|
+
@valor = Valor.new(args[1], formato: args.size == 1 ? :vazio : args[2])
|
120
|
+
@opcoes = args[3] || {}
|
121
|
+
end
|
122
|
+
|
123
|
+
attr_reader :chave, :valor
|
124
|
+
|
125
|
+
def selecionar?
|
126
|
+
!valor.vazio? || opcoes[:manter_se_vazio]
|
127
|
+
end
|
128
|
+
|
129
|
+
private
|
130
|
+
|
131
|
+
attr_reader :opcoes
|
132
|
+
|
133
|
+
class Valor
|
134
|
+
FORMATADORES = {
|
135
|
+
bool: proc { _1 ? 'True' : 'False' },
|
136
|
+
data: proc { "#{_1[-2..]}/#{_1[5..6]}/#{_1[0..3]}" if _1 },
|
137
|
+
data_aaaammdd: proc { _1.delete('-') if _1 },
|
138
|
+
decimal: proc { _1.tr('.', ',') if _1 },
|
139
|
+
mes_ano: proc { "#{_1[-2..]}/#{_1[0..3]}" if _1 },
|
140
|
+
vazio: proc {}
|
141
|
+
}.freeze
|
142
|
+
|
143
|
+
private
|
144
|
+
|
145
|
+
def initialize(valor, formato:)
|
146
|
+
@valor = valor
|
147
|
+
@formato = formato
|
148
|
+
end
|
149
|
+
|
150
|
+
attr_reader :valor, :formato
|
151
|
+
|
152
|
+
public
|
153
|
+
|
154
|
+
def vazio?
|
155
|
+
to_s.empty? && formato != :vazio
|
156
|
+
end
|
91
157
|
|
92
|
-
|
93
|
-
|
158
|
+
def to_s
|
159
|
+
@to_s ||= (formato ? FORMATADORES[formato].call(valor) : valor).to_s
|
160
|
+
end
|
161
|
+
end
|
94
162
|
end
|
95
163
|
end
|
96
164
|
end
|
@@ -6,7 +6,7 @@ module Teodoro
|
|
6
6
|
deletar_arquivo_data_original if alteracao? || exclusao?
|
7
7
|
return if exclusao?
|
8
8
|
|
9
|
-
|
9
|
+
salvar_arquivo_data
|
10
10
|
end
|
11
11
|
|
12
12
|
private
|
@@ -46,8 +46,8 @@ module Teodoro
|
|
46
46
|
evento[noh_de_informacoes_do_evento, '*', noh_de_identificacao_do_periodo, 'iniValid']
|
47
47
|
end
|
48
48
|
|
49
|
-
def
|
50
|
-
arquivo_data.
|
49
|
+
def salvar_arquivo_data
|
50
|
+
arquivo_data.salvar
|
51
51
|
end
|
52
52
|
|
53
53
|
def inicio_da_validade
|
@@ -7,7 +7,7 @@ module Teodoro
|
|
7
7
|
processar_retificacao
|
8
8
|
else
|
9
9
|
registrar_arquivos_data
|
10
|
-
|
10
|
+
salvar_arquivos_data
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
@@ -38,14 +38,15 @@ module Teodoro
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
def
|
42
|
-
arquivos_data.shift.
|
41
|
+
def salvar_arquivos_data
|
42
|
+
arquivos_data.shift.salvar while arquivos_data.any?
|
43
43
|
end
|
44
44
|
|
45
45
|
def arquivos_data
|
46
46
|
@arquivos_data ||= dados_dos_arquivos_data.map do |dados_do_arquivo_data|
|
47
47
|
ArquivoData.new(
|
48
48
|
diretorio: empresa.destino_dos_arquivos_data,
|
49
|
+
operacao: dados_do_arquivo_data.operacao,
|
49
50
|
nome: dados_do_arquivo_data.nome,
|
50
51
|
itens_do_conteudo: dados_do_arquivo_data.itens_do_conteudo
|
51
52
|
)
|
@@ -8,7 +8,7 @@ module Teodoro
|
|
8
8
|
|
9
9
|
attr_reader :empresa, :destino
|
10
10
|
|
11
|
-
def
|
11
|
+
def salvar # rubocop:disable Metrics/MethodLength
|
12
12
|
ArquivoData.new(
|
13
13
|
diretorio: destino,
|
14
14
|
nome: 'DADOS_GERAIS',
|
@@ -26,7 +26,7 @@ module Teodoro
|
|
26
26
|
{ manter_se_vazio: true }
|
27
27
|
]
|
28
28
|
]
|
29
|
-
).
|
29
|
+
).salvar
|
30
30
|
end
|
31
31
|
|
32
32
|
private
|
@@ -48,13 +48,13 @@ module Teodoro
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def processar
|
51
|
-
|
51
|
+
salvar_arquivo_data
|
52
52
|
end
|
53
53
|
|
54
54
|
private
|
55
55
|
|
56
|
-
def
|
57
|
-
arquivo_data.
|
56
|
+
def salvar_arquivo_data
|
57
|
+
arquivo_data.salvar
|
58
58
|
end
|
59
59
|
|
60
60
|
def arquivo_data # rubocop:disable Metrics/MethodLength
|
@@ -11,10 +11,6 @@ module Teodoro
|
|
11
11
|
|
12
12
|
public
|
13
13
|
|
14
|
-
def to_a
|
15
|
-
contratos
|
16
|
-
end
|
17
|
-
|
18
14
|
def registrar_admissao(admissao:, inicio_de_afastamento:)
|
19
15
|
contratos_por_matricula[admissao.matricula_do_trabalhador] =
|
20
16
|
Contrato.new(admissao: admissao, inicio_de_afastamento: inicio_de_afastamento)
|
@@ -11,10 +11,6 @@ module Teodoro
|
|
11
11
|
|
12
12
|
public
|
13
13
|
|
14
|
-
def to_a
|
15
|
-
contratos
|
16
|
-
end
|
17
|
-
|
18
14
|
def registrar_inicio_de_contrato(inicio_de_contrato:, inicio_de_afastamento:)
|
19
15
|
contratos << Contrato.new(inicio_de_contrato: inicio_de_contrato, inicio_de_afastamento: inicio_de_afastamento)
|
20
16
|
trabalhadores << inicio_de_contrato.trabalhador
|
@@ -48,13 +48,13 @@ module Teodoro
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def processar
|
51
|
-
|
51
|
+
salvar_arquivo_data
|
52
52
|
end
|
53
53
|
|
54
54
|
private
|
55
55
|
|
56
|
-
def
|
57
|
-
arquivo_data.
|
56
|
+
def salvar_arquivo_data
|
57
|
+
arquivo_data.salvar
|
58
58
|
end
|
59
59
|
|
60
60
|
def arquivo_data # rubocop:disable Metrics/MethodLength
|
data/lib/teodoro/empresa.rb
CHANGED
@@ -51,7 +51,7 @@ module Teodoro
|
|
51
51
|
classificar_arquivos_xml
|
52
52
|
ordenar_arquivos_xml
|
53
53
|
processar_arquivos_xml
|
54
|
-
|
54
|
+
salvar_arquivo_de_dados_gerais
|
55
55
|
processar_cargos_gerados
|
56
56
|
processar_funcoes_geradas
|
57
57
|
remover_matricula_do_nome_dos_arquivos_data_de_admissao_de_trabalhador_sem_vinculo
|
@@ -92,14 +92,7 @@ module Teodoro
|
|
92
92
|
end
|
93
93
|
|
94
94
|
def inicios_de_afastamento_por_numero_do_recibo
|
95
|
-
|
96
|
-
.sum([], &:inicios_de_afastamento)
|
97
|
-
.group_by(&:numero_do_recibo)
|
98
|
-
.transform_values { _1.size == 1 ? _1.first : raise }
|
99
|
-
end
|
100
|
-
|
101
|
-
def contratos_de_trabalho
|
102
|
-
[*contratos_de_emprego, *contratos_de_trabalho_sem_vinculo]
|
95
|
+
@inicios_de_afastamento_por_numero_do_recibo ||= {}
|
103
96
|
end
|
104
97
|
|
105
98
|
private
|
@@ -178,8 +171,8 @@ module Teodoro
|
|
178
171
|
arquivos_xml.shift.processar while arquivos_xml.any?
|
179
172
|
end
|
180
173
|
|
181
|
-
def
|
182
|
-
arquivo_de_dados_gerais.
|
174
|
+
def salvar_arquivo_de_dados_gerais
|
175
|
+
arquivo_de_dados_gerais.salvar
|
183
176
|
end
|
184
177
|
|
185
178
|
def arquivo_de_dados_gerais
|