catalogos_sat 0.0.1 → 0.0.2

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/catalogos_sat.rb +21 -3
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 41b11713b713805df8f7a78fb4aca19e86feae42
4
- data.tar.gz: 80624306049fb3540ef12e781467ffabdd54b254
3
+ metadata.gz: 2234a7e9fe29abd1287ab7986ff7e1d92d59a553
4
+ data.tar.gz: 1f4638fb2ef285cb522d34584a2e5e7ba6e41a8b
5
5
  SHA512:
6
- metadata.gz: 72c7dca4e2f59323b1493ef7571ae2bdc5bff10119805245a6766ce4009cb9048bad18ca55a5376578a62fb74d8789e46bdd8611ec633b161c117f4e73625046
7
- data.tar.gz: 32b20b082ece9adb6cd410bf259e939992eaf3498a6c04023b3bb8bb32fde47983cbe2f8e58afaf99bea700c38ec3a6a5d12aadc92ef67ccca500dcf616d5432
6
+ metadata.gz: 95f9bb29d21239c61a4174ce1c90114e55fe831f87217f5aaa95b50a1d601c8cb3604c8641d0c8802d571972c80209a8b8bf69cbf4ee7e2ccd7dd2dbc45bb04d
7
+ data.tar.gz: 2274cdb4bc120207e9cb6b87b4ba6d588ae49e2200c571ef38a4815e16e4b18670c5fae8ae67d7ce07d7f0f04b4e1f1aa840d28d113ff932a5fae8179972bf4c
data/lib/catalogos_sat.rb CHANGED
@@ -1,11 +1,13 @@
1
1
 
2
-
2
+ # Clase principal, se instancia con Catalogos.new()
3
3
  class Catalogos
4
4
  require 'progressbar'
5
5
  require 'spreadsheet'
6
6
  require 'json'
7
7
  require 'net/http'
8
8
 
9
+ # Codigo para reemplazar caracteres NO ASCII en los encabezados
10
+ # Ref: https://stackoverflow.com/questions/1268289/how-to-get-rid-of-non-ascii-characters-in-ruby
9
11
  REPLACEMENTS = {
10
12
  'á' => "a",
11
13
  'é' => 'e',
@@ -19,6 +21,7 @@ class Catalogos
19
21
  attr_accessor :local_eTag
20
22
 
21
23
 
24
+ # Inicializa la configuracion de encoding y variables de instancia
22
25
  def initialize()
23
26
  @encoding_options = {
24
27
  :invalid => :replace, # Replace invalid byte sequences
@@ -35,6 +38,10 @@ class Catalogos
35
38
  end
36
39
 
37
40
 
41
+ # Descarga el .xls de los catalogos del SAT y lo guarda en el folder temporal del sistema operativo.
42
+ # Despues de correr este metodo, se asigna la variable @last_eTag en base al archivo descargado.
43
+ # @param url_excel [String] el url donde el SAT tiene los catalogos, valor default "http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Documents/catCFDI.xls"
44
+ # @note Generalmente se mandara llamar vacio a menos que el SAT cambie el url en el futuro.
38
45
  def descargar(url_excel = "http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Documents/catCFDI.xls")
39
46
 
40
47
  begin
@@ -51,7 +58,7 @@ class Catalogos
51
58
 
52
59
  tempdir = Dir.tmpdir()
53
60
 
54
- File.open("#{tempdir}/catalogo.xls", "w") do |f|
61
+ File.open("#{tempdir}/catalogo.xls", "wb") do |f|
55
62
  http.get(url_excel.path) do |str|
56
63
  bytesDescargados += str.length
57
64
  relation = 100 * bytesDescargados / totalSize
@@ -72,7 +79,8 @@ class Catalogos
72
79
 
73
80
  end
74
81
 
75
-
82
+ # Genera un folder "catalogosJSON" en la ruta temporal del sistema operativo, requiere que ya exista el .xls generado,
83
+ # usualmente se usa despues de mandar llamar descargar.
76
84
  def procesar()
77
85
 
78
86
  begin
@@ -219,6 +227,11 @@ class Catalogos
219
227
 
220
228
  end
221
229
 
230
+ # Compara el eTag del .xls en la pagina del SAT con el @last_eTag
231
+ # @param local_eTag [String] siempre intentara utilizar el @last_eTag a menos que se mande explicitamente un eTag, este se puede
232
+ # obtener de @last_eTag en una iteracion previa del programa.
233
+ # @param url_excel [String] el url donde el SAT tiene los catalogos, valor default "http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Documents/catCFDI.xls"
234
+ # @return [Bool] verdadero si los eTags son distintos, es decir, si hay una nueva version disponible.
222
235
  def nuevo_xls?(local_eTag = nil, url_excel = "http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Documents/catCFDI.xls")
223
236
  local_eTag = @local_eTag if local_eTag.nil?
224
237
  url_excel = URI.parse(url_excel)
@@ -235,6 +248,11 @@ class Catalogos
235
248
 
236
249
  end
237
250
 
251
+ # Encapsula los demas metodos en una sola rutina
252
+ # @param local_eTag [String] siempre intentara utilizar el @last_eTag a menos que se mande explicitamente un eTag, este se puede
253
+ # obtener de @last_eTag en una iteracion previa del programa.
254
+ # @param url_excel [String] el url donde el SAT tiene los catalogos, valor default "http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Documents/catCFDI.xls"
255
+ # @return [Bool] verdadero si no hubo ningun error.
238
256
  def main(local_eTag = nil, url_excel = "http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Documents/catCFDI.xls")
239
257
 
240
258
  if (nuevo_xls?(local_eTag, url_excel))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: catalogos_sat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - BambuCode