fm_timbrado_cfdi 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 89cd03bc7bf2f58390477d7a1512cb0c02948afa
4
- data.tar.gz: 989a8a71fc06753db2016b1aca6d5e45dd4bff29
3
+ metadata.gz: c53655154992b61d9112255b533ee3e53c96edc4
4
+ data.tar.gz: 5223cc5a316f3e155fb393e8c81fdf9be5147a40
5
5
  SHA512:
6
- metadata.gz: d8348f8b2703b5f718d3cc1488c45dcb0d57ad9a8decfb73f52f9131d999432c071340b562b343e00ceb5af30cec0fa94fe1004c3eb20babafcc48ec4f46a391
7
- data.tar.gz: bce2590e41caec15a8cfecc3b8ce94e65b9bc2c3a000c1e754fc566ca3e472c8ac411e8ae23591c84be7f9cec3f1a16c504f1cc4552e976e83f23b8971385647
6
+ metadata.gz: 1577e3b67ca31f0800c44fc179e556d7d0dc4e5418fcceebe1d1e2595d25f995e864ec69c1759a24e5985d38b7da2aee9369732f66a58dac903ac8ad193f7ea1
7
+ data.tar.gz: d57e5d66acfd1d04c6e271dfbac007d8d3c73bacbdddf29be48c7ce4d42e93ee75cb3ca83fdf66a61fd5c9c449552434a80899065580aa0defc3c5bdc1004a0f
@@ -25,52 +25,34 @@ module FmTimbradoCfdi
25
25
  def timbrar(rfc, documento, opciones={})
26
26
  text_to_cfdi = Base64::encode64( documento )
27
27
  # Realizamos la peticion
28
- configurar_cliente
29
- response = @client.call(:request_timbrar_cfdi,
30
- message:
31
- { "param0" => {
32
- "UserPass" => user_pass,
33
- "UserID" => user_id,
34
- "emisorRFC" => rfc,
35
- "text2CFDI" => text_to_cfdi,
36
- }.merge(opciones)
37
- }
38
- )
39
- FmRespuesta.new(response)
28
+ respuesta = webservice_call(:request_timbrar_cfdi, rfc, {"text2CFDI" => text_to_cfdi}.merge(opciones))
29
+ FmRespuesta.new(respuesta)
40
30
  end
41
31
 
42
32
  def subir_certificado(rfc, certificado, llave, password, opciones = {})
43
- configurar_cliente
44
- respuesta = @client.call(:activar_cancelacion,
45
- message:
46
- { "param0" => {
47
- "UserPass" => user_pass,
48
- "UserID" => user_id,
49
- "emisorRFC" => rfc,
50
- "archivoCer" => Base64::encode64(certificado),
33
+ parametros = { "archivoCer" => Base64::encode64(certificado),
51
34
  "archivoKey" => Base64::encode64(llave),
52
- "clave" => password,
53
- }.merge(opciones)
54
- })
35
+ "clave" => password }
36
+ respuesta = webservice_call(:activar_cancelacion, rfc, parametros.merge(opciones))
55
37
  FmRespuestaCancelacion.new(respuesta)
56
38
  end
57
39
 
58
40
  def cancelar(rfc, uuid, opciones = {})
59
- configurar_cliente
60
- respuesta = @client.call(:request_cancelar_cfdi,
61
- message:
62
- { "param0" => {
63
- "UserPass" => user_pass,
64
- "UserID" => user_id,
65
- "emisorRFC" => rfc,
66
- "uuid" => uuid,
67
- }.merge(opciones)
68
- })
41
+ respuesta = webservice_call(:request_cancelar_cfdi, rfc, {uuid: uuid}.merge(opciones))
69
42
  FmRespuestaCancelacion.new(respuesta)
70
43
  end
71
44
 
72
45
 
73
46
  private
