fm_timbrado_cfdi 0.0.5 → 0.0.6
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/fm_timbrado_cfdi/fm_cfdi_parser.rb +30 -0
- data/lib/fm_timbrado_cfdi/fm_cliente.rb +4 -2
- data/lib/fm_timbrado_cfdi/fm_informacion_cfdi.rb +2 -21
- data/lib/fm_timbrado_cfdi/fm_respuesta_cancelacion.rb +2 -2
- data/lib/fm_timbrado_cfdi/fm_timbre.rb +2 -21
- data/lib/fm_timbrado_cfdi/version.rb +1 -1
- data/lib/fm_timbrado_cfdi.rb +5 -5
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9b9fa77ba426f4a50bb3b55a91a4d21e8def90f6
|
|
4
|
+
data.tar.gz: 41013f05b6e0e999ac42dbbea0357d2e775aacb8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1879d848bea0827593a81548900243710c745444a7765ce6c22e4d88eafea1e6f8c3150cd4933c5f3aa2d90f85352b4596f56318d3e68c05aa51fe50d998c674
|
|
7
|
+
data.tar.gz: b202365825142f3fa9308df54b9527b205bc11926558f3241728178b763e31448ee59c4c4efe778008e886fd7cd3f9d4751c94a47f75fdcf54253d186570c77c
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
require 'nokogiri'
|
|
3
|
+
|
|
4
|
+
module FmTimbradoCfdi
|
|
5
|
+
class FmCfdiParser
|
|
6
|
+
def initialize ( nodo_timbre )
|
|
7
|
+
parse( nodo_timbre )
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
def parse ( nodo_timbre )
|
|
12
|
+
xml = Nokogiri::XML(nodo_timbre)
|
|
13
|
+
ns = generar_namespaces(xml)
|
|
14
|
+
atributos.each do |variable|
|
|
15
|
+
instance_variable_set("@#{variable}", send("obtener_#{variable}", xml, ns))
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def generar_namespaces(xml)
|
|
21
|
+
namespaces = xml.collect_namespaces
|
|
22
|
+
ns = {}
|
|
23
|
+
namespaces.each_pair do |key, value|
|
|
24
|
+
ns[key.sub(/^xmlns:/, '')] = value
|
|
25
|
+
end
|
|
26
|
+
ns
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
@@ -54,13 +54,15 @@ module FmTimbradoCfdi
|
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
def configurar_cliente
|
|
57
|
-
@client
|
|
57
|
+
@client = Savon.client(
|
|
58
58
|
ssl_verify_mode: ssl_verify_mode,
|
|
59
59
|
wsdl: fm_wsdl,
|
|
60
60
|
endpoint: endpoint,
|
|
61
61
|
raise_errors: false,
|
|
62
62
|
log_level: log_level,
|
|
63
|
-
log: log
|
|
63
|
+
log: log,
|
|
64
|
+
open_timeout: 15,
|
|
65
|
+
read_timeout: 15
|
|
64
66
|
)
|
|
65
67
|
end
|
|
66
68
|
|
|
@@ -1,23 +1,12 @@
|
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
|
2
2
|
require 'nokogiri'
|
|
3
|
+
require 'fm_timbrado_cfdi/fm_cfdi_parser'
|
|
3
4
|
|
|
4
5
|
module FmTimbradoCfdi
|
|
5
|
-
class FmInformacionCfdi
|
|
6
|
+
class FmInformacionCfdi < FmCfdiParser
|
|
6
7
|
attr_reader :total, :subtotal, :descuento
|
|
7
8
|
|
|
8
|
-
def initialize ( nodo_timbre )
|
|
9
|
-
parse( nodo_timbre )
|
|
10
|
-
end
|
|
11
|
-
|
|
12
9
|
private
|
|
13
|
-
def parse ( nodo_timbre )
|
|
14
|
-
xml = Nokogiri::XML(nodo_timbre)
|
|
15
|
-
ns = generar_namespaces(xml)
|
|
16
|
-
atributos.each do |variable|
|
|
17
|
-
instance_variable_set("@#{variable}", send("obtener_#{variable}", xml, ns))
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
10
|
def atributos
|
|
22
11
|
[ 'total',
|
|
23
12
|
'subtotal',
|
|
@@ -37,14 +26,6 @@ private
|
|
|
37
26
|
xml.xpath("//cfdi:Comprobante",ns).attribute('descuento').value rescue nil
|
|
38
27
|
end
|
|
39
28
|
|
|
40
|
-
def generar_namespaces(xml)
|
|
41
|
-
namespaces = xml.collect_namespaces
|
|
42
|
-
ns = {}
|
|
43
|
-
namespaces.each_pair do |key, value|
|
|
44
|
-
ns[key.sub(/^xmlns:/, '')] = value
|
|
45
|
-
end
|
|
46
|
-
ns
|
|
47
|
-
end
|
|
48
29
|
|
|
49
30
|
end
|
|
50
31
|
end
|
|
@@ -4,12 +4,12 @@ require 'savon'
|
|
|
4
4
|
|
|
5
5
|
module FmTimbradoCfdi
|
|
6
6
|
class FmRespuestaCancelacion
|
|
7
|
-
attr_reader :error
|
|
7
|
+
attr_reader :error, :xml
|
|
8
8
|
def initialize(savon_response)
|
|
9
9
|
@respuesta = savon_response
|
|
10
10
|
unless valid?
|
|
11
|
-
#@error = @respuesta.http_error.to_s if @respuesta.http_error?
|
|
12
11
|
@error = @respuesta.to_s if @respuesta.soap_fault?
|
|
12
|
+
@xml = @respuesta.to_xml
|
|
13
13
|
end
|
|
14
14
|
end
|
|
15
15
|
|
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
|
2
2
|
require 'nokogiri'
|
|
3
|
+
require 'fm_timbrado_cfdi/fm_cfdi_parser'
|
|
3
4
|
|
|
4
5
|
module FmTimbradoCfdi
|
|
5
|
-
class FmTimbre
|
|
6
|
+
class FmTimbre < FmCfdiParser
|
|
6
7
|
attr_reader :no_certificado_sat, :no_certificado, :fecha_timbrado, :uuid, :sello_sat, :sello_cfd, :fecha_comprobante, :serie, :folio, :trans_id, :version
|
|
7
8
|
|
|
8
|
-
def initialize ( nodo_timbre )
|
|
9
|
-
parse( nodo_timbre )
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def parse ( nodo_timbre )
|
|
13
|
-
xml = Nokogiri::XML(nodo_timbre)
|
|
14
|
-
ns = generar_namespaces(xml)
|
|
15
|
-
atributos.each do |variable|
|
|
16
|
-
instance_variable_set("@#{variable}", send("obtener_#{variable}", xml, ns))
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
9
|
|
|
20
10
|
def cadena_original
|
|
21
11
|
"||#{version}|#{uuid}|#{fecha_timbrado}|#{sello_cfd}|#{no_certificado_sat}||"
|
|
@@ -23,15 +13,6 @@ module FmTimbradoCfdi
|
|
|
23
13
|
|
|
24
14
|
private
|
|
25
15
|
|
|
26
|
-
def generar_namespaces(xml)
|
|
27
|
-
namespaces = xml.collect_namespaces
|
|
28
|
-
ns = {}
|
|
29
|
-
namespaces.each_pair do |key, value|
|
|
30
|
-
ns[key.sub(/^xmlns:/, '')] = value
|
|
31
|
-
end
|
|
32
|
-
ns
|
|
33
|
-
end
|
|
34
|
-
|
|
35
16
|
def atributos
|
|
36
17
|
[ 'trans_id',
|
|
37
18
|
'version',
|
data/lib/fm_timbrado_cfdi.rb
CHANGED
|
@@ -26,7 +26,7 @@ module FmTimbradoCfdi
|
|
|
26
26
|
#procesar rfc del emisor
|
|
27
27
|
emisor = factura_xml.xpath("//cfdi:Emisor")
|
|
28
28
|
rfc = emisor[0]['rfc']
|
|
29
|
-
|
|
29
|
+
cliente.timbrar rfc, factura_xml.to_s, 'generarCBB' => generar_cbb
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
# Public: Envía un archivo al PAC para ser timbrado en formato layout
|
|
@@ -37,7 +37,7 @@ module FmTimbradoCfdi
|
|
|
37
37
|
#
|
|
38
38
|
# Regresa un objeto tipo FMRespuesta que contiene el xml certificado, el timbre y la representación en pdf o el cbb en png
|
|
39
39
|
def timbra_cfdi_layout (rfc, layout, generar_cbb = false)
|
|
40
|
-
|
|
40
|
+
cliente.timbrar rfc, layout, 'generarCBB' => generar_cbb
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
# Public: Envía un archivo al PAC para ser timbrado tanto en formato layout como en formato XML
|
|
@@ -48,7 +48,7 @@ module FmTimbradoCfdi
|
|
|
48
48
|
#
|
|
49
49
|
# Regresa un objeto tipo FMRespuesta que contiene el xml certificado, el timbre y la representación en pdf o el cbb en png
|
|
50
50
|
def timbrar (rfc, archivo, opciones= {})
|
|
51
|
-
|
|
51
|
+
cliente.timbrar rfc, archivo, opciones
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
# Public: Envía CSD para que lo almacene el PAC
|
|
@@ -60,7 +60,7 @@ module FmTimbradoCfdi
|
|
|
60
60
|
#
|
|
61
61
|
# Regresa un objeto de tipo FmRespuestaCancelacion
|
|
62
62
|
def activar_cancelacion(rfc, certificado, llave, password)
|
|
63
|
-
|
|
63
|
+
cliente.subir_certificado rfc, certificado, llave, password
|
|
64
64
|
end
|
|
65
65
|
alias :subir_certificado :activar_cancelacion
|
|
66
66
|
|
|
@@ -71,7 +71,7 @@ module FmTimbradoCfdi
|
|
|
71
71
|
#
|
|
72
72
|
# Regresa una respuesta SOAP
|
|
73
73
|
def cancelar(rfc, uuid)
|
|
74
|
-
|
|
74
|
+
cliente.cancelar(rfc, uuid)
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fm_timbrado_cfdi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Carlos García
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date:
|
|
13
|
+
date: 2015-06-30 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: nokogiri
|
|
@@ -72,6 +72,7 @@ files:
|
|
|
72
72
|
- Rakefile
|
|
73
73
|
- fm_timbrado_cfdi.gemspec
|
|
74
74
|
- lib/fm_timbrado_cfdi.rb
|
|
75
|
+
- lib/fm_timbrado_cfdi/fm_cfdi_parser.rb
|
|
75
76
|
- lib/fm_timbrado_cfdi/fm_cliente.rb
|
|
76
77
|
- lib/fm_timbrado_cfdi/fm_informacion_cfdi.rb
|
|
77
78
|
- lib/fm_timbrado_cfdi/fm_respuesta.rb
|
|
@@ -112,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
112
113
|
version: '0'
|
|
113
114
|
requirements: []
|
|
114
115
|
rubyforge_project:
|
|
115
|
-
rubygems_version: 2.
|
|
116
|
+
rubygems_version: 2.4.6
|
|
116
117
|
signing_key:
|
|
117
118
|
specification_version: 4
|
|
118
119
|
summary: Implementación en ruby de la conexión con el servicio de timbrado de cfdi
|