timbradocfdi 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|