teodoro 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a18d582f633bc372e5c951b9434e69b7ba86c0dbd8b636486fea005797dd57ae
4
- data.tar.gz: ab12d7b4afbf8eed6d9ee153e252c7e7423324cf25b44fb94eb7dbf3e51f6b45
3
+ metadata.gz: 948116a90b820e721da13b71f2abee576b7154819653eecf1ef63452b9375c9b
4
+ data.tar.gz: c23144f5cae471db91509309da02f1b611218082ba3af45bfc31b7d6b2ae74d6
5
5
  SHA512:
6
- metadata.gz: ad3aeead52c1a3da2d00f437c8c99cf92fa528b9272de0be66ab0d3201c6baa3005f376f65cef971c220a94de60280b79748b401df29bfa6018c83b395ecf405
7
- data.tar.gz: 3e22a950534546f877d1b3ab67c2e186b1439fd10539d36cdf219d32c8ae1b3afe155d1420301c8301d860e5f0020e0884e74cea89812f6e45e534dedf31fdaa
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
- deletar_arquivos_data_originais if retificacao?
8
- registrar_arquivo_data
9
- criar_arquivo_data
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 retificacao?
8
- @retificacao ||= evento["#{noh_principal_do_evento}/ideEvento/indRetif"] == '2'
7
+ def retificado?
8
+ arquivo_xml_de_retificacao
9
9
  end
10
10
 
11
- def deletar_arquivos_data_originais
12
- arquivos_data.excluir(numero_do_recibo_a_retificar)
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 arquivos_data
16
- empresa.arquivos_data
15
+ def arquivos_xml_por_recibo_a_retificar
16
+ empresa.arquivos_xml_por_recibo_a_retificar
17
17
  end
18
18
 
19
- def numero_do_recibo_a_retificar
20
- @numero_do_recibo_a_retificar ||= evento["#{noh_principal_do_evento}/ideEvento/nrRecibo"]
19
+ def processar_retificacao
20
+ arquivo_xml_de_retificacao.processar
21
21
  end
22
22
  end
23
23
  end
@@ -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
- def processavel?
47
- TIPOS_DE_EVENTO_PROCESSAVEIS.include?(tipo_de_evento)
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 momento_de_processamento_pelo_e_social
51
- # otimizacao do gerenciamento de memoria
52
- carregar_xml
53
- .then { |xml| Nokogiri::XML(xml.css('eSocial/retornoProcessamentoDownload/recibo/*').to_s) }
54
- .then { |xml_do_recibo| XML.new(xml_do_recibo) }
55
- .then { |recibo| recibo['retornoEvento/processamento/dhProcessamento'] }
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
- dar_feedback_para_o_usuario
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 dar_feedback_para_o_usuario
83
- Console.print "processando #{nome}.xml..."
104
+ def tipo_de_evento
105
+ @tipo_de_evento ||= nome[-6..].delete('-')
84
106
  end
85
107
 
86
108
  def validar_versao_do_leiaute
@@ -5,195 +5,222 @@ module Teodoro
5
5
  class Empresa
6
6
  private
7
7
 
8
- def initialize(caminho:, destino:)
9
- @caminho = caminho
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 :caminho, :destino
12
+ attr_reader :impl
14
13
 
15
14
  public
16
15
 
17
16
  def processar
18
- dar_feedback_para_o_usuario
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
- private
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
- def arquivos_de_origem
55
- Dir[File.join(caminho, '*.zip')]
56
- .map { |caminho| ArquivoDeOrigem.new(caminho: caminho, destino_dos_arquivos_xml: destino_dos_arquivos_xml) }
57
- end
23
+ def initialize(caminho:, destino:)
24
+ @caminho = caminho
25
+ @destino = File.join(destino, nome_do_diretorio)
26
+ end
58
27
 
59
- def criar_diretorio_dos_arquivos_data
60
- Dir.mkdir(destino_dos_arquivos_data)
61
- end
28
+ attr_reader :caminho, :destino
62
29
 
63
- def destino_dos_arquivos_data
64
- @destino_dos_arquivos_data ||= File.join(destino, 'data')
65
- end
30
+ public
66
31
 
