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 +4 -4
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +5 -1
- data/README.md +10 -1
- data/lib/nube_fact.rb +1 -0
- data/lib/nube_fact/version.rb +1 -1
- data/lib/util/sunat.rb +51 -0
- data/lib/util/utils.rb +1 -1
- data/nubefact.gemspec +1 -0
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2252343e627455539a50af6333cee4c19e20ef0
|
4
|
+
data.tar.gz: 11531c9c00b2040508b476e461f215cf1cfc6126
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
data/lib/nube_fact/version.rb
CHANGED
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
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.
|
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-
|
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
|