timbradocfdi 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.
- checksums.yaml +4 -4
- data/lib/timbradocfdi.rb +5 -4
- data/lib/timbradocfdi/cancel.rb +20 -0
- data/lib/timbradocfdi/obtain.rb +20 -0
- data/lib/timbradocfdi/register_emisor.rb +22 -0
- data/lib/timbradocfdi/results.rb +74 -0
- data/lib/timbradocfdi/stamping.rb +20 -0
- data/lib/timbradocfdi/version.rb +1 -1
- data/prueba/cer.cer +0 -0
- data/prueba/comprobanteSinTimbrar.xml +18 -0
- data/prueba/key.key +0 -0
- data/prueba/prueba.rb +46 -0
- data/timbradocfdi.gemspec +3 -2
- metadata +24 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cbf330a989ab0ec4de3568dc9039ba8aa9768f4b
|
4
|
+
data.tar.gz: 3ebf54c733090691ac41c958fc3f0fb3ed8d62da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d581eb2737f8a35570c37a2548a78c8dff656ef6b81878d6673ebd7dda3559cf670784940d74ddf77b466d06fb194edd491da8fc415c576ab7aa03dd5219ff2f
|
7
|
+
data.tar.gz: 4c3ebd8d2507f39f0080204e0d40d647edd9de485ceb5c7512f3e5529c030e67c66fcc28059f749eb428192ce81186662fb4c069ba2438ad14ccf14d4d17a976
|
data/lib/timbradocfdi.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'savon'
|
2
2
|
require "timbradocfdi/version"
|
3
|
-
require "timbradocfdi/registroemisor"
|
4
|
-
require "timbradocfdi/timbracfdi"
|
5
|
-
require "timbradocfdi/obtienecfdi"
|
6
|
-
require "timbradocfdi/cancelacfdi"
|
7
3
|
require "timbradocfdi/results"
|
4
|
+
require "timbradocfdi/register_emisor"
|
5
|
+
require "timbradocfdi/stamping"
|
6
|
+
require "timbradocfdi/obtain"
|
7
|
+
require "timbradocfdi/cancel"
|
8
8
|
|
9
9
|
module Timbradocfdi
|
10
10
|
class Generator
|
@@ -39,3 +39,4 @@ module Timbradocfdi
|
|
39
39
|
|
40
40
|
end
|
41
41
|
end
|
42
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Timbradocfdi
|
2
|
+
class Generator
|
3
|
+
|
4
|
+
|
5
|
+
##
|
6
|
+
# Cancela CFDI
|
7
|
+
def cancelaCFDI(rfcEmisor, folioUUID)
|
8
|
+
|
9
|
+
options = {
|
10
|
+
:usuarioIntegrador => @user,
|
11
|
+
:rfcEmisor => rfcEmisor,
|
12
|
+
:folioUUID => folioUUID,
|
13
|
+
}
|
14
|
+
|
15
|
+
response = request("cancela_cfdi", options)
|
16
|
+
parse_result_cancelaCFDI response.body
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Timbradocfdi
|
2
|
+
class Generator
|
3
|
+
|
4
|
+
|
5
|
+
##
|
6
|
+
# Registro emisor
|
7
|
+
def obtieneCFDI(rfcEmisor, folioUUID)
|
8
|
+
|
9
|
+
options = {
|
10
|
+
:usuarioIntegrador => @user,
|
11
|
+
:rfcEmisor => rfcEmisor,
|
12
|
+
:folioUUID => folioUUID,
|
13
|
+
}
|
14
|
+
|
15
|
+
response = request("obtiene_cfdi", options)
|
16
|
+
parse_result_obtieneCFDI response.body
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Timbradocfdi
|
2
|
+
class Generator
|
3
|
+
|
4
|
+
|
5
|
+
##
|
6
|
+
# Registro emisor
|
7
|
+
def registroEmisor(rfcEmisor, base64Cer, base64Key, contrasena)
|
8
|
+
|
9
|
+
options = {
|
10
|
+
:usuarioIntegrador => @user,
|
11
|
+
:rfcEmisor => rfcEmisor,
|
12
|
+
:base64Cer => file_reader(base64Cer),
|
13
|
+
:base64Key => file_reader(base64Key),
|
14
|
+
:contrasena => contrasena
|
15
|
+
}
|
16
|
+
|
17
|
+
response = request("registra_emisor", options)
|
18
|
+
parse_result_registro_emisor response.body
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
module Timbradocfdi
|
3
|
+
class Generator
|
4
|
+
|
5
|
+
##
|
6
|
+
# Parse result for registro emisor
|
7
|
+
def parse_result_registro_emisor(result)
|
8
|
+
object = result.to_hash
|
9
|
+
result_object = object[:registra_emisor_response][:registra_emisor_result][:any_type]
|
10
|
+
|
11
|
+
{
|
12
|
+
code: result_object[1],
|
13
|
+
message: (result_object[2].to_s).encode("utf-8")
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
##
|
18
|
+
# Parse result for timbraCFDI
|
19
|
+
def parse_result_timbraCFDI(result)
|
20
|
+
object = result.to_hash
|
21
|
+
result_object = object[:timbra_cfdi_response][:timbra_cfdi_result][:any_type]
|
22
|
+
|
23
|
+
if result_object[1].to_i === 0
|
24
|
+
return_object = {
|
25
|
+
code: 0,
|
26
|
+
xml: result_object[3],
|
27
|
+
qr: result_object[4],
|
28
|
+
details: result_object[5]
|
29
|
+
}
|
30
|
+
else
|
31
|
+
return_object = {
|
32
|
+
code: result_object[1],
|
33
|
+
message: result_object[2]
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
return_object
|
38
|
+
end
|
39
|
+
|
40
|
+
##
|
41
|
+
# Parse result for obtieneCFDI
|
42
|
+
def parse_result_obtieneCFDI(result)
|
43
|
+
object = result.to_hash
|
44
|
+
result_object = object[:obtiene_cfdi_response][:obtiene_cfdi_result][:any_type]
|
45
|
+
|
46
|
+
if result_object[1].to_i === 0
|
47
|
+
return_object = {
|
48
|
+
code: 0,
|
49
|
+
xml: result_object[3],
|
50
|
+
qr: result_object[4],
|
51
|
+
details: result_object[5]
|
52
|
+
}
|
53
|
+
else
|
54
|
+
return_object = {
|
55
|
+
code: result_object[1],
|
56
|
+
message: result_object[2]
|
57
|
+
}
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
##
|
62
|
+
# Parse result for cancelaCFDI
|
63
|
+
def parse_result_cancelaCFDI(result)
|
64
|
+
object = result.to_hash
|
65
|
+
result_object = object[:cancela_cfdi_response][:cancela_cfdi_result][:any_type]
|
66
|
+
|
67
|
+
{
|
68
|
+
code: result_object[1],
|
69
|
+
message: (result_object[2].to_s).encode("utf-8")
|
70
|
+
}
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Timbradocfdi
|
2
|
+
class Generator
|
3
|
+
|
4
|
+
|
5
|
+
##
|
6
|
+
# TimbraCFDI
|
7
|
+
def timbraCFDI(xmlComprobante, idComprobante)
|
8
|
+
|
9
|
+
options = {
|
10
|
+
:usuarioIntegrador => @user,
|
11
|
+
:xmlComprobanteBase64 => file_reader(xmlComprobante),
|
12
|
+
:idComprobante => idComprobante,
|
13
|
+
}
|
14
|
+
|
15
|
+
response = request("timbra_cfdi", options)
|
16
|
+
parse_result_timbraCFDI response.body
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
data/lib/timbradocfdi/version.rb
CHANGED
data/prueba/cer.cer
ADDED
Binary file
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd" version="3.2" folio="1" fecha="2014-10-14T11:57:00" formaDePago="Pago en una sola exhibicion" subTotal="100" Moneda="MXN" total="116" tipoDeComprobante="ingreso" metodoDePago="Efectivo" LugarExpedicion="MEXICO">
|
3
|
+
<cfdi:Emisor rfc="AAA010101AAA" nombre="PRUEBAS INTEGRACION S.A. DE C.V.">
|
4
|
+
<cfdi:DomicilioFiscal calle="CALLE EMISOR" noExterior="1" colonia="COL. EMISOR" localidad="MEXICO" municipio="MUN. EMISOR" estado="MEXICO" pais="MEXICO" codigoPostal="53125" />
|
5
|
+
<cfdi:RegimenFiscal Regimen="REGIMEN GENERAL" />
|
6
|
+
</cfdi:Emisor>
|
7
|
+
<cfdi:Receptor rfc="BBB010101BBB" nombre="CLIENTE PRUEBA S.A. DE C.V.">
|
8
|
+
<cfdi:Domicilio calle="CALLE RECEPTOR" noExterior="1" noInterior="B" colonia="COL. RECEPTOR" municipio="MUN. RECEPTOR" estado="MEXICO" pais="MEXICO" codigoPostal="53100" />
|
9
|
+
</cfdi:Receptor>
|
10
|
+
<cfdi:Conceptos>
|
11
|
+
<cfdi:Concepto cantidad="1" unidad="PZA" noIdentificacion="00001" descripcion="PRUEBA INTEGRACION" valorUnitario="100" importe="100" />
|
12
|
+
</cfdi:Conceptos>
|
13
|
+
<cfdi:Impuestos totalImpuestosTrasladados="16">
|
14
|
+
<cfdi:Traslados>
|
15
|
+
<cfdi:Traslado impuesto="IVA" tasa="16.0" importe="16" />
|
16
|
+
</cfdi:Traslados>
|
17
|
+
</cfdi:Impuestos>
|
18
|
+
</cfdi:Comprobante>
|
data/prueba/key.key
ADDED
Binary file
|
data/prueba/prueba.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'timbradocfdi'
|
3
|
+
|
4
|
+
@user_key = "mvpNUXmQfK8="
|
5
|
+
@timbrado = Timbradocfdi::Generator.new(@user_key)
|
6
|
+
@rfcEmisor = "AAA010101AAA"
|
7
|
+
|
8
|
+
def self.registroEmisor
|
9
|
+
contrasena = "12345678a"
|
10
|
+
base64Cer = "./cer.cer"
|
11
|
+
base64Key = "./key.key"
|
12
|
+
puts @timbrado.registroEmisor(@rfcEmisor, base64Cer, base64Key, contrasena)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.timbraCFDI
|
16
|
+
comprobante = "./comprobanteSinTimbrar.xml"
|
17
|
+
puts @timbrado.timbraCFDI(comprobante, 1)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.obtieneCFDI
|
21
|
+
folioUUID = "E231C693-8871-4CEB-ADD4-DCCBE0BE5FDA"
|
22
|
+
puts @timbrado.obtieneCFDI(@rfcEmisor, folioUUID)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.cancelaCFDI
|
26
|
+
folioUUID = "E231C693-8871-4CEB-ADD4-DCCBE0BE5FDA"
|
27
|
+
puts @timbrado.cancelaCFDI(@rfcEmisor, folioUUID)
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
puts "Ejecutando prueba"
|
32
|
+
puts "Registrando emisor: \n"
|
33
|
+
self.registroEmisor
|
34
|
+
puts "------------------------------------\n\n"
|
35
|
+
|
36
|
+
puts "Timbrando CFDI"
|
37
|
+
self.timbraCFDI
|
38
|
+
puts "------------------------------------\n\n"
|
39
|
+
|
40
|
+
puts "Obteniendo CFDI"
|
41
|
+
self.obtieneCFDI
|
42
|
+
puts "------------------------------------\n\n"
|
43
|
+
|
44
|
+
puts "Cancelando CFDI"
|
45
|
+
self.cancelaCFDI
|
46
|
+
puts "------------------------------------\n\n"
|
data/timbradocfdi.gemspec
CHANGED
@@ -13,11 +13,12 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = "http://kreattiewe.com"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
|
-
spec.files = `git ls-files -z`.split("\x0")
|
16
|
+
spec.files = [`git ls-files -z`.split("\x0")]
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.6"
|
22
|
-
spec.add_development_dependency "
|
22
|
+
spec.add_development_dependency "rspec", "~> 3.1"
|
23
|
+
spec.add_development_dependency "rake", "~> 0"
|
23
24
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timbradocfdi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Angel Botto
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.1'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.1'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -54,7 +68,16 @@ files:
|
|
54
68
|
- README.md
|
55
69
|
- Rakefile
|
56
70
|
- lib/timbradocfdi.rb
|
71
|
+
- lib/timbradocfdi/cancel.rb
|
72
|
+
- lib/timbradocfdi/obtain.rb
|
73
|
+
- lib/timbradocfdi/register_emisor.rb
|
74
|
+
- lib/timbradocfdi/results.rb
|
75
|
+
- lib/timbradocfdi/stamping.rb
|
57
76
|
- lib/timbradocfdi/version.rb
|
77
|
+
- prueba/cer.cer
|
78
|
+
- prueba/comprobanteSinTimbrar.xml
|
79
|
+
- prueba/key.key
|
80
|
+
- prueba/prueba.rb
|
58
81
|
- timbradocfdi.gemspec
|
59
82
|
homepage: http://kreattiewe.com
|
60
83
|
licenses:
|