sw_fac 0.1.0

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.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.travis.yml +5 -0
  4. data/Gemfile +6 -0
  5. data/Gemfile.lock +26 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +39 -0
  8. data/Rakefile +10 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/lib/cadena/ComercioExterior11.xslt +181 -0
  12. data/lib/cadena/Pagos10.xslt +165 -0
  13. data/lib/cadena/TuristaPasajeroExtranjero.xslt +40 -0
  14. data/lib/cadena/aerolineas.xslt +50 -0
  15. data/lib/cadena/cadena33.xslt +349 -0
  16. data/lib/cadena/certificadodedestruccion.xslt +60 -0
  17. data/lib/cadena/cfdiregistrofiscal.xslt +19 -0
  18. data/lib/cadena/cfdv33.xsd +737 -0
  19. data/lib/cadena/consumodecombustibles.xslt +108 -0
  20. data/lib/cadena/detallista.xslt +42 -0
  21. data/lib/cadena/divisas.xslt +13 -0
  22. data/lib/cadena/donat11.xslt +13 -0
  23. data/lib/cadena/ecc11.xslt +102 -0
  24. data/lib/cadena/iedu.xslt +26 -0
  25. data/lib/cadena/implocal.xslt +39 -0
  26. data/lib/cadena/ine11.xslt +51 -0
  27. data/lib/cadena/leyendasFisc.xslt +28 -0
  28. data/lib/cadena/nomina12.xslt +412 -0
  29. data/lib/cadena/notariospublicos.xslt +301 -0
  30. data/lib/cadena/obrasarteantiguedades.xslt +33 -0
  31. data/lib/cadena/pagoenespecie.xslt +39 -0
  32. data/lib/cadena/pfic.xslt +13 -0
  33. data/lib/cadena/renovacionysustitucionvehiculos.xslt +152 -0
  34. data/lib/cadena/servicioparcialconstruccion.xslt +44 -0
  35. data/lib/cadena/terceros11.xslt +108 -0
  36. data/lib/cadena/utilerias.xslt +22 -0
  37. data/lib/cadena/valesdedespensa.xslt +70 -0
  38. data/lib/cadena/vehiculousado.xslt +63 -0
  39. data/lib/cadena/ventavehiculos11.xslt +53 -0
  40. data/lib/sw_fac/config.rb +69 -0
  41. data/lib/sw_fac/facturacion.rb +616 -0
  42. data/lib/sw_fac/tools.rb +105 -0
  43. data/lib/sw_fac/version.rb +3 -0
  44. data/lib/sw_fac.rb +18 -0
  45. data/sw_fac.gemspec +38 -0
  46. data/test/sw_fac_test.rb +11 -0
  47. data/test/test_helper.rb +4 -0
  48. metadata +146 -0
@@ -0,0 +1,105 @@
1
+ module SwFac
2
+ class Tools < Config
3
+
4
+ def consulta_saldo
5
+ # Servicio utilizado para consultar los timbres disponibles en el entorno productivo
6
+
7
+ url_prod = URI("#{SwFac::UrlProduction}account/balance")
8
+ http = Net::HTTP.new(url_prod.host, url_prod.port)
9
+ request = Net::HTTP::Get.new(url_prod)
10
+ request["Authorization"] = "bearer #{@production_token}"
11
+ request.content_type = "application/json"
12
+ request["Cache-Control"] = 'no-cache'
13
+
14
+ response_1 = http.request(request)
15
+ res = JSON.parse(response_1.body)
16
+ response = {}
17
+
18
+ if response_1.code == '200'
19
+ response[:status] = '200'
20
+ response[:saldo] = res['data']['saldoTimbres']
21
+ else
22
+ response[:status] = '401'
23
+ response[:saldo] = ''
24
+ # response[:error] = ""
25
+ end
26
+
27
+ return response
28
+
29
+ rescue => e
30
+ puts "Error: #{e}"
31
+ end
32
+
33
+ def valida_rfc(rfc)
34
+ # Servicio para identificar que los RFC (emisores y receptores) que intervienen en el proceso sean válidos,
35
+ # es decir que estén en la LCO (Lista de Contribuyentes con Obligación ante el SAT).
36
+ #
37
+ # Parameters:
38
+ # rfc: (String)
39
+
40
+ url = URI("#{SwFac::UrlProduction}lrfc/#{rfc}")
41
+ http = Net::HTTP.new(url.host, url.port)
42
+ request = Net::HTTP::Get.new(url)
43
+ request["Authorization"] = "bearer #{@production_token}"
44
+ request.content_type = "application/json"
45
+ request["Cache-Control"] = 'no-cache'
46
+ request["Postman-Token"] = 'a663ff71-f97d-57c9-be0b-1b1cdc06871e'
47
+
48
+ pet = http.request(request)
49
+ parsed = JSON.parse(pet.body)
50
+ response = {}
51
+
52
+ if pet.code == '200'
53
+ response[:status] = parsed['status']
54
+ response[:rfc_consultado] = parsed['data']['contribuyenteRFC']
55
+ response[:sncf] = parsed['data']['sncf']
56
+ response[:subcontratacion] = parsed['data']['subcontratacion']
57
+ else
58
+ response[:status] = 'Error'
59
+ response[:message] = parsed['message']
60
+ response[:message_detail] = parsed['messageDetail']
61
+ end
62
+
63
+ return response
64
+
65
+ rescue => e
66
+ puts "Error: #{e}"
67
+ end
68
+
69
+ def consulta_no_certificado(no_certificado)
70
+ # Servicio para validar el numero de certificado
71
+ #
72
+ # Parameters:
73
+ # no_certificado: (String)
74
+
75
+ url = URI("#{SwFac::UrlProduction}lco/#{no_certificado}")
76
+ http = Net::HTTP.new(url.host, url.port)
77
+ request = Net::HTTP::Get.new(url)
78
+ request["Authorization"] = "bearer #{@production_token}"
79
+ request.content_type = "application/json"
80
+ request["Cache-Control"] = 'no-cache'
81
+ request["Postman-Token"] = 'e17ee551-7f7a-32a7-8fd8-6b53ea70e3c9'
82
+
83
+ pet = http.request(request)
84
+ parsed = JSON.parse(pet.body)
85
+ response = {}
86
+
87
+ if pet.code == '200'
88
+ response[:status] = parsed['status']
89
+ response[:certificado_consultado] = parsed['data']['noCertificado']
90
+ response[:rfc] = parsed['data']['rfc']
91
+ response[:valides_obligaciones] = parsed['data']['validezObligaciones']
92
+ response[:status_certificado] = parsed['data']['estatusCertificado']
93
+ response[:fecha_inicio] = parsed['data']['fechaInicio']
94
+ response[:fecha_final] = parsed['data']['fechaFinal']
95
+ else
96
+ response[:status] = 'Error'
97
+ response[:message] = parsed['message']
98
+ response[:message_detail] = parsed['messageDetail']
99
+ end
100
+
101
+ return response
102
+ end
103
+
104
+ end
105
+ end
@@ -0,0 +1,3 @@
1
+ module SwFac
2
+ VERSION = "0.1.0"
3
+ end
data/lib/sw_fac.rb ADDED
@@ -0,0 +1,18 @@
1
+ require "sw_fac/version"
2
+ require "sw_fac/config"
3
+ require "sw_fac/tools"
4
+ require "sw_fac/facturacion"
5
+
6
+ require 'openssl'
7
+ require 'net/http'
8
+ require 'base64'
9
+ require 'json'
10
+ require 'securerandom'
11
+ require 'fileutils'
12
+
13
+ # External gems
14
+ require 'nokogiri'
15
+
16
+ module SwFac
17
+
18
+ end
data/sw_fac.gemspec ADDED
@@ -0,0 +1,38 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "sw_fac/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "sw_fac"
8
+ spec.version = SwFac::VERSION
9
+ spec.authors = ["Angel Padilla"]
10
+ spec.email = ["angelpadillam@gmail.com"]
11
+
12
+ spec.summary = %q{Gem used to fetch the Smarter Web API, used in mfactura.ml}
13
+ # spec.description = %q{}
14
+ spec.homepage = "https://mfactura.ml"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ # if spec.respond_to?(:metadata)
20
+ # spec.metadata["allowed_push_host"] = "https://rubygems.org/"
21
+ # else
22
+ # raise "RubyGems 2.0 or newer is required to protect against " \
23
+ # "public gem pushes."
24
+ # end
25
+
26
+ # Specify which files should be added to the gem when it is released.
27
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
28
+ spec.files = `git ls-files`.split("\n")
29
+ spec.bindir = "exe"
30
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
+ spec.require_paths = ["lib"]
32
+
33
+ spec.add_development_dependency "bundler", "~> 1.16"
34
+ spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "minitest", "~> 5.0"
36
+
37
+ spec.add_dependency "nokogiri", "1.8.2"
38
+ end
@@ -0,0 +1,11 @@
1
+ require "test_helper"
2
+
3
+ class SwFacTest < Minitest::Test
4
+ def test_that_it_has_a_version_number
5
+ refute_nil ::SwFac::VERSION
6
+ end
7
+
8
+ def test_it_does_something_useful
9
+ assert false
10
+ end
11
+ end
@@ -0,0 +1,4 @@
1
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
2
+ require "sw_fac"
3
+
4
+ require "minitest/autorun"
metadata ADDED
@@ -0,0 +1,146 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sw_fac
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Angel Padilla
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-09-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: nokogiri
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.8.2
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.8.2
69
+ description:
70
+ email:
71
+ - angelpadillam@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".travis.yml"
78
+ - Gemfile
79
+ - Gemfile.lock
80
+ - LICENSE.txt
81
+ - README.md
82
+ - Rakefile
83
+ - bin/console
84
+ - bin/setup
85
+ - lib/cadena/ComercioExterior11.xslt
86
+ - lib/cadena/Pagos10.xslt
87
+ - lib/cadena/TuristaPasajeroExtranjero.xslt
88
+ - lib/cadena/aerolineas.xslt
89
+ - lib/cadena/cadena33.xslt
90
+ - lib/cadena/certificadodedestruccion.xslt
91
+ - lib/cadena/cfdiregistrofiscal.xslt
92
+ - lib/cadena/cfdv33.xsd
93
+ - lib/cadena/consumodecombustibles.xslt
94
+ - lib/cadena/detallista.xslt
95
+ - lib/cadena/divisas.xslt
96
+ - lib/cadena/donat11.xslt
97
+ - lib/cadena/ecc11.xslt
98
+ - lib/cadena/iedu.xslt
99
+ - lib/cadena/implocal.xslt
100
+ - lib/cadena/ine11.xslt
101
+ - lib/cadena/leyendasFisc.xslt
102
+ - lib/cadena/nomina12.xslt
103
+ - lib/cadena/notariospublicos.xslt
104
+ - lib/cadena/obrasarteantiguedades.xslt
105
+ - lib/cadena/pagoenespecie.xslt
106
+ - lib/cadena/pfic.xslt
107
+ - lib/cadena/renovacionysustitucionvehiculos.xslt
108
+ - lib/cadena/servicioparcialconstruccion.xslt
109
+ - lib/cadena/terceros11.xslt
110
+ - lib/cadena/utilerias.xslt
111
+ - lib/cadena/valesdedespensa.xslt
112
+ - lib/cadena/vehiculousado.xslt
113
+ - lib/cadena/ventavehiculos11.xslt
114
+ - lib/sw_fac.rb
115
+ - lib/sw_fac/config.rb
116
+ - lib/sw_fac/facturacion.rb
117
+ - lib/sw_fac/tools.rb
118
+ - lib/sw_fac/version.rb
119
+ - sw_fac.gemspec
120
+ - test/sw_fac_test.rb
121
+ - test/test_helper.rb
122
+ homepage: https://mfactura.ml
123
+ licenses:
124
+ - MIT
125
+ metadata: {}
126
+ post_install_message:
127
+ rdoc_options: []
128
+ require_paths:
129
+ - lib
130
+ required_ruby_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ requirements: []
141
+ rubyforge_project:
142
+ rubygems_version: 2.4.5
143
+ signing_key:
144
+ specification_version: 4
145
+ summary: Gem used to fetch the Smarter Web API, used in mfactura.ml
146
+ test_files: []