teodoro 0.51.0 → 0.51.1

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: 65669a9ee3ad1d0358849fa220e2720d08452c9a8c4f2d4154f979cca4d45edd
4
- data.tar.gz: 00f23d7d9103fb178f932a18976c36ebffb8d79f23eb943f28f3b5069af0800f
3
+ metadata.gz: 4b56a0b10de8ab5ef5d882108e4a2a9242142e1ecb66c0ae73347746b8ebdd8f
4
+ data.tar.gz: 0de207a68296af5d14b7e6eb4973ee09f52b265606d61335dd1c7dae29bd4ad6
5
5
  SHA512:
6
- metadata.gz: 0d88f0c9d65b366f806c99f148d637196fa10aab61bc7b2b65853e25f64183a443462ad2722c6dd8c8112c440aad87050b365455563cc59b09d62f0a35be4fba
7
- data.tar.gz: 801996ba495dc23d1da40a4e3b321236ffc0a0781ceaeb8a96b9c9778bb543ec97d1bbee500b35549c86746dcfa0e0e6029a8ca003bc5c7fedd1f0017c0dbb28
6
+ metadata.gz: 13de1c51e869027efd596cab712fd97683bccd8c6cea8afc624e86d9c475abe52b81ef69bba4c042610047bb6098623f852a4270a33b28105408142112b84a75
7
+ data.tar.gz: 6de6a031a3d78e24a553d07e3e06664ad6ae71482aced0ed6d51a0682fa7beb58952f5b1c40f4365918f8da78aaae3c6a3d98200491d511ae9824fc50b14f53f
@@ -3,6 +3,8 @@ module Teodoro
3
3
  include ArquivoDeEvento
4
4
 
5
5
  def processar
6
+ return if exclusao?
7
+
6
8
  if retificado?
7
9
  processar_retificacao
8
10
  else
@@ -13,16 +15,20 @@ module Teodoro
13
15
 
14
16
  private
15
17
 
18
+ def exclusao?
19
+ empresa.recibos_dos_eventos_excluidos.include?(numero_do_recibo)
20
+ end
21
+
16
22
  def retificado?
17
23
  arquivo_xml_de_retificacao
18
24
  end
19
25
 
20
26
  def arquivo_xml_de_retificacao
21
- @arquivo_xml_de_retificacao ||= arquivos_xml_por_recibo_a_retificar.delete(numero_do_recibo)
27
+ @arquivo_xml_de_retificacao ||= arquivo_xml_por_recibo_de_evento_retificado.delete(numero_do_recibo)
22
28
  end
23
29
 
24
- def arquivos_xml_por_recibo_a_retificar
25
- empresa.arquivos_xml_por_recibo_a_retificar
30
+ def arquivo_xml_por_recibo_de_evento_retificado
31
+ empresa.arquivo_xml_por_recibo_de_evento_retificado
26
32
  end
27
33
 
28
34
  def processar_retificacao
@@ -28,7 +28,6 @@ require_relative 'leiaute/arquivo_s2306'
28
28
  require_relative 'leiaute/arquivo_s2399'
29
29
  require_relative 'leiaute/arquivo_s2500'
30
30
  require_relative 'leiaute/arquivo_s2501'
31
- require_relative 'leiaute/arquivo_s3000'
32
31
  require_relative 'leiaute/arquivo_s3500'
33
32
  require_relative 'leiaute_simplificado'
34
33
  require_relative 'xml'
@@ -94,15 +93,16 @@ module Teodoro
94
93
 
95
94
  public
96
95
 
97
- attr_reader :numero_do_recibo_a_retificar, :momento_de_processamento_pelo_e_social
96
+ attr_reader :recibo_do_evento_a_excluir, :recibo_do_evento_a_retificar, :momento_de_processamento_pelo_e_social
98
97
 
99
98
  # otimizacao do gerenciamento de memoria
100
99
  def carregar
101
100
  Console.print "carregando #{nome}.xml..." do
102
101
  evento, recibo = carregar_evento_e_recibo
103
102
 
