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 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