teodoro 0.0.8 → 0.0.9

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: 715220b95bb70bc46665ecff3b112fc2d5ed6496ce069c1f186b9c2763b28c90
4
- data.tar.gz: 753ce68d220b8134f457df47ac6cefd007530a10d51534689e816a091819228d
3
+ metadata.gz: fb5c4d48569ca39e7f8ef5498b4a66f76d236e5aa8d8ab94c5c648769e5c8968
4
+ data.tar.gz: 29d4363f9f97443cfc6f727cd83008b5b1d416f4e4b0af19429cd0a5af1ae911
5
5
  SHA512:
6
- metadata.gz: 8ae28ea683456163c96e3efa9f78bcc9b3f880826bb46c2267a608757c0d8f8225e5209c19bf1b46e916d4724c240272813274c336c3221cdd46c5e144fa386e
7
- data.tar.gz: f9c43aabab55122d8ca1044da63a0496baeacd6039cfdfc5a00679b508fe9744d2ea1188a6523ab340a44fb03a0c93e8a6543574be364bb12a7147c5f2e4f828
6
+ metadata.gz: 874c4435734ba86267f19342c25e20a3b2b5fbcf030b284550a1f68ad66886f54f624a78f4ee88b39fd5b865c57234740e5a34f9b0e89e4cafffef93fd7366e8
7
+ data.tar.gz: 8dd3e540b5c26080612e79a0196f2a5eb9aa316a4d9e1f63c06bdf4cb4be79b51c9487174b35b30f84c861c1f9699f636aebb356f56d55a73fe5eac267fffbe4
@@ -2,13 +2,7 @@ module Teodoro
2
2
  module ArquivoDeEvento
3
3
  private
4
4
 
5
- attr_reader :xml_do_evento, :xml_do_recibo, :destino_dos_arquivos_data
6
-
7
- def criar_arquivo_data
8
- raise caminho_do_arquivo_data if File.exist?(caminho_do_arquivo_data)
9
-
10
- File.write(caminho_do_arquivo_data, conteudo_do_arquivo_data)
11
- end
5
+ attr_reader :evento, :destino_dos_arquivos_data
12
6
 
13
7
  def criar_caminho_do_arquivo_data(nome_do_arquivo)