103
+ @recibo_do_evento_a_excluir = evento['infoExclusao/nrRecEvt'] if exclusao_por_recibo?
104
104
  @retificacao = evento_retificavel? && evento['ideEvento/indRetif'] == '2'
105
- @numero_do_recibo_a_retificar = evento['ideEvento/nrRecibo'] if retificacao?
105
+ @recibo_do_evento_a_retificar = evento['ideEvento/nrRecibo'] if retificacao?
106
106
  @momento_de_processamento_pelo_e_social = recibo['processamento/dhProcessamento']
107
107
 
108
108
  validar_carregamento
@@ -111,6 +111,10 @@ module Teodoro
111
111
  tratar_excecao(e)
112
112
  end
113
113
 
114
+ def exclusao_por_recibo?
115
+ tipo_de_evento == 'S3000'
116
+ end
117
+
114
118
  def retificacao?
115
119
  @retificacao
116
120
  end
@@ -32,10 +32,6 @@ module Teodoro
32
32
  .sort_by(&:data_de_admissao)
33
33
  end
34
34
 
35
- def remover(recibo)
36
- contratos_por_matricula.delete_if { |_matricula, contratos| contratos.recibo == recibo }
37
- end
38
-
39
35
  private
40
36
 
41
37
  def contratos
@@ -34,10 +34,6 @@ module Teodoro
34
34
  .sort_by(&:data_de_inicio)
35
35
  end
36
36
 
37
- def remover(recibo)
38
- contratos.delete_if { _1.recibo == recibo }
39
- end
40
-
41
37
  private
42
38
 
43
39
  def contratos
@@ -41,8 +41,6 @@ module Teodoro
41
41
 
42
42
  attr_accessor :inicio_da_validade
43
43
 
44
- attr_reader :arquivos_xml_por_recibo_a_retificar
45
-
46
44
  def processar # rubocop:disable Metrics/MethodLength
47
45
  dar_feedback_para_o_usuario
48
46
  criar_diretorios_destino
@@ -95,6 +93,14 @@ module Teodoro
95
93
  @inicios_de_afastamento_por_numero_do_recibo ||= {}
96
94
  end
97
95
 
96
+ def recibos_dos_eventos_excluidos
97
+ @recibos_dos_eventos_excluidos ||= Set.new
98
+ end
99
+
100
+ def arquivo_xml_por_recibo_de_evento_retificado
101
+ @arquivo_xml_por_recibo_de_evento_retificado ||= {}
102
+ end
103
+
98
104
  private
99
105
 
100
106
  def dar_feedback_para_o_usuario
@@ -148,15 +154,20 @@ module Teodoro
148
154
  .map { |caminho| ArquivoXML.new(empresa: self, caminho: caminho) }
149
155
  end
150
156
 
151
- def classificar_arquivos_xml
157
+ def classificar_arquivos_xml # rubocop:disable Metrics/MethodLength
152
158
  Console.print 'classificando os arquivos XML...' do
153
159
  arquivos_xml
160
+ .tap { @arquivos_xml = [] }
154
161
  .select(&:processavel?)
155
- .partition(&:retificacao?)
156
- .then do |de_retificacao, exceto_de_retificacao|
157
- @arquivos_xml_por_recibo_a_retificar = de_retificacao.map { [_1.numero_do_recibo_a_retificar, _1] }.to_h
158
- @arquivos_xml = exceto_de_retificacao
159
- end
162
+ .each do |arquivo_xml|
163
+ if arquivo_xml.exclusao_por_recibo?
164
+ recibos_dos_eventos_excluidos << arquivo_xml.recibo_do_evento_a_excluir
165
+ elsif arquivo_xml.retificacao?
166
+ arquivo_xml_por_recibo_de_evento_retificado[arquivo_xml.recibo_do_evento_a_retificar] = arquivo_xml
167
+ else
168
+ arquivos_xml << arquivo_xml
169
+ end
170
+ end
160
171
  end
161
172
  end
162
173
 
@@ -208,11 +208,6 @@ module Teodoro
208
208
  inicios_de_afastamento_por_numero_do_recibo[numero_do_recibo] = self
209
209
  inicios_de_afastamento << self
