cfdi 0.1.6 → 0.1.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fdf6b9c68a005bb346923cad06e85e4d1209cb1b
4
- data.tar.gz: 5eb74e5667ffe85d3a841207505766d051757476
3
+ metadata.gz: df68b45a858a0e73411f9cf57dac1c7bdfeb26d7
4
+ data.tar.gz: 6eb6a1ee3742c074c8238703a62eec4e03f14b66
5
5
  SHA512:
6
- metadata.gz: 53beb4378b46f8e5ec4e40517567022314880bea300633417a6cfb98c72bdb74e1235e3a04bf9e0197cc17d63b8f299a455723a5156b553664e03f6732c83166
7
- data.tar.gz: 7626c0293517f697833398bd07e644f621a80f8914e9e6f3ad775a9602440d11e0b67944147b77cedd67f1e19a030d5da7dc9e15235c3d210f2ff298d87524b4
6
+ metadata.gz: 1670b91ea68a31f48699cd42c8ccef9b12d99b9b32a074ea1b75762b77b33e09431747d4a343a03fe3f399e6082691add443d3668df595128b581f4bc7cdffaf
7
+ data.tar.gz: ad25fd3211d6e49e3ac05731544ddff1067dabc67868994579b7d7199a20db1dd26b69cb90fb9800876031dae40f98b152f21441d1a08502307f95c821273f72
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ bundler_args: ''
3
+ rvm:
4
+ - "2.0.0"
5
+ before_install:
6
+ - 'echo "gem: --no-ri --no-rdoc" > ~/.gemrc'
data/Gemfile CHANGED
@@ -3,4 +3,7 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  # para tener compatibilidad con Savon 2
6
- gem 'nokogiri', '< 1.6', '>= 1.4.0'
6
+ gem 'nokogiri', '~>1.5.11'
7
+ group :test do
8
+ gem 'rake'
9
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,29 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ cfdi (0.1.6)
5
+ nokogiri (~> 1.5.11)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ diff-lcs (1.2.5)
11
+ nokogiri (1.5.11)
12
+ rake (10.1.1)
13
+ rspec (2.14.1)
14
+ rspec-core (~> 2.14.0)
15
+ rspec-expectations (~> 2.14.0)
16
+ rspec-mocks (~> 2.14.0)
17
+ rspec-core (2.14.7)
18
+ rspec-expectations (2.14.5)
19
+ diff-lcs (>= 1.1.3, < 2.0)
20
+ rspec-mocks (2.14.5)
21
+
22
+ PLATFORMS
23
+ ruby
24
+
25
+ DEPENDENCIES
26
+ cfdi!
27
+ nokogiri (~> 1.5.11)
28
+ rake
29
+ rspec
data/Rakefile CHANGED
@@ -9,4 +9,6 @@ RSpec::Core::RakeTask.new(:spec) do |t|
9
9
  t.pattern = 'test/*_spec.rb'
10
10
  end
11
11
 
12
- task :test => :spec
12
+ task :test => :spec
13
+
14
+ task :default => :spec
data/cfdi.gemspec CHANGED
@@ -1,7 +1,8 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'cfdi'
4
+
5
+ require 'version'
5
6
 
6
7
  Gem::Specification.new do |gem|
7
8
  gem.name = "cfdi"
@@ -20,8 +21,7 @@ Gem::Specification.new do |gem|
20
21
  gem.require_paths = ["lib"]
21
22
  gem.rdoc_options = '--no-private'
22
23
 
23
-
24
- gem.add_runtime_dependency 'nokogiri'
24
+ gem.add_runtime_dependency 'nokogiri', '~>1.5.11'
25
25
  gem.add_development_dependency 'rspec'
26
26
 
27
27
  end
