sale 0.2.3 → 0.3.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.
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