210
210
  end
211
-
212
- def excluir
213
- inicios_de_afastamento_por_numero_do_recibo.delete(numero_do_recibo)
214
- inicios_de_afastamento.pop.then { raise unless _1 == self }
215
- end
216
211
  end
217
212
  end
218
213
  end
@@ -1,3 +1,3 @@
1
1
  module Teodoro
2
- VERSION = '0.51.0'.freeze
2
+ VERSION = '0.51.1'.freeze
3
3
  end
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.51.0
4
+ version: 0.51.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fortes Tecnologia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-23 00:00:00.000000000 Z
11
+ date: 2023-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -236,7 +236,6 @@ files:
236
236
  - lib/teodoro/leiaute/arquivo_s2399.rb
237
237
  - lib/teodoro/leiaute/arquivo_s2500.rb
238
238
  - lib/teodoro/leiaute/arquivo_s2501.rb
239
- - lib/teodoro/leiaute/arquivo_s3000.rb
240
239
  - lib/teodoro/leiaute/arquivo_s3500.rb
241
240
  - lib/teodoro/leiaute_simplificado.rb
242
241
  - lib/teodoro/obj.rb
@@ -1,80 +0,0 @@
1
- module Teodoro
2
- module Leiaute
3
- class ArquivoS3000
4
- include ArquivoDeEvento
5
-
6
- def processar
7
- excluir_arquivo_data if tipo_de_evento_processavel?
8
- excluir_admissao if exclusao_de_admissao?
9
- excluir_inicio_de_tsv if exclusao_de_inicio_de_tsv?
10
- excluir_inicio_de_afastamento if exclusao_de_inicio_de_afastamento?
11
- end
12
-
13
- private
14
-
15
- def tipo_de_evento_processavel?
16
- ArquivoXML::TIPOS_DE_EVENTO_PROCESSAVEIS.include?(tipo_de_evento)
17
- end
18
-
19
- def tipo_de_evento
20
- @tipo_de_evento ||= evento['infoExclusao/tpEvento'].delete('-')
21
- end
22
-
23
- def excluir_arquivo_data
24
- empresa.arquivos_data.excluir(numero_de_recibo_do_evento_a_excluir)
25
- end
26
-
27
- def numero_de_recibo_do_evento_a_excluir
28
- @numero_de_recibo_do_evento_a_excluir ||= evento['infoExclusao/nrRecEvt']
29
- end
30
-
31
- def exclusao_de_admissao?
32
- tipo_de_evento == 'S2200'
33
- end
34
-
35
- def excluir_admissao
36
- contratos_de_emprego.remover(numero_de_recibo_do_evento_a_excluir)
37
- end
38
-
39
- def contratos_de_emprego
40
- empresa.contratos_de_emprego
41
- end
42
-
43
- def exclusao_de_inicio_de_tsv?
44
- tipo_de_evento == 'S2300'
45
- end
46
-
47
- def excluir_inicio_de_tsv
48
- contratos_de_trabalho_sem_vinculo.remover(numero_de_recibo_do_evento_a_excluir)
49
- end
50
-
51
- def contratos_de_trabalho_sem_vinculo
52
- empresa.contratos_de_trabalho_sem_vinculo
53
- end
54
-
55
- def exclusao_de_inicio_de_afastamento?
56
- exclusao_de_afastamento? && inicio_de_afastamento?
57
- end
58
-
59
- def exclusao_de_afastamento?
60
- tipo_de_evento == 'S2230'
61
- end
62
-
63
- def inicio_de_afastamento?
64
- inicio_de_afastamento
65
- end
66
-
67
- def inicio_de_afastamento
68
- @inicio_de_afastamento ||= inicios_de_afastamento_por_numero_do_recibo[numero_de_recibo_do_evento_a_excluir]
69
- end
70
-
71
- def inicios_de_afastamento_por_numero_do_recibo
72
- empresa.inicios_de_afastamento_por_numero_do_recibo
73
- end
74
-
75
- def excluir_inicio_de_afastamento
76
- inicio_de_afastamento.excluir
77
- end
78
- end
79
- end
80
- end