14
8
  File.join(
@@ -20,25 +14,5 @@ module Teodoro
20
14
  def windows?
21
15
  OS.windows?
22
16
  end
23
-
24
- def evento
25
- @evento ||= XML.new(xml_do_evento)
26
- end
27
-
28
- def conteudo_do_arquivo_data
29
- (itens_do_conteudo_do_arquivo_data.map { "#{_1}=#{_2}" } + ['']).join("\n")
30
- end
31
-
32
- def versao_do_aplicativo_de_processamento_do_evento
33
- recibo['retornoEvento/processamento/versaoAppProcessamento']
34
- end
35
-
36
- def tipo_de_inscricao_do_empregador
37
- @tipo_de_inscricao_do_empregador ||= evento["#{noh_principal_do_evento}/ideEmpregador/tpInsc"]
38
- end
39
-
40
- def recibo
41
- @recibo ||= XML.new(xml_do_recibo)
42
- end
43
17
  end
44
18
  end
@@ -1,12 +1,12 @@
1
1
  module Teodoro
2
2
  module ArquivoDeEventoDeTabela
3
- include ArquivoDeEvento
3
+ include ArquivoDeEventoExcetoDeExclusao
4
4
 
5
5
  private
6
6
 
7
- def initialize(xml_do_evento:, xml_do_recibo:, destino_dos_arquivos_data:)
8
- @xml_do_evento = xml_do_evento
9
- @xml_do_recibo = xml_do_recibo
7
+ def initialize(evento:, recibo:, destino_dos_arquivos_data:)
8
+ @evento = evento
9
+ @recibo = recibo
10
10
  @destino_dos_arquivos_data = destino_dos_arquivos_data
11
11
  end
12
12
 
@@ -0,0 +1,27 @@
1
+ module Teodoro
2
+ module ArquivoDeEventoExcetoDeExclusao
3
+ include ArquivoDeEvento
4
+
5
+ private
6
+
7
+ attr_reader :recibo
8
+
9
+ def criar_arquivo_data
10
+ raise caminho_do_arquivo_data if File.exist?(caminho_do_arquivo_data)
11
+
12
+ File.write(caminho_do_arquivo_data, conteudo_do_arquivo_data)
13
+ end
14
+
15
+ def conteudo_do_arquivo_data
16
+ (itens_do_conteudo_do_arquivo_data.map { "#{_1}=#{_2}" } + ['']).join("\n")
17
+ end
18
+
19
+ def versao_do_aplicativo_de_processamento_do_evento
20
+ recibo['retornoEvento/processamento/versaoAppProcessamento']
21
+ end
22
+
23
+ def tipo_de_inscricao_do_empregador
24
+ @tipo_de_inscricao_do_empregador ||= evento["#{noh_principal_do_evento}/ideEmpregador/tpInsc"]
25
+ end
26
+ end
27
+ end
@@ -1,12 +1,12 @@
1
1
  module Teodoro
2
2
  module ArquivoDeEventoNaoPeriodico
3
- include ArquivoDeEvento
3
+ include ArquivoDeEventoExcetoDeExclusao
4
4
 
5
5
  private
6
6
 
7
- def initialize(xml_do_evento:, xml_do_recibo:, destino_dos_arquivos_data:, de_recibo_para_nome_do_arquivo_data:)
8
- @xml_do_evento = xml_do_evento
9
- @xml_do_recibo = xml_do_recibo
7
+ def initialize(evento:, recibo:, destino_dos_arquivos_data:, de_recibo_para_nome_do_arquivo_data:)
8
+ @evento = evento
9
+ @recibo = recibo
10
10
  @destino_dos_arquivos_data = destino_dos_arquivos_data
11
11
  @de_recibo_para_nome_do_arquivo_data = de_recibo_para_nome_do_arquivo_data
12
12
  end
@@ -1,4 +1,5 @@
1
1
  require_relative 'arquivo_de_evento'
2
+ require_relative 'arquivo_de_evento_exceto_de_exclusao'
2
3
  require_relative 'arquivo_de_evento_de_tabela'
3
4
  require_relative 'arquivo_de_evento_nao_periodico'
4
5
  require_relative 'cnpj'
@@ -6,7 +7,27 @@ require_relative 'leiaute_2_4_1'
6
7
  require_relative 'xml'
7
8
 
8
9
  module Teodoro
9
- class ArquivoXML
10
+ class ArquivoXML # rubocop:disable Metrics/ClassLength
11
+ TIPOS_DE_EVENTO_PROCESSAVEIS = %w[
12
+ S1000
13
+ S1005
14
+ S1010
15
+ S1020
16
+ S1030
17
+ S1040
18
+ S1050
19
+ S1070
20
+ S2190
21
+ S2200
22
+ S2205
23
+ S2206
24
+ S2230
25
+ S2250
26
+ S2300
27
+ S2306
28
+ S3000
29
+ ].freeze
30
+
10
31
  private
11
32
 
12
33
  def initialize(caminho:, destino_dos_arquivos_data:, de_recibo_para_nome_do_arquivo_data:)
@@ -19,6 +40,10 @@ module Teodoro
19
40
 
20
41
  public
21
42
 
43
+ def momento_de_processamento_pelo_e_social
44
+ recibo['retornoEvento/processamento/dhProcessamento']
45
+ end
46
+
22
47
  def nome
23
48
  @nome ||= File.basename(caminho, '.xml')
24
49
  end
@@ -26,14 +51,29 @@ module Teodoro
26
51
  def processar
27
52
  print "\e[2Kprocessando #{nome}.xml...\r"
28
53
 
29
- return unless %w[S1000 S1005 S1010 S1020 S1030 S1040 S1050 S1070 S2190 S2200 S2205 S2206 S2230 S2250 S2300 S2306]
30
- .include?(tipo_de_evento)
54
+ return unless TIPOS_DE_EVENTO_PROCESSAVEIS.include?(tipo_de_evento)
31
55
 
32
56
  arquivo.processar
33
57
  end
34
58
 
35
59
  private
36
60
 
61
+ def recibo
62
+ @recibo ||= XML.new(xml_do_recibo)
63
+ end
64
+
65
+ def xml_do_recibo
66
+ Nokogiri::XML(xml.css('eSocial/retornoProcessamentoDownload/recibo/*').to_s)
67
+ end
68
+
69
+ def xml
70
+ @xml ||= Nokogiri::XML(conteudo)
71
+ end
72
+
73
+ def conteudo
74
+ File.read(caminho)
75
+ end
76
+
37
77
  def tipo_de_evento
38
78
  nome[-6..].delete('-')
39
79
  end
@@ -43,6 +83,8 @@ module Teodoro
43
83
  evento_de_tabela
44
84
  elsif evento_nao_periodico?
45
85
  evento_nao_periodico
86
+ elsif evento_de_exclusao?
87
+ evento_de_exclusao
46
88
  end
47
89
  end
48
90
 
@@ -52,8 +94,8 @@ module Teodoro
52
94
 
53
95
  def evento_de_tabela
54
96
  classe_do_arquivo.new(
55
- xml_do_evento: xml_do_evento,
56
- xml_do_recibo: xml_do_recibo,
97
+ evento: evento,
98
+ recibo: recibo,
57
99
  destino_dos_arquivos_data: destino_dos_arquivos_data
58
100
  )
59
101
  end
@@ -64,13 +106,25 @@ module Teodoro
64
106
 
65
107
  def evento_nao_periodico
66
108
  classe_do_arquivo.new(
67
- xml_do_evento: xml_do_evento,
68
- xml_do_recibo: xml_do_recibo,
109
+ evento: evento,
110
+ recibo: recibo,
69
111
  destino_dos_arquivos_data: destino_dos_arquivos_data,
70
112
  de_recibo_para_nome_do_arquivo_data: de_recibo_para_nome_do_arquivo_data
71
113
  )
72
114
  end
73
115
 
116
+ def evento_de_exclusao?
117
+ tipo_de_evento == 'S3000'
118
+ end
119
+
120
+ def evento_de_exclusao
121
+ classe_do_arquivo.new(
122
+ evento: evento,
123
+ de_recibo_para_nome_do_arquivo_data: de_recibo_para_nome_do_arquivo_data,
124
+ destino_dos_arquivos_data: destino_dos_arquivos_data
125
+ )
126
+ end
127
+
74
128
  def classe_do_arquivo
75
129
  modulo_do_leiaute.const_get("Arquivo#{tipo_de_evento}")
76
130
  end
@@ -96,19 +150,8 @@ module Teodoro
96
150
  @xml_do_evento ||= Nokogiri::XML(xml.css('eSocial/retornoProcessamentoDownload/evento/*').to_s)
97
151
  end
98
152
 
99
- def xml
100
- @xml ||= Nokogiri::XML(conteudo)
101
- end
102
-
103
- def conteudo
104
- File.read(caminho)
105
- end
106
-
107
- def xml_do_recibo
108
- Nokogiri::XML(xml.css('eSocial/retornoProcessamentoDownload/recibo/*').to_s)
109
- end
110
-
111
- module Base
153
+ def evento
154
+ XML.new(xml_do_evento)
112
155
  end
113
156
  end
114
157
  end
@@ -64,7 +64,9 @@ module Teodoro
64
64
  end
65
65
 
66
66
  def processar_arquivos_xml
67
- arquivos_xml.each(&:processar)
67
+ arquivos_xml
68
+ .sort_by { [_1.momento_de_processamento_pelo_e_social, _1.nome] }
69
+ .each(&:processar)
68
70
  end
69
71
 
70
72
  def arquivos_xml
@@ -14,6 +14,7 @@ require_relative 'leiaute_2_4_1/arquivo_s2230'
14
14
  require_relative 'leiaute_2_4_1/arquivo_s2250'
15
15
  require_relative 'leiaute_2_4_1/arquivo_s2300'
16
16
  require_relative 'leiaute_2_4_1/arquivo_s2306'
17
+ require_relative 'leiaute_2_4_1/arquivo_s3000'
17
18
 
18
19
  module Teodoro
19
20
  module Leiaute_2_4_1
@@ -0,0 +1,45 @@
1
+ module Teodoro
2
+ module Leiaute_2_4_1
3
+ class ArquivoS3000
4
+ include ArquivoDeEvento
5
+
6
+ private
7
+
8
+ def initialize(evento:, de_recibo_para_nome_do_arquivo_data:, destino_dos_arquivos_data:)
9
+ @evento = evento
10
+ @de_recibo_para_nome_do_arquivo_data = de_recibo_para_nome_do_arquivo_data
11
+ @destino_dos_arquivos_data = destino_dos_arquivos_data
12
+ end
13
+
14
+ attr_reader :de_recibo_para_nome_do_arquivo_data
15
+
16
+ public
17
+
18
+ def processar
19
+ excluir_arquivo_data_original if tipo_de_evento_processaveis?
20
+ end
21
+
22
+ private
23
+
24
+ def tipo_de_evento_processaveis?
25
+ ArquivoXML::TIPOS_DE_EVENTO_PROCESSAVEIS.include?(tipo_de_evento)
26
+ end
27
+
28
+ def tipo_de_evento
29
+ evento['evtExclusao/infoExclusao/tpEvento'].delete('-')
30
+ end
31
+
32
+ def excluir_arquivo_data_original
33
+ File.delete(criar_caminho_do_arquivo_data(extrair_nome_do_arquivo_data_original))
34
+ end
35
+
36
+ def extrair_nome_do_arquivo_data_original
37
+ de_recibo_para_nome_do_arquivo_data.delete(numero_de_recibo_do_evento_a_excluir)
38
+ end
39
+
40
+ def numero_de_recibo_do_evento_a_excluir
41
+ evento['evtExclusao/infoExclusao/nrRecEvt']
42
+ end
43
+ end
44
+ end
45
+ end
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.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clavius Tales
@@ -175,6 +175,7 @@ files:
175
175
  - lib/teodoro.rb
176
176
  - lib/teodoro/arquivo_de_evento.rb
177
177
  - lib/teodoro/arquivo_de_evento_de_tabela.rb
178
+ - lib/teodoro/arquivo_de_evento_exceto_de_exclusao.rb
178
179
  - lib/teodoro/arquivo_de_evento_nao_periodico.rb
179
180
  - lib/teodoro/arquivo_de_origem.rb
180
181
  - lib/teodoro/arquivo_xml.rb
@@ -198,6 +199,7 @@ files:
198
199
  - lib/teodoro/leiaute_2_4_1/arquivo_s2250.rb
199
200
  - lib/teodoro/leiaute_2_4_1/arquivo_s2300.rb
200
201
  - lib/teodoro/leiaute_2_4_1/arquivo_s2306.rb
202
+ - lib/teodoro/leiaute_2_4_1/arquivo_s3000.rb
201
203
  - lib/teodoro/xml.rb
202
204
  homepage:
203
205
  licenses: []