cfdi 0.1.7 → 0.1.8
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 +4 -4
- data/lib/comun.rb +21 -21
- data/lib/version.rb +1 -1
- data/readme.md +26 -24
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb914ef37f91ddda191093e06888b40df2bec153
|
4
|
+
data.tar.gz: 4bdd0e633c0a5493e40abb247a0a3dcdaa294dc9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bac36231875ce770144431a887faea011fc055df402c8414b400c89ee57489f5d779270f69983be59b65525356786b147b8bc6a9cc80a6c7486f6b9240d9d7bf
|
7
|
+
data.tar.gz: e4204295e3f4c07b51b89e198166ef14fb9e30a12e557c0cff77ac96677d2c7c02c4f62b09d49b28167c0f3a2595c9edc0c51d5e494f6a18a9d0b97752886d26
|
data/lib/comun.rb
CHANGED
@@ -1,26 +1,26 @@
|
|
1
|
-
# Mkay, quiero que mis floats tengan dos decimales a huevo
|
2
|
-
class Float
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
1
|
+
# # Mkay, quiero que mis floats tengan dos decimales a huevo
|
2
|
+
# class Float
|
3
|
+
|
4
|
+
# # Lo que dice la clase
|
5
|
+
# #
|
6
|
+
# # @return [String] El string de este float con dos decimales
|
7
|
+
# def to_s
|
8
|
+
# sprintf('%.2f', self)
|
9
|
+
# end
|
10
|
+
|
11
|
+
# end
|
12
12
|
# Y quiero que los strings no tengan espacios extraños
|
13
13
|
class String
|
14
14
|
|
15
15
|
# Limpia whitespace de extremos y espacios repetidos
|
16
|
-
#
|
16
|
+
#
|
17
17
|
# @return [String] Una copia del string sin espacios extraños
|
18
18
|
def squish
|
19
19
|
dup.squish!
|
20
20
|
end
|
21
21
|
|
22
22
|
# Lo mismo que squish, pero destructivo
|
23
|
-
#
|
23
|
+
#
|
24
24
|
# @return [String] El string original sin espacios extraños
|
25
25
|
def squish!
|
26
26
|
strip!
|
@@ -35,11 +35,11 @@ module CFDI
|
|
35
35
|
|
36
36
|
# Un elemento del comprobante con métodos mágicos y especiales
|
37
37
|
class ElementoComprobante
|
38
|
-
|
38
|
+
|
39
39
|
|
40
40
|
# Crear este elemento y settear lo que le pasemos como hash en un tipo de dato adecuado
|
41
41
|
# @param data [Hash] Los datos para este elemento
|
42
|
-
#
|
42
|
+
#
|
43
43
|
# @return [CFDI::ElementoComprobante] El elemento creado
|
44
44
|
def initialize data={}
|
45
45
|
#puts self.class
|
@@ -52,7 +52,7 @@ module CFDI
|
|
52
52
|
|
53
53
|
|
54
54
|
# Los elementos para generar la cadena original de este comprobante
|
55
|
-
#
|
55
|
+
#
|
56
56
|
# @return [Array] idem
|
57
57
|
def self.data
|
58
58
|
@cadenaOriginal
|
@@ -60,21 +60,21 @@ module CFDI
|
|
60
60
|
|
61
61
|
|
62
62
|
# Un array con los datos de la cadena original para este elemento
|
63
|
-
#
|
63
|
+
#
|
64
64
|
# @return [Array] idem
|
65
65
|
def cadena_original
|
66
66
|
params = []
|
67
67
|
data = {}
|
68
68
|
data = self.class.data
|
69
69
|
# puts self.class.cadenaOriginal
|
70
|
-
|
70
|
+
|
71
71
|
data.each {|key| params.push instance_variable_get('@'+key.to_s) }
|
72
72
|
return params
|
73
73
|
end
|
74
74
|
|
75
75
|
|
76
76
|
# Los datos xmleables de este elemento
|
77
|
-
#
|
77
|
+
#
|
78
78
|
# @return [Hash] idem
|
79
79
|
def to_h
|
80
80
|
h = {}
|
@@ -83,10 +83,10 @@ module CFDI
|
|
83
83
|
value = value.to_h if value.is_a? ElementoComprobante
|
84
84
|
h[v] = value
|
85
85
|
end
|
86
|
-
|
86
|
+
|
87
87
|
h
|
88
88
|
end
|
89
|
-
|
89
|
+
|
90
90
|
end
|
91
91
|
|
92
92
|
end
|
data/lib/version.rb
CHANGED
data/readme.md
CHANGED
@@ -9,33 +9,35 @@ El sistema de generación y sellado de facturas es una patada en los genitales.
|
|
9
9
|
|
10
10
|
## Uso
|
11
11
|
|
12
|
-
Puedes ver [crear_factura.rb](examples/crear_factura.rb) para
|
12
|
+
Puedes ver [crear_factura.rb](examples/crear_factura.rb) para darte una mejor idea, pero acá va un resumen:
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
14
|
+
```ruby
|
15
|
+
require 'cfdi'
|
16
|
+
factura = CFDI::Comprobante.new
|
17
|
+
|
18
|
+
factura.emisor = {
|
19
|
+
rfc: 'un RFC',
|
20
|
+
nombre: 'una razón social o nombre',
|
21
|
+
domicilioFiscal: CFDI::Domicilio.new
|
22
|
+
expedidoEn: CFDI::Domicilio.new
|
23
|
+
regimenFiscal: 'general'
|
24
|
+
}
|
25
|
+
|
26
|
+
# lo mismo para el receptor
|
27
|
+
|
28
|
+
# porque XML! ES LO DE HOY! BIENVENIDOS A 2001!
|
29
|
+
puts factura.to_xml
|
30
|
+
|
31
|
+
# O talvez evolucionamos a un formato de intercambio de datos menos castroso
|
32
|
+
require 'json'
|
33
|
+
puts JSON.pretty_generate(factura.to_h)
|
34
|
+
|
35
|
+
# También podemos parsear un CFDI en XML...
|
36
|
+
puts JSON.pretty_generate CFDI.from_xml(File.read('./examples/data/cfdi.xml')).to_h
|
37
|
+
```
|
36
38
|
|
37
39
|
## Licencia
|
38
40
|
|
39
41
|

|
40
42
|
|
41
|
-
Como es costumbre, todo bajo WTFPL. La licencia completa la puedes leer acá: [Licencia](LICENSE.txt)
|
43
|
+
Como es costumbre, todo bajo WTFPL. La licencia completa la puedes leer acá: [Licencia](LICENSE.txt)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cfdi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roberto Hidalgo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|