47
+
48
+ def webservice_call(accion, rfc, opciones)
49
+ configurar_cliente
50
+ parametros= { "param0" => { "UserPass" => user_pass, "UserID" => user_id, "emisorRFC" => rfc }.merge(opciones) }
51
+ @client.call(accion,
52
+ message: parametros
53
+ )
54
+ end
55
+
74
56
  def configurar_cliente
75
57
  @client = Savon.client(
76
58
  ssl_verify_mode: ssl_verify_mode,
@@ -5,21 +5,22 @@ require 'fm_timbrado_cfdi/fm_timbre'
5
5
 
6
6
  module FmTimbradoCfdi
7
7
  class FmRespuesta
8
- attr_reader :errors, :pdf, :xml, :cbb, :timbre, :no_csd_emisor
9
- def initialize(savon_response)
10
- parse(savon_response)
8
+ attr_reader :errors, :pdf, :xml, :cbb, :timbre, :no_csd_emisor, :raw
9
+ def initialize(response)
10
+ @errors = []
11
+ if response.is_a? String
12
+ @raw = response
13
+ procesar_respuesta(response)
14
+ else
15
+ parse_savon(response)
16
+ end
11
17
  end
12
18
 
13
- def parse (savon_response)
14
- @errors = []
19
+ def parse_savon (savon_response)
15
20
  begin
16
21
  if savon_response.success? then
17
- @doc = Nokogiri::XML(savon_response.to_xml)
18
- @xml = obtener_xml(@doc)
19
- @no_csd_emisor = obtener_no_csd_emisor(@xml) if @xml
20
- @timbre = obtener_timbre(@xml)
21
- @pdf = obtener_pdf(@doc)
22
- @cbb = obtener_cbb(@doc)
22
+ @raw = savon_response.to_xml
23
+ procesar_respuesta(savon_response.to_xml)
23
24
  else
24
25
  @errors << savon_response.soap_fault.to_s if savon_response.soap_fault?
25
26
  @doc = @xml = @no_csd_emisor = @timbre = @pdf = @cbb = nil
@@ -60,6 +61,15 @@ module FmTimbradoCfdi
60
61
 
61
62
  private
62
63
 
64
+ def procesar_respuesta(respuesta_xml)
65
+ @doc = Nokogiri::XML(respuesta_xml)
66
+ @xml = obtener_xml(@doc)
67
+ @no_csd_emisor = obtener_no_csd_emisor(@xml) if @xml
68
+ @timbre = obtener_timbre(@xml)
69
+ @pdf = obtener_pdf(@doc)
70
+ @cbb = obtener_cbb(@doc)
71
+ end
72
+
63
73
  def obtener_xml(doc)
64
74
  unless doc.xpath("//xml").empty? then
65
75
  Base64::decode64 doc.xpath("//xml")[0].content
@@ -1,3 +1,3 @@
1
1
  module FmTimbradoCfdi
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -20,10 +20,16 @@ describe FmTimbradoCfdi::FmRespuesta do
20
20
  it { expect(respuesta.no_csd_emisor?).to eq(false) }
21
21
  end
22
22
 
23
+ context 'respuesta correcta' do
24
+ let(:texto_respuesta){File.open('spec/fixtures/soap_response.txt').read}
25
+ let(:respuesta) { FmTimbradoCfdi::FmRespuesta.new(texto_respuesta) }
26
+ it { expect(respuesta.valid?).to eq(true) }
27
+ end
28
+
23
29
  context "respuesta sin xml" do
24
30
  let(:texto_respuesta){File.open('spec/fixtures/soap_response_sin_xml.txt').read}
25
31
  let(:respuesta) { FmTimbradoCfdi::FmRespuesta.new(texto_respuesta) }
26
32
  it { expect(respuesta.valid?).to eq(false) }
33
+ it { expect(respuesta.errors.first).to eq("No se ha encontrado el nodo xml") }
27
34
  end
28
-
29
35
  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.3
4
+ version: 0.0.4
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: 2014-01-07 00:00:00.000000000 Z
13
+ date: 2014-01-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri