nubefact 0.0.3 → 0.0.5

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: 096ea3a2546138dd63d789c2a29e6fee81b98084
4
- data.tar.gz: dda3d8057dc25a06843937614531daf013b5aa45
3
+ metadata.gz: f2252343e627455539a50af6333cee4c19e20ef0
4
+ data.tar.gz: 11531c9c00b2040508b476e461f215cf1cfc6126
5
5
  SHA512:
6
- metadata.gz: 51ed1df354d273e9bf8cefc258a102ca96e1c3ca6d80fcd46f08b380044393696fcd5f6fba21fba608702ad2b8af24651d53092aa453aa8d11734cb498c712d7
7
- data.tar.gz: bd846801d41d65513afaffe669f7c90c68e07374ccfcbf73407f3d241825d7918ddd48b100833026baeb064c09019a3bab7cde6abf6205d6fd9252a761f54a13
6
+ metadata.gz: 92860839372d361f7c14361e33de2cc4bee2b7aba46b3030022503c509a79a9b4d9d44892ac15b96895c71b4b869287e6d555328312b726d1e2c403ef822eb58
7
+ data.tar.gz: c2ee49792897db3f3add27a4bbd3db92a9e9a1391d366de73e4207925b6d9eb405954fc482b073e017400b10735c4179674d55292560dede20c0ef2a31913a3c
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ estas
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.2.1
data/Gemfile CHANGED
@@ -3,6 +3,7 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in nubefact.gemspec
4
4
  gemspec
5
5
 
6
+ gem 'nokogiri', '~> 1.6'
6
7
 
7
8
  group :development do
8
9
  gem 'pry'
@@ -13,3 +14,4 @@ group :test do
13
14
  gem 'simplecov', '~> 0.15', require: false
14
15
  gem 'webmock'
15
16
  end
17
+
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nubefact (0.0.1)
4
+ nubefact (0.0.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -16,6 +16,9 @@ GEM
16
16
  hashdiff (0.3.6)
17
17
  json (2.1.0)
18
18
  method_source (0.9.0)
19
+ mini_portile (0.6.2)
20
+ nokogiri (1.6.6.2)
21
+ mini_portile (~> 0.6.0)
19
22
  pry (0.11.1)
20
23
  coderay (~> 1.1.0)
21
24
  method_source (~> 0.9.0)
@@ -50,6 +53,7 @@ PLATFORMS
50
53
 
51
54
  DEPENDENCIES
52
55
  bundler (~> 1.13)
56
+ nokogiri (~> 1.6)
53
57
  nubefact!
54
58
  pry
55
59
  rake (~> 10.0)
data/README.md CHANGED
@@ -63,4 +63,13 @@ invoice.add_item({
63
63
 
64
64
  result = invoice.deliver
65
65
 
66
- ```
66
+ ```
67
+
68
+
69
+ # ToDo
70
+ * Agregar constantes para los tipos de datos numericos
71
+ * Agreagar soporte para consultar facturas
72
+ * Agregar soporte para crear otros tipos de documetn
73
+ * Agregar soporte para consultar otros tipos de documento
74
+ * Agregar tests usando webmock
75
+ * Alcanzar coverage 100%
data/lib/nube_fact.rb CHANGED
@@ -7,6 +7,7 @@ module NubeFact; end
7
7
 
8
8
  require "util/validator"
9
9
  require "util/utils"
10
+ require "util/sunat"
10
11
 
11
12
  require "nube_fact/version"
12
13
  require "nube_fact/exceptions"
@@ -1,3 +1,3 @@
1
1
  module NubeFact
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/util/sunat.rb ADDED
@@ -0,0 +1,51 @@
1
+ require 'nokogiri'
2
+ require 'open-uri'
3
+
4
+ # ==== WARNING WIP
5
+ # This is a very basic implementation to obtain sunat dollar exchange rate.
6
+ # I wrote it really quick. Please don't rely on it.
7
+ # It currently uses two providers. there is no guarantee that the will work, or
8
+ # the response format will change.
9
+ # ==== WARNING WIP
10
+
11
+ module NubeFact::Sunat
12
+ extend self
13
+
14
+ def dollar_rate(time = Time.now)
15
+ @dollar ||= update_dollar_rate
16
+ end
17
+
18
+ def update_dollar_rate(time = Time.now)
19
+ dollar_from_sunat(time) rescue dollar_from_preciodolar(time)
20
+ end
21
+
22
+ def dollar_from_sunat(time = Time.now)
23
+ doc = Nokogiri::HTML(open("http://www.sunat.gob.pe/cl-at-ittipcam/tcS01Alias?mes=#{time.month}&anho=#{time.year}"))
24
+ begin
25
+ rate = doc.at("td.H3 strong:contains(#{time.day})").parent.parent.at('td:last').text.strip
26
+ rescue
27
+ warn "Not able to get for the specific day #{time}, using the latest available"
28
+ rate = doc.at ('td.tne10:last').text.strip
29
+ end
30
+
31
+ BigDecimal.new(rate)
32
+ end
33
+
34
+
35
+ def dollar_from_preciodolar
36
+ url = URI("https://api.preciodolar.com/api/history/?time_interval=day&country=pe&bank_id=13&source=bank")
37
+
38
+ http = Net::HTTP.new(url.host, url.port)
39
+ http.use_ssl = true
40
+
41
+ request = Net::HTTP::Get.new(url)
42
+ request["Content-Type"] = 'application/json'
43
+ request["cache-control"] = 'no-cache'
44
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
45
+
46
+ response = http.request request
47
+ result = JSON.parse(response.read_body)
48
+
49
+ result.last["sell"]
50
+ end
51
+ end
data/lib/util/utils.rb CHANGED
@@ -26,7 +26,7 @@ module NubeFact::Utils
26
26
  def set_default_data
27
27
  self.class::DEFAULT_DATA.each do |field, value|
28
28
  value = value.call if value.kind_of? Proc
29
- instance_variable_set("@#{field}", value)
29
+ send "#{field}=", value
30
30
  end
31
31
  end
32
32
 
data/nubefact.gemspec CHANGED
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency "bundler", "~> 1.13"
34
34
  spec.add_development_dependency "rake", "~> 10.0"
35
35
  spec.add_development_dependency "rspec", "~> 3.6"
36
+ spec.add_development_dependency "nokogiri", '~> 1.6'
36
37
  # spec.add_development_dependency "simplecov"
37
38
  # spec.add_development_dependency "webmock"
38
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nubefact
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arnold Roa
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-08 00:00:00.000000000 Z
11
+ date: 2017-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.6'
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.6'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
55
69
  description: Ruby gem to consume NubeFact API to generate electronic tax document
56
70
  in PERU.
57
71
  email:
@@ -62,6 +76,8 @@ extra_rdoc_files: []
62
76
  files:
63
77
  - ".gitignore"
64
78
  - ".rspec"
79
+ - ".ruby-gemset"
80
+ - ".ruby-version"
65
81
  - ".simplecov"
66
82
  - CODE_OF_CONDUCT.md
67
83
  - Gemfile
@@ -77,6 +93,7 @@ files:
77
93
  - lib/nube_fact/invoice/guia.rb
78
94
  - lib/nube_fact/invoice/item.rb
79
95
  - lib/nube_fact/version.rb
96
+ - lib/util/sunat.rb
80
97
  - lib/util/utils.rb
81
98
  - lib/util/validator.rb
82
99
  - nubefact.gemspec