67
- def ordenar_arquivos_xml
68
- Console.print 'ordenando os arquivos XML...'
69
- arquivos_xml.sort_by! { [_1.momento_de_processamento_pelo_e_social, _1.nome] }
70
- end
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
- def processar_arquivos_xml
73
- # otimizacao do gerenciamento de memoria
74
- arquivos_xml.shift.processar while arquivos_xml.any?
75
- end
47
+ def destino_dos_arquivos_data
48
+ @destino_dos_arquivos_data ||= File.join(destino, 'data')
49
+ end
76
50
 
77
- def arquivos_xml
78
- @arquivos_xml ||= Dir[File.join(destino_dos_arquivos_xml, '*.xml')]
79
- .map { |caminho| ArquivoXML.new(empresa: empresa, caminho: caminho) }
80
- .select(&:processavel?)
81
- end
51
+ def arquivos_data
52
+ @arquivos_data ||= ArquivosData.new(destino_dos_arquivos_data)
53
+ end
82
54
 
83
- def empresa
84
- @empresa ||= Obj.new(
85
- destino_dos_arquivos_data: destino_dos_arquivos_data,
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
- def limpar_linha_de_feedback
93
- Console.print
94
- end
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 initialize(destino_dos_arquivos_data)
100
- @destino_dos_arquivos_data = destino_dos_arquivos_data
65
+ def dar_feedback_para_o_usuario
66
+ puts Rainbow(nome_do_diretorio).green
101
67
  end
102
68
 
103
- attr_reader :destino_dos_arquivos_data
69
+ def nome_do_diretorio
70
+ @nome_do_diretorio ||= File.basename(caminho)
71
+ end
104
72
 
105
- public
73
+ def criar_diretorio_destino
74
+ Dir.mkdir(destino)
75
+ end
106
76
 
107
- def registrar(recibo:, nome:)
108
- (nomes_por_recibo[recibo] ||= []) << nome
77
+ def criar_diretorio_dos_arquivos_xml
78
+ Dir.mkdir(destino_dos_arquivos_xml)
109
79
  end
110
80
 
111
- def excluir(recibo)
112
- (nomes_por_recibo.delete(recibo) || [])
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
- private
85
+ def descompactar_arquivos_de_origem
86
+ arquivos_de_origem.each(&:descompactar)
87
+ end
118
88
 
119
- def nomes_por_recibo
120
- @nomes_por_recibo ||= {}
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
- class ContratosDeEmprego
125
- def registrar_admissao(admissao:, afastamento:)
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 [](matricula = nil, recibo: nil)
130
- if matricula
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 *(cpf_do_trabalhador:, data:)
138
- contratos
139
- .select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
140
- .sort_by(&:data_de_admissao)
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 remover(recibo)
144
- contratos_por_matricula.delete_if { _2.recibo == recibo }
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
- private
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 contratos_por_matricula
150
- @contratos_por_matricula ||= {}
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 contratos
154
- contratos_por_matricula.values
130
+ def limpar_linha_de_feedback
131
+ Console.print
155
132
  end
156
133
 
157
- class Contrato
134
+ class ArquivosData
158
135
  private
159
136
 
160
- def initialize(admissao:, afastamento:)
161
- @admissao = admissao
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 :admissao, :data_de_desligamento
141
+ attr_reader :destino_dos_arquivos_data
166
142
 
167
143
  public
168
144
 
169
- extend Forwardable
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
- def_delegators :admissao, :matricula, :data_de_admissao, :categoria_do_trabalhador, :cpf_do_trabalhador, :recibo
155
+ private
172
156
 
173
- attr_accessor :afastamento
157
+ def nomes_por_recibo
158
+ @nomes_por_recibo ||= {}
159
+ end
160
+ end
174
161
 
175
- attr_writer :data_de_desligamento
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 ativo?(data)
178
- data_de_admissao <= data && (!data_de_desligamento || data_de_desligamento >= data)
167
+ def [](matricula)
168
+ contratos_por_matricula[matricula]
179
169
  end
180
170
 
181
- def retificar_admissao(admissao:, afastamento:)
182
- @admissao = Obj.new({ matricula: matricula }.merge(admissao.to_h))
183
- @afastamento = afastamento if afastamento
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
- class ContratosDeTrabalhoSemVinculo
189
- def registrar_inicio_de_contrato(inicio_de_contrato:, afastamento:)
190
- contratos << Contrato.new(inicio_de_contrato: inicio_de_contrato, afastamento: afastamento)
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
- def [](cpf_do_trabalhador: nil, categoria_do_trabalhador: nil, data: nil, recibo: nil)
194
- if recibo
195
- contratos.find { _1.recibo == recibo }
196
- else
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
- def remover(recibo)
213
- contratos.delete_if { _1.recibo == recibo }
214
- end
215
-
216
- private
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
- def contratos
219
- @contratos ||= []
220
- end
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 initialize(inicio_de_contrato:, afastamento:)
226
- @inicio_de_contrato = inicio_de_contrato
227
- @afastamento = afastamento
244
+ def contratos
245
+ @contratos ||= []
228
246
  end
229
247
 
230
- attr_reader :inicio_de_contrato, :data_do_termino
248
+ class Contrato
249
+ private
231
250
 
232
- public
251
+ def initialize(inicio_de_contrato:, afastamento:)
252
+ @inicio_de_contrato = inicio_de_contrato
253
+ @afastamento = afastamento
254
+ end
233
255
 
234
- extend Forwardable
256
+ attr_reader :inicio_de_contrato, :data_do_termino
235
257
 
236
- def_delegators :inicio_de_contrato, :cpf_do_trabalhador, :categoria_do_trabalhador, :data_de_inicio, :recibo
258
+ public
237
259
 
238
- attr_accessor :afastamento
260
+ extend Forwardable
239
261
 
240
- attr_writer :data_do_termino
262
+ def_delegators :inicio_de_contrato, :cpf_do_trabalhador, :categoria_do_trabalhador, :data_de_inicio, :recibo
241
263
 
242
- def ativo?(data)
243
- data_de_inicio <= data && (!data_do_termino || data_do_termino >= data)
244
- end
264
+ attr_accessor :afastamento
265
+
266
+ attr_writer :data_do_termino
245
267
 
246
- def retificar_inicio_de_contrato(inicio_de_contrato:, afastamento:)
247
- @inicio_de_contrato = inicio_de_contrato
248
- @afastamento = afastamento if afastamento
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,9 +3,7 @@ module Teodoro
3
3
  class ArquivoS2190
4
4
  include ArquivoDeEventoNaoPeriodico
5
5
 
6
- def noh_principal_do_evento
7
- 'evtAdmPrelim'
8
- end
6
+ private
9
7
 
10
8
  def nome_do_arquivo_data
11
9
  @nome_do_arquivo_data ||= "PRE[#{cpf_do_trabalhador}]"
@@ -3,21 +3,18 @@ module Teodoro
3
3
  class ArquivoS2200 # rubocop:disable Metrics/ClassLength
4
4
  include ArquivoDeEventoNaoPeriodico
5
5
 
6
- def processar
6
+ private
7
+
8
+ def criar_arquivo_data
7
9
  super
8
10
 
9
- if retificacao?
10
- retificar_admissao
11
- else
12
- registrar_admissao
13
- end
11
+ registrar_admissao
14
12
  end
15
13
 
16
- private
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
- deletar_arquivos_data_originais if retificacao?
9
- processar_contratos_de_trabalho
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
- def processar
6
+ private
7
+
8
+ def criar_arquivo_data
7
9
  super
8
10
 
9
- if retificacao?
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
- private
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 contrato_de_trabalho_sem_vinculo
31
- contratos_de_trabalho_sem_vinculo[recibo: numero_do_recibo_a_retificar]
26
+ def contratos_de_trabalho_sem_vinculo
27
+ empresa.contratos_de_trabalho_sem_vinculo
32
28
  end
33
29
 
34
- def registrar_inicio_de_contrato
35
- contratos_de_trabalho_sem_vinculo.registrar_inicio_de_contrato(
36
- inicio_de_contrato: Obj.new(
37
- cpf_do_trabalhador: cpf_do_trabalhador,
38
- categoria_do_trabalhador: categoria_do_trabalhador,
39
- data_de_inicio: data_de_inicio,
40
- recibo: numero_do_recibo
41
- ),
42
- afastamento: afastamento
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
@@ -5,10 +5,6 @@ module Teodoro
5
5
 
6
6
  private
7
7
 
8
- def noh_principal_do_evento
9
- 'evtTSVAltContr'
10
- end
11
-
12
8
  def nome_do_arquivo_data
13
9
  @nome_do_arquivo_data ||= [
14
10
  'TRA',
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teodoro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clavius Tales