Binary file
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0"?>
2
+ <cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" 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-06-10T13:39:19" formaDePago="PAGO EN UNA SOLA EXHIBICION" condicionesDePago="Sera marcada como pagada en cuanto el receptor haya cubierto el pago." subTotal="11000.00" Moneda="pesos" total="12760.00" metodoDePago="Transferencia Bancaria" tipoDeComprobante="ingreso" LugarExpedicion="Nutopia, Nutopia" noCertificado="20001000000200000293" certificado="MIIE2jCCA8KgAwIBAgIUMjAwMDEwMDAwMDAyMDAwMDAyOTMwDQYJKoZIhvcNAQEFBQAwggFcMRowGAYDVQQDDBFBLkMuIDIgZGUgcHJ1ZWJhczEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNpw7NuMSkwJwYJKoZIhvcNAQkBFhphc2lzbmV0QHBydWViYXMuc2F0LmdvYi5teDEmMCQGA1UECQwdQXYuIEhpZGFsZ28gNzcsIENvbC4gR3VlcnJlcm8xDjAMBgNVBBEMBTA2MzAwMQswCQYDVQQGEwJNWDEZMBcGA1UECAwQRGlzdHJpdG8gRmVkZXJhbDESMBAGA1UEBwwJQ295b2Fjw6FuMTQwMgYJKoZIhvcNAQkCDCVSZXNwb25zYWJsZTogQXJhY2VsaSBHYW5kYXJhIEJhdXRpc3RhMB4XDTEyMTAyNjE5MjI0M1oXDTE2MTAyNjE5MjI0M1owggFTMUkwRwYDVQQDE0BBU09DSUFDSU9OIERFIEFHUklDVUxUT1JFUyBERUwgRElTVFJJVE8gREUgUklFR08gMDA0IERPTiBNQVJUSU4gMWEwXwYDVQQpE1hBU09DSUFDSU9OIERFIEFHUklDVUxUT1JFUyBERUwgRElTVFJJVE8gREUgUklFR08gMDA0IERPTiBNQVJUSU4gQ09BSFVJTEEgWSBOVUVWTyBMRU9OIEFDMUkwRwYDVQQKE0BBU09DSUFDSU9OIERFIEFHUklDVUxUT1JFUyBERUwgRElTVFJJVE8gREUgUklFR08gMDA0IERPTiBNQVJUSU4gMSUwIwYDVQQtExxBQUQ5OTA4MTRCUDcgLyBIRUdUNzYxMDAzNFMyMR4wHAYDVQQFExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxETAPBgNVBAsTCFNlcnZpZG9yMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlrI9loozd+UcW7YHtqJimQjzX9wHIUcc1KZyBBB8/5fZsgZ/smWS4Sd6HnPs9GSTtnTmM4bEgx28N3ulUshaaBEtZo3tsjwkBV/yVQ3SRyMDkqBA2NEjbcum+e/MdCMHiPI1eSGHEpdESt55a0S6N24PW732Xm3ZbGgOp1tht1wIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEAuoPXe+BBIrmJn+IGeI+m97OlP3RC4Ct3amjGmZICbvhI9BTBLCL/PzQjjWBwU0MG8uK6e/gcB9f+klPiXhQTeI1YKzFtWrzctpNEJYo0KXMgvDiputKphQ324dP0nzkKUfXlRIzScJJCSgRw9ZifKWN0D9qTdkNkjk83ToPgwnldg5lzU62woXo4AKbcuabAYOVoC7owM5bfNuWJe566UzD6i5PFY15jYMzi1+ICriDItCv3S+JdqyrBrX3RloZhdyXqs2Htxfw4b1OcYboPCu4+9qM3OV02wyGKlGQMhfrXNwYyj8huxS1pHghEROM2Zs0paZUOy+6ajM+Xh0LX2w==" sello="ZU+mhhuDCnTKUJtl1uDa+6YBIXbMAIMKqjGCLaAeC/DIxuIIiwvNxmefkZtTdX2pQa3FCBAVYmv3mYABe36YwhsNsh1vaMoq/+L2sJ2Pyz17siF27XKYWc1C0qswwbm7Z3t5OSA/qnrSTgYd7O54HtRTYvyfhkeJypgrGrcqKAo=">
3
+ <cfdi:Emisor nombre="Me cago en sus est&#xE1;ndares S.A. de C.V." rfc="XAXX010101000">
4
+ <cfdi:DomicilioFiscal calle="Calle Feliz" noExterior="42" noInterior="314" colonia="Centro" localidad="No se que sea esto, pero va" referencia="Sin Referencia" municipio="Nutop&#xED;a" estado="Nutop&#xED;a" pais="Nutop&#xED;a" codigoPostal="31415"/>
5
+ <cfdi:ExpedidoEn calle="Calle Feliz" noExterior="42" noInterior="314" colonia="Centro" localidad="No se que sea esto, pero va" referencia="Sin Referencia" municipio="Nutop&#xED;a" estado="Nutop&#xED;a" pais="Nutop&#xED;a" codigoPostal="31415"/>
6
+ <cfdi:RegimenFiscal Regimen="Pruebas Fiscales"/>
7
+ </cfdi:Emisor>
8
+ <cfdi:Receptor nombre="El SAT apesta S. de R.L." rfc="XAXX010101000">
9
+ <cfdi:Domicilio referencia="Sin Referencia" estado="Nutop&#xED;a" pais="Nutop&#xED;a"/>
10
+ </cfdi:Receptor>
11
+ <cfdi:Conceptos>
12
+ <cfdi:Concepto cantidad="2" unidad="Kilos" noIdentificacion="KDV" descripcion="Verga Ción" valorUnitario="5500.00" importe="11000.00">
13
+ <cfdi:ComplementoConcepto/>
14
+ </cfdi:Concepto>
15
+ </cfdi:Conceptos>
16
+ <cfdi:Impuestos totalImpuestosTrasladados="1760.00">
17
+ <cfdi:Traslados>
18
+ <cfdi:Traslado impuesto="IVA" tasa="16.00" importe="1760.00"/>
19
+ </cfdi:Traslados>
20
+ </cfdi:Impuestos>
21
+ <cfdi:Complemento>
22
+ <tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" UUID="7A4E280E-4069-4675-8E64-A2B46D6348E8" FechaTimbrado="2014-06-10T13:39:19" selloCFD="ZU+mhhuDCnTKUJtl1uDa+6YBIXbMAIMKqjGCLaAeC/DIxuIIiwvNxmefkZtTdX2pQa3FCBAVYmv3mYABe36YwhsNsh1vaMoq/+L2sJ2Pyz17siF27XKYWc1C0qswwbm7Z3t5OSA/qnrSTgYd7O54HtRTYvyfhkeJypgrGrcqKAo=" noCertificadoSAT="00001000000203220518" selloSAT="ByQZNqyNxIapyz0WgsRUgOmucka3vl9rz9bIvaFVNtWqTVIIFyVuRH/ptfOG15aAtqyKUY3m7eVbNVdJOzSFLzeLS3Z4lFOQwi1jGwyrYabgBabDgSEVAhtQ+kwyPUPyqKDgvCQkF4BbAPB/H2E5Xv69KJtT2pyLD3BrumNO6vE=" version="1.0" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/TimbreFiscalDigital/TimbreFiscalDigital.xsd"/>
23
+ </cfdi:Complemento>
24
+ </cfdi:Comprobante>
data/lib/cfdi.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
- gem 'nokogiri', '< 1.6', '>= 1.4.0'
2
+ gem 'nokogiri', '1.5.11'
3
3
 
