qbo_api 1.2.0 → 1.2.1

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: fa54c3e368cbe905ae5b328cdac7de62ba744f05
4
- data.tar.gz: d52eaa3b8dfddc1ecafd1e8860235317f972682c
3
+ metadata.gz: 03b3f06c76e70aa87331ccf79916407536a54bed
4
+ data.tar.gz: 79b5441fe6ec65d06153ab200a5fe27a88735d6c
5
5
  SHA512:
6
- metadata.gz: 5df20a423bea757d0ecdecb67d3c096758ebd381d5e61a6175ef52c5959d5d7d8aa2e558fb7b8c60a38be6f74050b301bbe53f01221ef4572af924d6ab961a16
7
- data.tar.gz: 601d278a518e73d0a29844e5d2f9e73a2eb1388b424a3f87b6398955d6c034292a3cdf108fe753ea949e30ae1d90870710f45f94546f8a1c6f265930a368c03d
6
+ metadata.gz: 800b0c6ccb9a1f1cf70867038cd035b364426b6f83656a6bbc8c3f864cf0b1a6a851f2602a83ccd5ab457ca42223edf432e5dc51d7f33f3b1d12c4acc202cb6c
7
+ data.tar.gz: 4657a2c0bb876fdd994ff5ebd0abb3bdb616f2be5bec033b51210fe488122148a87b6c6d27e9f08b7431e10e85c1fd2565b8c934b917c4e769917e63d0c7c692
data/.gitignore CHANGED
@@ -14,3 +14,4 @@
14
14
  todo.txt
15
15
  *.sess
16
16
  *.log
17
+ scrap.txt
data/README.md CHANGED
@@ -117,6 +117,12 @@ QboApi.request_id = true
117
117
  p response['status'] # => "Deleted"
118
118
  ```
119
119
 
120
+ ### Deactivate (only works for name list entities)
121
+ ```ruby
122
+ response = qbo_api.deactivate(:employee, id: 55)
123
+ p response['Active'] # => false
124
+ ```
125
+
120
126
  ### Search with irregular characters
121
127
  ```ruby
122
128
  name = qbo_api.esc "Amy's Bird Sanctuary"
@@ -206,11 +212,16 @@ See [docs](https://developer.intuit.com/docs/0100_quickbooks_online/0100_essenti
206
212
 
207
213
  ### Import/retrieve all
208
214
  ```ruby
209
- # retrieves all customers
215
+ # retrieves all active customers
210
216
  qbo_api.all(:customers) do |c|
211
217
  p "#{c['Id']} #{c['DisplayName']}"
212
218
  end
213
219
 
220
+ # retrieves all active or inactive employees
221
+ qbo_api.all(:employees, inactive: true) do |e|
222
+ p "#{e['Id']} #{e['DisplayName']}"
223
+ end
224
+
214
225
  # retrieves all vendors by groups of 5
215
226
  qbo_api.all(:vendor, max: 5) do |v|
216
227
  p v['DisplayName']
@@ -283,9 +294,7 @@ export QBO_API_COMPANY_ID=12345
283
294
 
284
295
  #### Protip: Once your .env file is completely filled out you can use the console to play around in your sandbox
285
296
  ```
286
- bin/console
287
- >> require_relative 'spec/spec_helper'
288
- >> VCR.configure { |c| c.allow_http_connections_when_no_cassette = true }
297
+ bin/console test
289
298
  >> q = QboApi.new(creds.to_h)
290
299
  >> q.get :customer, 1
291
300
  ```
data/bin/console CHANGED
@@ -3,6 +3,11 @@
3
3
  require "bundler/setup"
4
4
  require "qbo_api"
5
5
 
6
+ if ARGV[0] == "test"
7
+ require_relative '../spec/support/credentials'
8
+ ARGV[0] = nil # needed to avoid irb error
9
+ end
10
+
6
11
  # You can add fixtures and/or initialization code here to make experimenting
7
12
  # with your gem easier. You can also use a different console, if you like.
8
13
 
data/lib/qbo_api.rb CHANGED
@@ -71,12 +71,20 @@ class QboApi
71
71
  end
72
72
 
73
73
  def delete(entity, id:)
74
- raise QboApi::NotImplementedError unless is_transaction_entity?(entity)
74
+ err_msg = "Delete is only for transaction entities. Use .deactivate instead"
75
+ raise QboApi::NotImplementedError.new, err_msg unless is_transaction_entity?(entity)
75
76
  path = add_params_to_path(path: entity_path(entity), params: { operation: :delete })
76
77
  payload = set_update(entity, id)
77
78
  request(:post, entity: entity, path: path, payload: payload)
78
79
  end
79
80
 
81
+ def deactivate(entity, id:)
82
+ err_msg = "Deactivate is only for name list entities. Use .delete instead"
83
+ raise QboApi::NotImplementedError.new, err_msg unless is_name_list_entity?(entity)
84
+ payload = set_update(entity, id).merge('sparse': true, 'Active': false)
85
+ request(:post, entity: entity, path: entity_path(entity), payload: payload)
86
+ end
87
+
80
88
  # TODO: Need specs for disconnect and reconnect
81
89
  # https://developer.intuit.com/docs/0100_quickbooks_online/0100_essentials/0085_develop_quickbooks_apps/0004_authentication_and_authorization/oauth_management_api#/Reconnect
82
90
  def disconnect
@@ -89,8 +97,8 @@ class QboApi
89
97
  request(:get, path: path)
90
98
  end
91
99
 
92
- def all(entity, max: 1000, select: nil, &block)
93
- select ||= "SELECT * FROM #{singular(entity)}"
100
+ def all(entity, max: 1000, select: nil, inactive: false, &block)
101
+ select = build_all_query(entity, select: select, inactive: inactive)
94
102
  pos = 0
95
103
  begin
96
104
  pos = pos == 0 ? pos + 1 : pos + max
data/lib/qbo_api/util.rb CHANGED
@@ -4,7 +4,7 @@ class QboApi
4
4
  if time.is_a?(String)
5
5
  time
6
6
  else
7
- time.to_s.sub(' ', 'T').sub(' ', '').insert(-3, ':')
7
+ time.iso8601
8
8
  end
9
9
  end
10
10
 
@@ -29,6 +29,21 @@ class QboApi
29
29
  uri.to_s
30
30
  end
31
31
 
32
+ def join_or_start_where_clause!(select:)
33
+ if select.match(/where/i)
34
+ str = ' AND '
35
+ else
36
+ str = ' WHERE '
37
+ end
38
+ str
39
+ end
40
+
41
+ def build_all_query(entity, select: nil, inactive: false)
42
+ select ||= "SELECT * FROM #{singular(entity)}"
43
+ select += join_or_start_where_clause!(select: select) + 'Active IN ( true, false )' if inactive
44
+ select
45
+ end
46
+
32
47
  end
33
48
  end
34
49
 
@@ -1,3 +1,3 @@
1
1
  class QboApi
2
- VERSION = "1.2.0"
2
+ VERSION = "1.2.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qbo_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Pelczarski
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-23 00:00:00.000000000 Z
11
+ date: 2016-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler