sale 0.2.3 → 0.3.0

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
  SHA256:
3
- metadata.gz: e907e7903a3616b692d89ffc1be3ea2beabf22868f764c8baf84ab2446236fc0
4
- data.tar.gz: f6bd050fdaa7e9fbdc510ae600e22511cbd15d95f1308995dfa3100a39af3a0c
3
+ metadata.gz: 4f13c7abfb98242baee18eff267f67c01459f7d2fad56568285ec3def45942c0
4
+ data.tar.gz: '077198da5bad9c310475262f4e73ea1c0426ce687269eec388abeb76cc558508'
5
5
  SHA512:
6
- metadata.gz: dbf4a7142ad3d143023f4dcee9cb300b837f2ab4939b446947495c5851a8cf50cfaecd54f6921019423de8267ec7ee2b8c6f967a54b710e0e71854e9e4c04739
7
- data.tar.gz: cbf2459996e66b35fd08dc4ad8fbcdf30baf2eb707231642871cbecd1c0dcd1a99cd632e42059cdd1f9786f0dd37b59a80c74272104611da35be979df48f057f
6
+ metadata.gz: 0f8c24cd336eb83672d2159f6b812845ce4464e2d7cbadd1e9452907d17def29e0d0f12a7c969639edfb13f3d706ea11072aec52b5e06a2e05839eaf6592cbd7
7
+ data.tar.gz: ca341954f9353c658bc328aa0f7ebc57e9f68ca217a1b8e69e84ad25efff91d8ff41639a110a51d25546ed3c91c1dd5b80af16a84f317fdcf759a695c3197cb4
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ gems.locked
2
+ pkg
data/lib/sale/entity.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'cgi'
2
+ require 'dagger'
3
+
1
4
  class Entity
2
5
  include Enumerable
3
6
 
@@ -40,6 +43,10 @@ class Entity
40
43
  to_a.size
41
44
  end
42
45
 
46
+ def total_entries
47
+ data['count']
48
+ end
49
+
43
50
  alias_method :size, :count
44
51
 
45
52
  def items
@@ -56,19 +63,19 @@ class Entity
56
63
  end
57
64
 
58
65
  def has_prev_page?
59
- data['prev']
66
+ !!data['prev']
60
67
  end
61
68
 
62
69
  def has_next_page?
63
- data['next']
70
+ !!data['next']
64
71
  end
65
72
 
66
73
  def prev_page
67
- data['prev'] ? follow_link(data['prev'], @original_params) : nil
74
+ data['prev'] ? follow_link(fix_link(data['prev']), @original_params) : nil
68
75
  end
69
76
 
70
77
  def next_page
71
- data['next'] ? follow_link(data['next'], @original_params) : nil
78
+ data['next'] ? follow_link(fix_link(data['next']), @original_params) : nil
72
79
  end
73
80
 
74
81
  def method_missing(name, *args)
@@ -97,13 +104,21 @@ class Entity
97
104
  # false
98
105
  # end
99
106
 
107
+ def fix_link(href)
108
+ uri = URI.parse(href)
109
+ link_params = CGI.parse(uri.query || '').transform_values(&:first)
110
+ new_params = maybe_stringify(@original_params || {}).merge(link_params)
111
+ uri.query = Dagger::Utils.encode(new_params) if new_params.any?
112
+ uri.to_s
113
+ end
114
+
100
115
  def is_hash?(obj)
101
116
  obj.is_a?(Hash)
102
117
  end
103
118
 
104
119
  def maybe_stringify(obj)
105
120
  return obj unless is_hash?(obj)
106
- obj.inject({}) { |memo,(k,v) | memo[k.to_s] = v; memo }
121
+ obj.inject({}) { |memo,(k,v)| memo[k.to_s] = v; memo }
107
122
  end
108
123
 
109
124
  def follow_link(href, params = nil)
data/lib/sale/invoices.rb CHANGED
@@ -17,16 +17,23 @@ class Bsale::Invoices
17
17
  end
18
18
  end
19
19
 
20
- def create(codeSii:, emissionDate:, expirationDate:, declareSii:, priceListId:, \
20
+ def create(codeSii: nil, documentTypeId: nil, emissionDate:, expirationDate:, declareSii:, priceListId:, \
21
21
  officeId: nil, clientId: nil, client: nil, details: nil, payments: nil)
22
22
 
23
23
  body = {
24
- codeSii: codeSii, # we could also use "documentTypeId"
25
24
  declareSii: declareSii,
26
25
  emissionDate: emissionDate,
27
26
  expirationDate: expirationDate
28
27
  }
29
28
 
29
+ if documentTypeId
30
+ body[:documentTypeId] = documentTypeId
31
+ elsif codeSii
32
+ body[:codeSii] = codeSii
33
+ else
34
+ raise ArgumentError, "Either codeSii or documentTypeId required"
35
+ end
36
+
30
37
  body[:officeId] = officeId if officeId
31
38
  body[:priceListId] = priceListId if priceListId
32
39
 
@@ -35,7 +42,7 @@ class Bsale::Invoices
35
42
  elsif client
36
43
  body[:client] = client
37
44
  elsif [33, 34].include?(codeSii.to_i) # facturas requiren clientId
38
- raise 'clientId or client required'
45
+ raise 'clientId or client required'
39
46
  end
40
47
 
41
48
  body[:details] = details if details
data/sale.gemspec CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'sale'
6
- s.version = '0.2.3'
6
+ s.version = '0.3.0'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ['Tomás Pollak']
9
9
  s.email = ['tomas@bootic.net']
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.add_development_dependency "rspec-mocks"
18
18
  s.add_development_dependency "rspec-expectations"
19
19
 
20
- s.add_runtime_dependency "dagger", "~> 1.3.1"
20
+ s.add_runtime_dependency "dagger", "~> 1.4.1"
21
21
 
22
22
  s.files = `git ls-files`.split("\n")
23
23
  s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
data/spec/base_spec.rb CHANGED
@@ -13,7 +13,7 @@ describe 'APIBase' do
13
13
  describe '#request' do
14
14
  it 'explodes with 401 error if invalid token' do
15
15
  expect do
16
- resp = subject.get('foo')
16
+ resp = subject.get('foo.json')
17
17
  end.to raise_error(Bsale::InvalidResponseError)
18
18
  end
19
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sale
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomás Pollak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-24 00:00:00.000000000 Z
11
+ date: 2019-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.3.1
75
+ version: 1.4.1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.3.1
82
+ version: 1.4.1
83
83
  description: A wrapper around the Bsale API.
84
84
  email:
85
85
  - tomas@bootic.net
@@ -87,6 +87,7 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
+ - ".gitignore"
90
91
  - Rakefile
91
92
  - gems.rb
92
93
  - lib/sale.rb