4
+ require_relative 'version.rb'
4
5
  require_relative 'comun.rb'
5
6
  require_relative 'addenda.rb'
6
7
  require_relative 'comprobante.rb'
@@ -15,12 +16,9 @@ require_relative 'key.rb'
15
16
  #
16
17
  # El sistema de generación y sellado de facturas es una patada en los genitales. Este gem pretende ser una bolsa de hielos. Igual va a doler, pero espero que al menos no quede moretón.
17
18
  module CFDI
18
-
19
+
19
20
  require 'nokogiri'
20
21
  require 'time'
21
22
  require 'base64'
22
23
 
23
- # La versión de este gem
24
- VERSION = '0.1.6'
25
-
26
24
  end
data/lib/comprobante.rb CHANGED
@@ -304,7 +304,33 @@ module CFDI
304
304
 
305
305
  return "||#{params.join '|'}||"
306
306
  end
307
-
307
+
308
+
309
+ # Revisa que el timbre de un comprobante sea válido
310
+ # @param [String] El certificado del PAC
311
+ #
312
+ # @return [Boolean] El resultado de la validación
313
+ def timbre_valido? cert=nil
314
+ return false unless complemento && complemento.selloSAT
315
+
316
+ unless cert
317
+ require 'open-uri'
318
+ comps = complemento.noCertificadoSAT.scan(/(\d{6})(\d{6})(\d{2})(\d{2})(\d{2})?/)
319
+ base_url = 'ftp://ftp2.sat.gob.mx/Certificados/FEA'
320
+ url = "#{base_url}/#{comps.join('/')}/#{cert}.cer"
321
+ begin
322
+ cert = open(url).read
323
+ rescue Exception => e
324
+ raise "No pude descargar el certificado <#{url}>: #{e}"
325
+ end
326
+ end
327
+
328
+ cert = OpenSSL::X509::Certificate.new cert
329
+ selloBytes = Base64::decode64(complemento.selloSAT)
330
+ cert.public_key.verify(OpenSSL::Digest::SHA1.new, selloBytes, complemento.cadena)
331
+ end
332
+
333
+
308
334
  # @private
309
335
  def self.rmerge defaults, other_hash
310
336
  result = defaults.merge(other_hash) do |key, oldval, newval|
data/lib/version.rb ADDED
@@ -0,0 +1,4 @@
1
+ module CFDI
2
+ # La versión de este gem
3
+ VERSION = '0.1.7'
4
+ end
data/readme.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # CFDI para principiantes en CFDI
2
+ [![Build Status](https://travis-ci.org/unRob/CFDI.png?branch=master)](https://travis-ci.org/unRob/CFDI)
2
3
 
3
4
  El sistema de generación y sellado de facturas es una patada en los genitales. Este gem pretende ser una bolsa de hielos. Igual va a doler, pero espero que al menos no quede moretón.
4
5
 
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  require_relative '../lib/cfdi.rb'
2
3
 
3
4
  describe CFDI::Comprobante do
@@ -29,29 +30,35 @@ describe CFDI::Comprobante do
29
30
  :cancelada=>nil,
30
31
  :impuestos=>[]
31
32
  }
32
- comprobante.to_h.should be_eql(defaults)
33
+ expect(comprobante.to_h).to be_eql(defaults)
33
34
  end
34
35
 
35
36
  it "debe de poder settear defaults" do
36
- opts = CFDI::Comprobante.configure({defaults: {version: '2.0'}})
37
+ CFDI::Comprobante.configure({defaults: {version: '2.0'}})
37
38
  comprobante = CFDI::Comprobante.new
38
- comprobante.version.should == '2.0'
39
+ expect(comprobante.version).to eq '2.0'
39
40
  end
40
41
 
41
42
  it "debe de generar un comprobante desde XML" do
42
43
  comprobante = CFDI.from_xml(File.read('./examples/data/cfdi.xml'))
43
44
  returns = {:version=>"3.2", :fecha=>"2013-10-15T01:33:32", :tipoDeComprobante=>"ingreso", :formaDePago=>"PAGO EN UNA SOLA EXHIBICION", :condicionesDePago=>"Sera marcada como pagada en cuanto el receptor haya cubierto el pago.", :subTotal=>11000.0, :TipoCambio=>1, :moneda=>"pesos", :total=>12760.0, :metodoDePago=>"Transferencia Bancaria", :lugarExpedicion=>"Nutopia, Nutopia", :NumCtaPago=>nil, :emisor=>{:rfc=>"XAXX010101000", :nombre=>"Me cago en sus estándares S.A. de C.V.", :domicilioFiscal=>{:calle=>"Calle Feliz", :noExterior=>"42", :noInterior=>"314", :colonia=>"Centro", :localidad=>"No se que sea esto, pero va", :referencia=>"Sin Referencia", :municipio=>"Nutopía", :estado=>"Nutopía", :pais=>"Nutopía", :codigoPostal=>"31415"}, :expedidoEn=>{:calle=>"Calle Feliz", :noExterior=>"42", :noInterior=>nil, :colonia=>"Centro", :localidad=>"No se que sea esto, pero va", :referencia=>"Sin Referencia", :municipio=>"Nutopía", :estado=>"Nutopía", :pais=>"Nutopía", :codigoPostal=>"31415"}, :regimenFiscal=>"Pruebas Fiscales"}, :receptor=>{:rfc=>"XAXX010101000", :nombre=>"El SAT apesta S. de R.L.", :domicilioFiscal=>{:calle=>nil, :noExterior=>nil, :noInterior=>nil, :colonia=>nil, :localidad=>nil, :referencia=>"Sin Referencia", :municipio=>nil, :estado=>"Nutopía", :pais=>"Nutopía", :codigoPostal=>nil}, :expedidoEn=>nil, :regimenFiscal=>nil}, :conceptos=>[{:cantidad=>2, :unidad=>"Kilos", :noIdentificacion=>"KDV", :descripcion=>"Verga Ción", :valorUnitario=>5500.0, :importe=>11000.0}], :serie=>nil, :folio=>"1", :sello=>"igFu7Q9Z98n6xFSLMv7a2y8ZlJCO+pgTX3xDAUt5xSpX3dHOKXkTHBAf4P/oHHDm3xkYkaNBfPEzpVFDrRVjL2rvkR5T9rsFqb4cl6DOo4RrRIpSR9vojLp7mFWiON9H6OFPi2b9PVAnyIx1Skb5iGIAmSQIhVYyt2DSauObY2c=", :noCertificado=>"20001000000200000293", :certificado=>"MIIE2jCCA8KgAwIBAgIUMjAwMDEwMDAwMDAyMDAwMDAyOTMwDQYJKoZIhvcNAQEFBQAwggFcMRowGAYDVQQDDBFBLkMuIDIgZGUgcHJ1ZWJhczEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNpw7NuMSkwJwYJKoZIhvcNAQkBFhphc2lzbmV0QHBydWViYXMuc2F0LmdvYi5teDEmMCQGA1UECQwdQXYuIEhpZGFsZ28gNzcsIENvbC4gR3VlcnJlcm8xDjAMBgNVBBEMBTA2MzAwMQswCQYDVQQGEwJNWDEZMBcGA1UECAwQRGlzdHJpdG8gRmVkZXJhbDESMBAGA1UEBwwJQ295b2Fjw6FuMTQwMgYJKoZIhvcNAQkCDCVSZXNwb25zYWJsZTogQXJhY2VsaSBHYW5kYXJhIEJhdXRpc3RhMB4XDTEyMTAyNjE5MjI0M1oXDTE2MTAyNjE5MjI0M1owggFTMUkwRwYDVQQDE0BBU09DSUFDSU9OIERFIEFHUklDVUxUT1JFUyBERUwgRElTVFJJVE8gREUgUklFR08gMDA0IERPTiBNQVJUSU4gMWEwXwYDVQQpE1hBU09DSUFDSU9OIERFIEFHUklDVUxUT1JFUyBERUwgRElTVFJJVE8gREUgUklFR08gMDA0IERPTiBNQVJUSU4gQ09BSFVJTEEgWSBOVUVWTyBMRU9OIEFDMUkwRwYDVQQKE0BBU09DSUFDSU9OIERFIEFHUklDVUxUT1JFUyBERUwgRElTVFJJVE8gREUgUklFR08gMDA0IERPTiBNQVJUSU4gMSUwIwYDVQQtExxBQUQ5OTA4MTRCUDcgLyBIRUdUNzYxMDAzNFMyMR4wHAYDVQQFExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxETAPBgNVBAsTCFNlcnZpZG9yMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlrI9loozd+UcW7YHtqJimQjzX9wHIUcc1KZyBBB8/5fZsgZ/smWS4Sd6HnPs9GSTtnTmM4bEgx28N3ulUshaaBEtZo3tsjwkBV/yVQ3SRyMDkqBA2NEjbcum+e/MdCMHiPI1eSGHEpdESt55a0S6N24PW732Xm3ZbGgOp1tht1wIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEAuoPXe+BBIrmJn+IGeI+m97OlP3RC4Ct3amjGmZICbvhI9BTBLCL/PzQjjWBwU0MG8uK6e/gcB9f+klPiXhQTeI1YKzFtWrzctpNEJYo0KXMgvDiputKphQ324dP0nzkKUfXlRIzScJJCSgRw9ZifKWN0D9qTdkNkjk83ToPgwnldg5lzU62woXo4AKbcuabAYOVoC7owM5bfNuWJe566UzD6i5PFY15jYMzi1+ICriDItCv3S+JdqyrBrX3RloZhdyXqs2Htxfw4b1OcYboPCu4+9qM3OV02wyGKlGQMhfrXNwYyj8huxS1pHghEROM2Zs0paZUOy+6ajM+Xh0LX2w==", :complemento=>nil, :cancelada=>nil, :impuestos=>[{:impuesto=>"IVA"}]}
44
- comprobante.to_h.should be_eql(returns)
45
+ expect(comprobante.to_h).to eq returns
45
46
  end
46
47
 
47
48
  it "no debe de generar atributos vacios" do
48
49
  comprobante = CFDI.from_xml(File.read('./examples/data/cfdi.xml'))
49
50
  #el comprobante de XML no tiene numero de cuenta de pago
50
- comprobante.to_xml.should_not =~ /NumCtaPago/
51
+ expect(comprobante.to_xml).not_to match(/NumCtaPago/)
51
52
 
52
53
  #si quitamos referencia
53
54
  comprobante.emisor.domicilioFiscal.referencia = nil
54
- comprobante.to_xml.should_not =~ /DomicilioFiscal.+referencia/
55
+ expect(comprobante.to_xml).not_to match(/DomicilioFiscal.+referencia/)
56
+ end
57
+
58
+ it "debe validar un Timbre Fiscal Digital" do
59
+ comprobante = CFDI.from_xml(File.read('./examples/data/timbrado.xml'))
60
+ cert = File.read('./examples/data/certPAC.cer')
61
+ expect(comprobante.timbre_valido? cert).to be false
55
62
  end
56
63
 
57
64
  end
@@ -13,7 +13,7 @@ describe CFDI::Entidad do
13
13
  }
14
14
  })
15
15
 
16
- entidad.domicilioFiscal.should be_a CFDI::Domicilio
16
+ expect(entidad.domicilioFiscal).to be_a CFDI::Domicilio
17
17
  end
18
18
 
19
19
 
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfdi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
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-02-18 00:00:00.000000000 Z
11
+ date: 2014-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.5.11
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 1.5.11
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  description: Comprobantes fiscales digitales por internet
@@ -45,8 +45,10 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
- - .gitignore
48
+ - ".gitignore"
49
+ - ".travis.yml"
49
50
  - Gemfile
51
+ - Gemfile.lock
50
52
  - LICENSE.txt
51
53
  - Rakefile
52
54
  - cfdi.gemspec
@@ -75,7 +77,9 @@ files:
75
77
  - doc/top-level-namespace.html
76
78
  - examples/crear_factura.rb
77
79
  - examples/data/_empty
80
+ - examples/data/certPAC.cer
78
81
  - examples/data/cfdi.xml
82
+ - examples/data/timbrado.xml
79
83
  - examples/desde_xml.rb
80
84
  - lib/addenda.rb
81
85
  - lib/certificado.rb
@@ -86,10 +90,11 @@ files:
86
90
  - lib/concepto.rb
87
91
  - lib/entidad.rb
88
92
  - lib/key.rb
93
+ - lib/version.rb
89
94
  - lib/xml.rb
90
95
  - readme.md
91
96
  - test/comprobante_spec.rb
92
- - test/entidar_spec.rb
97
+ - test/entidad_spec.rb
93
98
  homepage: https://github.com/unRob/cfdi
94
99
  licenses:
95
100
  - WTFPL
@@ -97,26 +102,25 @@ licenses:
97
102
  metadata: {}
98
103
  post_install_message:
99
104
  rdoc_options:
100
- - --no-private
105
+ - "--no-private"
101
106
  require_paths:
102
107
  - lib
103
108
  required_ruby_version: !ruby/object:Gem::Requirement
104
109
  requirements:
105
- - - '>='
110
+ - - ">="
106
111
  - !ruby/object:Gem::Version
107
112
  version: '0'
108
113
  required_rubygems_version: !ruby/object:Gem::Requirement
109
114
  requirements:
110
- - - '>='
115
+ - - ">="
111
116
  - !ruby/object:Gem::Version
112
117
  version: '0'
113
118
  requirements: []
114
119
  rubyforge_project:
115
- rubygems_version: 2.0.3
120
+ rubygems_version: 2.2.2
116
121
  signing_key:
117
122
  specification_version: 4
118
123
  summary: Digitales!! por Internet!!
119
124
  test_files:
120
125
  - test/comprobante_spec.rb
121
- - test/entidar_spec.rb
122
- has_rdoc: true
126
+ - test/entidad_spec.rb