teodoro 0.6.1 → 0.7.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_de_evento_nao_periodico.rb +10 -3
- data/lib/teodoro/arquivo_de_evento_retificavel.rb +8 -8
- data/lib/teodoro/arquivo_xml.rb +38 -16
- data/lib/teodoro/empresa.rb +182 -160
- data/lib/teodoro/leiaute/arquivo_s2190.rb +1 -3
- data/lib/teodoro/leiaute/arquivo_s2200.rb +11 -31
- data/lib/teodoro/leiaute/arquivo_s2205.rb +5 -6
- data/lib/teodoro/leiaute/arquivo_s2230.rb +0 -1
- data/lib/teodoro/leiaute/arquivo_s2300.rb +18 -38
- data/lib/teodoro/leiaute/arquivo_s2306.rb +0 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 948116a90b820e721da13b71f2abee576b7154819653eecf1ef63452b9375c9b
|
4
|
+
data.tar.gz: c23144f5cae471db91509309da02f1b611218082ba3af45bfc31b7d6b2ae74d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf4ed05a27bc7ecde19dbd6a98115d464d736d3a2da197a37240e42946bd3df40ed4e55d0a96cdbde81321558f3659656aeea1b99114ef66daf360abd0430460
|
7
|
+
data.tar.gz: f6a047db79b4da62c8b6783765e4e398fe15ae07ed99dfd55a9eefcd48b0f783bdd782d333af98fc94f1784448f2fa0f3c13fb4955f95ef8fbe3ba409cbbeb85
|
@@ -4,9 +4,12 @@ module Teodoro
|
|
4
4
|
include ArquivoDeEventoRetificavel
|
5
5
|
|
6
6
|
def processar
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
if retificado?
|
8
|
+
processar_retificacao
|
9
|
+
else
|
10
|
+
registrar_arquivo_data
|
11
|
+
criar_arquivo_data
|
12
|
+
end
|
10
13
|
end
|
11
14
|
|
12
15
|
private
|
@@ -18,6 +21,10 @@ module Teodoro
|
|
18
21
|
)
|
19
22
|
end
|
20
23
|
|
24
|
+
def arquivos_data
|
25
|
+
empresa.arquivos_data
|
26
|
+
end
|
27
|
+
|
21
28
|
def caminho_do_arquivo_data
|
22
29
|
criar_caminho_do_arquivo_data(nome_do_arquivo_data)
|
23
30
|
end
|
@@ -4,20 +4,20 @@ module Teodoro
|
|
4
4
|
|
5
5
|
private
|
6
6
|
|
7
|
-
def
|
8
|
-
|
7
|
+
def retificado?
|
8
|
+
arquivo_xml_de_retificacao
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
12
|
-
|
11
|
+
def arquivo_xml_de_retificacao
|
12
|
+
@arquivo_xml_de_retificacao ||= arquivos_xml_por_recibo_a_retificar[numero_do_recibo]
|
13
13
|
end
|
14
14
|
|
15
|
-
def
|
16
|
-
empresa.
|
15
|
+
def arquivos_xml_por_recibo_a_retificar
|
16
|
+
empresa.arquivos_xml_por_recibo_a_retificar
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
20
|
-
|
19
|
+
def processar_retificacao
|
20
|
+
arquivo_xml_de_retificacao.processar
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
data/lib/teodoro/arquivo_xml.rb
CHANGED
@@ -9,7 +9,7 @@ require_relative 'leiaute'
|
|
9
9
|
require_relative 'xml'
|
10
10
|
|
11
11
|
module Teodoro
|
12
|
-
class ArquivoXML
|
12
|
+
class ArquivoXML # rubocop:disable Metrics/ClassLength
|
13
13
|
TIPOS_DE_EVENTO_PROCESSAVEIS = %w[
|
14
14
|
S1000
|
15
15
|
S1005
|
@@ -32,6 +32,18 @@ module Teodoro
|
|
32
32
|
S3000
|
33
33
|
].freeze
|
34
34
|
|
35
|
+
TIPOS_DE_EVENTO_RETIFICAVEIS = %w[
|
36
|
+
S2200
|
37
|
+
S2205
|
38
|
+
S2206
|
39
|
+
S2230
|
40
|
+
S2250
|
41
|
+
S2299
|
42
|
+
S2300
|
43
|
+
S2306
|
44
|
+
S2399
|
45
|
+
].freeze
|
46
|
+
|
35
47
|
private
|
36
48
|
|
37
49
|
def initialize(empresa:, caminho:)
|
@@ -43,16 +55,29 @@ module Teodoro
|
|
43
55
|
|
44
56
|
public
|
45
57
|
|
46
|
-
|
47
|
-
|
58
|
+
attr_reader :numero_do_recibo_a_retificar, :momento_de_processamento_pelo_e_social
|
59
|
+
|
60
|
+
# otimizacao do gerenciamento de memoria
|
61
|
+
def carregar
|
62
|
+
Console.print "carregando #{nome}.xml..."
|
63
|
+
|
64
|
+
evento, recibo =
|
65
|
+
carregar_xml
|
66
|
+
.then do |xml|
|
67
|
+
%w[evento recibo].map { XML.new(Nokogiri::XML(xml.css("eSocial/retornoProcessamentoDownload/#{_1}/*").to_s)) }
|
68
|
+
end
|
69
|
+
|
70
|
+
@retificacao = TIPOS_DE_EVENTO_RETIFICAVEIS.include?(tipo_de_evento) && evento['*/ideEvento/indRetif'] == '2'
|
71
|
+
@numero_do_recibo_a_retificar = evento['*/ideEvento/nrRecibo'] if retificacao?
|
72
|
+
@momento_de_processamento_pelo_e_social = recibo['retornoEvento/processamento/dhProcessamento']
|
48
73
|
end
|
49
74
|
|
50
|
-
def
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
75
|
+
def retificacao?
|
76
|
+
@retificacao
|
77
|
+
end
|
78
|
+
|
79
|
+
def processavel?
|
80
|
+
TIPOS_DE_EVENTO_PROCESSAVEIS.include?(tipo_de_evento)
|
56
81
|
end
|
57
82
|
|
58
83
|
def nome
|
@@ -60,17 +85,14 @@ module Teodoro
|
|
60
85
|
end
|
61
86
|
|
62
87
|
def processar
|
63
|
-
|
88
|
+
Console.print "processando #{nome}.xml..."
|
89
|
+
|
64
90
|
validar_versao_do_leiaute
|
65
91
|
processar_arquivo
|
66
92
|
end
|
67
93
|
|
68
94
|
private
|
69
95
|
|
70
|
-
def tipo_de_evento
|
71
|
-
@tipo_de_evento ||= nome[-6..].delete('-')
|
72
|
-
end
|
73
|
-
|
74
96
|
def carregar_xml
|
75
97
|
Nokogiri::XML(carregar_conteudo)
|
76
98
|
end
|
@@ -79,8 +101,8 @@ module Teodoro
|
|
79
101
|
File.read(caminho)
|
80
102
|
end
|
81
103
|
|
82
|
-
def
|
83
|
-
|
104
|
+
def tipo_de_evento
|
105
|
+
@tipo_de_evento ||= nome[-6..].delete('-')
|
84
106
|
end
|
85
107
|
|
86
108
|
def validar_versao_do_leiaute
|
data/lib/teodoro/empresa.rb
CHANGED
@@ -5,195 +5,222 @@ module Teodoro
|
|
5
5
|
class Empresa
|
6
6
|
private
|
7
7
|
|
8
|
-
def initialize(
|
9
|
-
@
|
10
|
-
@destino = File.join(destino, nome_do_diretorio)
|
8
|
+
def initialize(args)
|
9
|
+
@impl = Impl.new(**args)
|
11
10
|
end
|
12
11
|
|
13
|
-
attr_reader :
|
12
|
+
attr_reader :impl
|
14
13
|
|
15
14
|
public
|
16
15
|
|
17
16
|
def processar
|
18
|
-
|
19
|
-
criar_diretorio_destino
|
20
|
-
criar_diretorio_dos_arquivos_xml
|
21
|
-
descompactar_arquivos_de_origem
|
22
|
-
criar_diretorio_dos_arquivos_data
|
23
|
-
ordenar_arquivos_xml
|
24
|
-
processar_arquivos_xml
|
25
|
-
limpar_linha_de_feedback
|
17
|
+
impl.processar
|
26
18
|
end
|
27
19
|
|
28
|
-
|
29
|
-
|
30
|
-
def dar_feedback_para_o_usuario
|
31
|
-
puts Rainbow(nome_do_diretorio).green
|
32
|
-
end
|
33
|
-
|
34
|
-
def nome_do_diretorio
|
35
|
-
@nome_do_diretorio ||= File.basename(caminho)
|
36
|
-
end
|
37
|
-
|
38
|
-
def criar_diretorio_destino
|
39
|
-
Dir.mkdir(destino)
|
40
|
-
end
|
41
|
-
|
42
|
-
def criar_diretorio_dos_arquivos_xml
|
43
|
-
Dir.mkdir(destino_dos_arquivos_xml)
|
44
|
-
end
|
45
|
-
|
46
|
-
def destino_dos_arquivos_xml
|
47
|
-
@destino_dos_arquivos_xml ||= File.join(destino, 'xmls')
|
48
|
-
end
|
49
|
-
|
50
|
-
def descompactar_arquivos_de_origem
|
51
|
-
arquivos_de_origem.each(&:descompactar)
|
52
|
-
end
|
20
|
+
class Impl
|
21
|
+
private
|
53
22
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
23
|
+
def initialize(caminho:, destino:)
|
24
|
+
@caminho = caminho
|
25
|
+
@destino = File.join(destino, nome_do_diretorio)
|
26
|
+
end
|
58
27
|
|
59
|
-
|
60
|
-
Dir.mkdir(destino_dos_arquivos_data)
|
61
|
-
end
|
28
|
+
attr_reader :caminho, :destino
|
62
29
|
|
63
|
-
|
64
|
-
@destino_dos_arquivos_data ||= File.join(destino, 'data')
|
65
|
-
end
|
30
|
+
public
|
66
31
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
32
|
+
attr_reader :arquivos_xml_por_recibo_a_retificar
|
33
|
+
|
34
|
+
def processar
|
35
|
+
dar_feedback_para_o_usuario
|
36
|
+
criar_diretorio_destino
|
37
|
+
criar_diretorio_dos_arquivos_xml
|
38
|
+
descompactar_arquivos_de_origem
|
39
|
+
criar_diretorio_dos_arquivos_data
|
40
|
+
carregar_arquivos_xml
|
41
|
+
classificar_arquivos_xml
|
42
|
+
ordenar_arquivos_xml
|
43
|
+
processar_arquivos_xml
|
44
|
+
limpar_linha_de_feedback
|
45
|
+
end
|
71
46
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
end
|
47
|
+
def destino_dos_arquivos_data
|
48
|
+
@destino_dos_arquivos_data ||= File.join(destino, 'data')
|
49
|
+
end
|
76
50
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
.select(&:processavel?)
|
81
|
-
end
|
51
|
+
def arquivos_data
|
52
|
+
@arquivos_data ||= ArquivosData.new(destino_dos_arquivos_data)
|
53
|
+
end
|
82
54
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
arquivos_data: ArquivosData.new(destino_dos_arquivos_data),
|
87
|
-
contratos_de_emprego: ContratosDeEmprego.new,
|
88
|
-
contratos_de_trabalho_sem_vinculo: ContratosDeTrabalhoSemVinculo.new
|
89
|
-
)
|
90
|
-
end
|
55
|
+
def contratos_de_emprego
|
56
|
+
@contratos_de_emprego ||= ContratosDeEmprego.new
|
57
|
+
end
|
91
58
|
|
92
|
-
|
93
|
-
|
94
|
-
|
59
|
+
def contratos_de_trabalho_sem_vinculo
|
60
|
+
@contratos_de_trabalho_sem_vinculo ||= ContratosDeTrabalhoSemVinculo.new
|
61
|
+
end
|
95
62
|
|
96
|
-
class ArquivosData
|
97
63
|
private
|
98
64
|
|
99
|
-
def
|
100
|
-
|
65
|
+
def dar_feedback_para_o_usuario
|
66
|
+
puts Rainbow(nome_do_diretorio).green
|
101
67
|
end
|
102
68
|
|
103
|
-
|
69
|
+
def nome_do_diretorio
|
70
|
+
@nome_do_diretorio ||= File.basename(caminho)
|
71
|
+
end
|
104
72
|
|
105
|
-
|
73
|
+
def criar_diretorio_destino
|
74
|
+
Dir.mkdir(destino)
|
75
|
+
end
|
106
76
|
|
107
|
-
def
|
108
|
-
(
|
77
|
+
def criar_diretorio_dos_arquivos_xml
|
78
|
+
Dir.mkdir(destino_dos_arquivos_xml)
|
109
79
|
end
|
110
80
|
|
111
|
-
def
|
112
|
-
|
113
|
-
.map { |nome| File.join(destino_dos_arquivos_data, "#{nome}.data") }
|
114
|
-
.each { File.delete(_1) }
|
81
|
+
def destino_dos_arquivos_xml
|
82
|
+
@destino_dos_arquivos_xml ||= File.join(destino, 'xmls')
|
115
83
|
end
|
116
84
|
|
117
|
-
|
85
|
+
def descompactar_arquivos_de_origem
|
86
|
+
arquivos_de_origem.each(&:descompactar)
|
87
|
+
end
|
118
88
|
|
119
|
-
def
|
120
|
-
|
89
|
+
def arquivos_de_origem
|
90
|
+
Dir[File.join(caminho, '*.zip')]
|
91
|
+
.map { |caminho| ArquivoDeOrigem.new(caminho: caminho, destino_dos_arquivos_xml: destino_dos_arquivos_xml) }
|
121
92
|
end
|
122
|
-
end
|
123
93
|
|
124
|
-
|
125
|
-
|
126
|
-
contratos_por_matricula[admissao.matricula] = Contrato.new(admissao: admissao, afastamento: afastamento)
|
94
|
+
def criar_diretorio_dos_arquivos_data
|
95
|
+
Dir.mkdir(destino_dos_arquivos_data)
|
127
96
|
end
|
128
97
|
|
129
|
-
def
|
130
|
-
|
131
|
-
contratos_por_matricula[matricula]
|
132
|
-
else
|
133
|
-
contratos.find { _1.recibo == recibo }
|
134
|
-
end
|
98
|
+
def carregar_arquivos_xml
|
99
|
+
arquivos_xml.each(&:carregar)
|
135
100
|
end
|
136
101
|
|
137
|
-
def
|
138
|
-
|
139
|
-
.
|
140
|
-
.
|
102
|
+
def arquivos_xml
|
103
|
+
@arquivos_xml ||=
|
104
|
+
Dir[File.join(destino_dos_arquivos_xml, '*.xml')]
|
105
|
+
.map { |caminho| ArquivoXML.new(empresa: self, caminho: caminho) }
|
141
106
|
end
|
142
107
|
|
143
|
-
def
|
144
|
-
|
108
|
+
def classificar_arquivos_xml
|
109
|
+
Console.print 'classificando os arquivos XML...'
|
110
|
+
|
111
|
+
arquivos_xml
|
112
|
+
.select(&:processavel?)
|
113
|
+
.partition(&:retificacao?)
|
114
|
+
.then do |de_retificacao, exceto_de_retificacao|
|
115
|
+
@arquivos_xml_por_recibo_a_retificar = de_retificacao.map { [_1.numero_do_recibo_a_retificar, _1] }.to_h
|
116
|
+
@arquivos_xml = exceto_de_retificacao
|
117
|
+
end
|
145
118
|
end
|
146
119
|
|
147
|
-
|
120
|
+
def ordenar_arquivos_xml
|
121
|
+
Console.print 'ordenando os arquivos XML...'
|
122
|
+
arquivos_xml.sort_by! { [_1.momento_de_processamento_pelo_e_social, _1.nome] }
|
123
|
+
end
|
148
124
|
|
149
|
-
def
|
150
|
-
|
125
|
+
def processar_arquivos_xml
|
126
|
+
# otimizacao do gerenciamento de memoria
|
127
|
+
arquivos_xml.shift.processar while arquivos_xml.any?
|
151
128
|
end
|
152
129
|
|
153
|
-
def
|
154
|
-
|
130
|
+
def limpar_linha_de_feedback
|
131
|
+
Console.print
|
155
132
|
end
|
156
133
|
|
157
|
-
class
|
134
|
+
class ArquivosData
|
158
135
|
private
|
159
136
|
|
160
|
-
def initialize(
|
161
|
-
@
|
162
|
-
@afastamento = afastamento
|
137
|
+
def initialize(destino_dos_arquivos_data)
|
138
|
+
@destino_dos_arquivos_data = destino_dos_arquivos_data
|
163
139
|
end
|
164
140
|
|
165
|
-
attr_reader :
|
141
|
+
attr_reader :destino_dos_arquivos_data
|
166
142
|
|
167
143
|
public
|
168
144
|
|
169
|
-
|
145
|
+
def registrar(recibo:, nome:)
|
146
|
+
(nomes_por_recibo[recibo] ||= []) << nome
|
147
|
+
end
|
148
|
+
|
149
|
+
def excluir(recibo)
|
150
|
+
(nomes_por_recibo.delete(recibo) || [])
|
151
|
+
.map { |nome| File.join(destino_dos_arquivos_data, "#{nome}.data") }
|
152
|
+
.each { File.delete(_1) }
|
153
|
+
end
|
170
154
|
|
171
|
-
|
155
|
+
private
|
172
156
|
|
173
|
-
|
157
|
+
def nomes_por_recibo
|
158
|
+
@nomes_por_recibo ||= {}
|
159
|
+
end
|
160
|
+
end
|
174
161
|
|
175
|
-
|
162
|
+
class ContratosDeEmprego
|
163
|
+
def registrar_admissao(admissao:, afastamento:)
|
164
|
+
contratos_por_matricula[admissao.matricula] = Contrato.new(admissao: admissao, afastamento: afastamento)
|
165
|
+
end
|
176
166
|
|
177
|
-
def
|
178
|
-
|
167
|
+
def [](matricula)
|
168
|
+
contratos_por_matricula[matricula]
|
179
169
|
end
|
180
170
|
|
181
|
-
def
|
182
|
-
|
183
|
-
|
171
|
+
def *(cpf_do_trabalhador:, data:)
|
172
|
+
contratos
|
173
|
+
.select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
|
174
|
+
.sort_by(&:data_de_admissao)
|
184
175
|
end
|
185
|
-
end
|
186
|
-
end
|
187
176
|
|
188
|
-
|
189
|
-
|
190
|
-
|
177
|
+
def remover(recibo)
|
178
|
+
contratos_por_matricula.delete_if { _2.recibo == recibo }
|
179
|
+
end
|
180
|
+
|
181
|
+
private
|
182
|
+
|
183
|
+
def contratos_por_matricula
|
184
|
+
@contratos_por_matricula ||= {}
|
185
|
+
end
|
186
|
+
|
187
|
+
def contratos
|
188
|
+
contratos_por_matricula.values
|
189
|
+
end
|
190
|
+
|
191
|
+
class Contrato
|
192
|
+
private
|
193
|
+
|
194
|
+
def initialize(admissao:, afastamento:)
|
195
|
+
@admissao = admissao
|
196
|
+
@afastamento = afastamento
|
197
|
+
end
|
198
|
+
|
199
|
+
attr_reader :admissao, :data_de_desligamento
|
200
|
+
|
201
|
+
public
|
202
|
+
|
203
|
+
extend Forwardable
|
204
|
+
|
205
|
+
def_delegators :admissao, :matricula, :data_de_admissao, :categoria_do_trabalhador, :cpf_do_trabalhador,
|
206
|
+
:recibo
|
207
|
+
|
208
|
+
attr_accessor :afastamento
|
209
|
+
|
210
|
+
attr_writer :data_de_desligamento
|
211
|
+
|
212
|
+
def ativo?(data)
|
213
|
+
data_de_admissao <= data && (!data_de_desligamento || data_de_desligamento >= data)
|
214
|
+
end
|
215
|
+
end
|
191
216
|
end
|
192
217
|
|
193
|
-
|
194
|
-
|
195
|
-
contratos
|
196
|
-
|
218
|
+
class ContratosDeTrabalhoSemVinculo
|
219
|
+
def registrar_inicio_de_contrato(inicio_de_contrato:, afastamento:)
|
220
|
+
contratos << Contrato.new(inicio_de_contrato: inicio_de_contrato, afastamento: afastamento)
|
221
|
+
end
|
222
|
+
|
223
|
+
def [](cpf_do_trabalhador:, categoria_do_trabalhador:, data:)
|
197
224
|
contratos
|
198
225
|
.select {
|
199
226
|
_1.cpf_do_trabalhador == cpf_do_trabalhador && _1.categoria_do_trabalhador == categoria_do_trabalhador &&
|
@@ -201,51 +228,46 @@ module Teodoro
|
|
201
228
|
}
|
202
229
|
.max_by(&:data_de_inicio)
|
203
230
|
end
|
204
|
-
end
|
205
|
-
|
206
|
-
def *(cpf_do_trabalhador:, data:)
|
207
|
-
contratos
|
208
|
-
.select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
|
209
|
-
.sort_by(&:data_de_inicio)
|
210
|
-
end
|
211
231
|
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
232
|
+
def *(cpf_do_trabalhador:, data:)
|
233
|
+
contratos
|
234
|
+
.select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
|
235
|
+
.sort_by(&:data_de_inicio)
|
236
|
+
end
|
217
237
|
|
218
|
-
|
219
|
-
|
220
|
-
|
238
|
+
def remover(recibo)
|
239
|
+
contratos.delete_if { _1.recibo == recibo }
|
240
|
+
end
|
221
241
|
|
222
|
-
class Contrato
|
223
242
|
private
|
224
243
|
|
225
|
-
def
|
226
|
-
@
|
227
|
-
@afastamento = afastamento
|
244
|
+
def contratos
|
245
|
+
@contratos ||= []
|
228
246
|
end
|
229
247
|
|
230
|
-
|
248
|
+
class Contrato
|
249
|
+
private
|
231
250
|
|
232
|
-
|
251
|
+
def initialize(inicio_de_contrato:, afastamento:)
|
252
|
+
@inicio_de_contrato = inicio_de_contrato
|
253
|
+
@afastamento = afastamento
|
254
|
+
end
|
233
255
|
|
234
|
-
|
256
|
+
attr_reader :inicio_de_contrato, :data_do_termino
|
235
257
|
|
236
|
-
|
258
|
+
public
|
237
259
|
|
238
|
-
|
260
|
+
extend Forwardable
|
239
261
|
|
240
|
-
|
262
|
+
def_delegators :inicio_de_contrato, :cpf_do_trabalhador, :categoria_do_trabalhador, :data_de_inicio, :recibo
|
241
263
|
|
242
|
-
|
243
|
-
|
244
|
-
|
264
|
+
attr_accessor :afastamento
|
265
|
+
|
266
|
+
attr_writer :data_do_termino
|
245
267
|
|
246
|
-
|
247
|
-
|
248
|
-
|
268
|
+
def ativo?(data)
|
269
|
+
data_de_inicio <= data && (!data_do_termino || data_do_termino >= data)
|
270
|
+
end
|
249
271
|
end
|
250
272
|
end
|
251
273
|
end
|
@@ -3,21 +3,18 @@ module Teodoro
|
|
3
3
|
class ArquivoS2200 # rubocop:disable Metrics/ClassLength
|
4
4
|
include ArquivoDeEventoNaoPeriodico
|
5
5
|
|
6
|
-
|
6
|
+
private
|
7
|
+
|
8
|
+
def criar_arquivo_data
|
7
9
|
super
|
8
10
|
|
9
|
-
|
10
|
-
retificar_admissao
|
11
|
-
else
|
12
|
-
registrar_admissao
|
13
|
-
end
|
11
|
+
registrar_admissao
|
14
12
|
end
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
def retificar_admissao
|
19
|
-
contrato_de_emprego.retificar_admissao(
|
14
|
+
def registrar_admissao
|
15
|
+
contratos_de_emprego.registrar_admissao(
|
20
16
|
admissao: Obj.new(
|
17
|
+
matricula: matricula_do_trabalhador,
|
21
18
|
data_de_admissao: data_de_admissao,
|
22
19
|
categoria_do_trabalhador: categoria_do_trabalhador,
|
23
20
|
cpf_do_trabalhador: cpf_do_trabalhador,
|
@@ -27,14 +24,14 @@ module Teodoro
|
|
27
24
|
)
|
28
25
|
end
|
29
26
|
|
30
|
-
def contrato_de_emprego
|
31
|
-
contratos_de_emprego[recibo: numero_do_recibo_a_retificar] # FIXME: Tales
|
32
|
-
end
|
33
|
-
|
34
27
|
def contratos_de_emprego
|
35
28
|
empresa.contratos_de_emprego
|
36
29
|
end
|
37
30
|
|
31
|
+
def matricula_do_trabalhador
|
32
|
+
@matricula_do_trabalhador ||= evento['evtAdmissao/vinculo/matricula']
|
33
|
+
end
|
34
|
+
|
38
35
|
def data_de_admissao
|
39
36
|
@data_de_admissao ||= evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/dtAdm']
|
40
37
|
end
|
@@ -54,23 +51,6 @@ module Teodoro
|
|
54
51
|
) }
|
55
52
|
end
|
56
53
|
|
57
|
-
def registrar_admissao
|
58
|
-
contratos_de_emprego.registrar_admissao(
|
59
|
-
admissao: Obj.new(
|
60
|
-
matricula: matricula_do_trabalhador,
|
61
|
-
data_de_admissao: data_de_admissao,
|
62
|
-
categoria_do_trabalhador: categoria_do_trabalhador,
|
63
|
-
cpf_do_trabalhador: cpf_do_trabalhador,
|
64
|
-
recibo: numero_do_recibo
|
65
|
-
),
|
66
|
-
afastamento: afastamento
|
67
|
-
)
|
68
|
-
end
|
69
|
-
|
70
|
-
def matricula_do_trabalhador
|
71
|
-
@matricula_do_trabalhador ||= evento['evtAdmissao/vinculo/matricula']
|
72
|
-
end
|
73
|
-
|
74
54
|
def noh_principal_do_evento
|
75
55
|
'evtAdmissao'
|
76
56
|
end
|
@@ -5,16 +5,15 @@ module Teodoro
|
|
5
5
|
include ArquivoDeEventoRetificavel
|
6
6
|
|
7
7
|
def processar
|
8
|
-
|
9
|
-
|
8
|
+
if retificado?
|
9
|
+
processar_retificacao
|
10
|
+
else
|
11
|
+
processar_contratos_de_trabalho
|
12
|
+
end
|
10
13
|
end
|
11
14
|
|
12
15
|
private
|
13
16
|
|
14
|
-
def noh_principal_do_evento
|
15
|
-
'evtAltCadastral'
|
16
|
-
end
|
17
|
-
|
18
17
|
def processar_contratos_de_trabalho
|
19
18
|
contratos_de_trabalho.each(&:processar)
|
20
19
|
end
|
@@ -133,7 +133,6 @@ module Teodoro
|
|
133
133
|
@data_de_termino_do_afastamento ||= termino_do_afastamento['dtTermAfast']
|
134
134
|
end
|
135
135
|
|
136
|
-
# FIXME: Tales refactoring
|
137
136
|
def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
138
137
|
[
|
139
138
|
# rubocop:disable Layout/LineLength
|
@@ -3,20 +3,16 @@ module Teodoro
|
|
3
3
|
class ArquivoS2300 # rubocop:disable Metrics/ClassLength
|
4
4
|
include ArquivoDeEventoNaoPeriodico
|
5
5
|
|
6
|
-
|
6
|
+
private
|
7
|
+
|
8
|
+
def criar_arquivo_data
|
7
9
|
super
|
8
10
|
|
9
|
-
|
10
|
-
retificar_inicio_de_contrato
|
11
|
-
else
|
12
|
-
registrar_inicio_de_contrato
|
13
|
-
end
|
11
|
+
registrar_inicio_de_contrato
|
14
12
|
end
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
def retificar_inicio_de_contrato
|
19
|
-
contrato_de_trabalho_sem_vinculo.retificar_inicio_de_contrato(
|
14
|
+
def registrar_inicio_de_contrato
|
15
|
+
contratos_de_trabalho_sem_vinculo.registrar_inicio_de_contrato(
|
20
16
|
inicio_de_contrato: Obj.new(
|
21
17
|
cpf_do_trabalhador: cpf_do_trabalhador,
|
22
18
|
categoria_do_trabalhador: categoria_do_trabalhador,
|
@@ -27,20 +23,20 @@ module Teodoro
|
|
27
23
|
)
|
28
24
|
end
|
29
25
|
|
30
|
-
def
|
31
|
-
contratos_de_trabalho_sem_vinculo
|
26
|
+
def contratos_de_trabalho_sem_vinculo
|
27
|
+
empresa.contratos_de_trabalho_sem_vinculo
|
32
28
|
end
|
33
29
|
|
34
|
-
def
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
30
|
+
def cpf_do_trabalhador
|
31
|
+
@cpf_do_trabalhador ||= evento['evtTSVInicio/trabalhador/cpfTrab']
|
32
|
+
end
|
33
|
+
|
34
|
+
def categoria_do_trabalhador
|
35
|
+
@categoria_do_trabalhador ||= evento['evtTSVInicio/infoTSVInicio/codCateg']
|
36
|
+
end
|
37
|
+
|
38
|
+
def data_de_inicio
|
39
|
+
@data_de_inicio ||= evento['evtTSVInicio/infoTSVInicio/dtInicio']
|
44
40
|
end
|
45
41
|
|
46
42
|
def afastamento
|
@@ -50,10 +46,6 @@ module Teodoro
|
|
50
46
|
) }
|
51
47
|
end
|
52
48
|
|
53
|
-
def contratos_de_trabalho_sem_vinculo
|
54
|
-
empresa.contratos_de_trabalho_sem_vinculo
|
55
|
-
end
|
56
|
-
|
57
49
|
def noh_principal_do_evento
|
58
50
|
'evtTSVInicio'
|
59
51
|
end
|
@@ -63,18 +55,6 @@ module Teodoro
|
|
63
55
|
"TRA[#{cpf_do_trabalhador}][TSV_#{categoria_do_trabalhador}_#{data_de_inicio.delete('-')}]-ADM"
|
64
56
|
end
|
65
57
|
|
66
|
-
def cpf_do_trabalhador
|
67
|
-
@cpf_do_trabalhador ||= evento['evtTSVInicio/trabalhador/cpfTrab']
|
68
|
-
end
|
69
|
-
|
70
|
-
def categoria_do_trabalhador
|
71
|
-
@categoria_do_trabalhador ||= evento['evtTSVInicio/infoTSVInicio/codCateg']
|
72
|
-
end
|
73
|
-
|
74
|
-
def data_de_inicio
|
75
|
-
@data_de_inicio ||= evento['evtTSVInicio/infoTSVInicio/dtInicio']
|
76
|
-
end
|
77
|
-
|
78
58
|
def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
79
59
|
[
|
80
60
|
# rubocop:disable Layout/LineLength
|