quickbooks-ruby 1.0.8 → 1.0.13

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: ffab8263cca62cc3969f22b01909705cdb4f73ef0fa85ab37d18f728e3edc990
4
- data.tar.gz: 8dd7022c2615a07e6225bb4ce569b6cd6b24d8b8e405a203a4b4151813b88599
3
+ metadata.gz: bf1160c6870349d14bf78a92cffbe5ba9efc7bceeaadafd3e51ea34b4b7bfdf3
4
+ data.tar.gz: 635571fa507657b2d3c6f797c4b2f8906c127cf271a1d8209d73a41629d576dc
5
5
  SHA512:
6
- metadata.gz: ea5558538936684066b819ec00f1203a7a7655cbafa85a0e7473567d975b5d1d0538c311d523ff075b5c4c906c470d6be60f45fc44cccb211987cb76a14d50ac
7
- data.tar.gz: a0e7fca6ca6414716b5dc6da256772389c17e7d95d8ebf1fa0d42251aded6efd075e5514d3049ed2a2bbdca7b80911dd34b6da44e24d07356f0c05ad1d4543d5
6
+ metadata.gz: 1fc1352b4888a815049ccc95f4363636af5c157c8f2c67700250095b2a8cd1ba84c002247d405f533f82e0c0ba2d2c1fc62d41e95540e16b84be4ad3794953a3
7
+ data.tar.gz: 69749db040976fcbaa4124776b00c96acfdac938858b9f3b56dbfeb02ec0587f37b8884e4557a569f9c50734f5091003930675dc31d0c6cc5f6e761446c52fec
@@ -191,6 +191,7 @@ Faraday::Middleware.register_middleware :gzip => lambda { Gzip }
191
191
  module Quickbooks
192
192
  @@sandbox_mode = false
193
193
  @@logger = nil
194
+ @@minorversion = 47
194
195
 
195
196
  class << self
196
197
  def sandbox_mode
@@ -201,6 +202,14 @@ module Quickbooks
201
202
  @@sandbox_mode = sandbox_mode
202
203
  end
203
204
 
205
+ def minorversion=(v)
206
+ @@minorversion = v
207
+ end
208
+
209
+ def minorversion
210
+ @@minorversion
211
+ end
212
+
204
213
  def logger
205
214
  @@logger ||= ::Logger.new($stdout) # TODO: replace with a real log file
206
215
  end
@@ -4,7 +4,6 @@ module Quickbooks
4
4
  XML_COLLECTION_NODE = "Account"
5
5
  XML_NODE = "Account"
6
6
  REST_RESOURCE = 'account'
7
- MINORVERSION = 13
8
7
 
9
8
  ASSET = 'Asset'
10
9
  EQUITY = 'Equity'
@@ -16,8 +16,6 @@ module Quickbooks
16
16
  include NameEntity::Quality
17
17
  include NameEntity::PermitAlterations
18
18
 
19
- MINORVERSION = 33
20
-
21
19
  xml_name XML_NODE
22
20
  xml_accessor :id, :from => 'Id'
23
21
  xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
@@ -17,7 +17,6 @@ module Quickbooks
17
17
  XML_COLLECTION_NODE = "Invoice"
18
18
  XML_NODE = "Invoice"
19
19
  EMAIL_STATUS_NEED_TO_SEND = 'NeedToSend'
20
- MINORVERSION = 37
21
20
 
22
21
  xml_accessor :id, :from => 'Id'
23
22
  xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
@@ -60,6 +59,7 @@ module Quickbooks
60
59
  xml_accessor :allow_online_credit_card_payment?, :from => 'AllowOnlineCreditCardPayment'
61
60
  xml_accessor :allow_online_ach_payment?, :from => 'AllowOnlineACHPayment'
62
61
  xml_accessor :deposit_to_account_ref, :from => 'DepositToAccountRef', :as => BaseReference
62
+ xml_accessor :bill_email_cc, :from => 'BillEmailCc', :as => EmailAddress
63
63
 
64
64
 
65
65
  reference_setters
@@ -88,6 +88,9 @@ module Quickbooks
88
88
  self.bill_email = EmailAddress.new(email_address_string)
89
89
  end
90
90
 
91
+ def billing_email_cc_address=(email_address_string)
92
+ self.bill_email_cc = EmailAddress.new(email_address_string)
93
+ end
91
94
 
92
95
  def wants_billing_email_sent!
93
96
  self.email_status = EMAIL_STATUS_NEED_TO_SEND
@@ -97,7 +100,6 @@ module Quickbooks
97
100
  email_status == EMAIL_STATUS_NEED_TO_SEND
98
101
  end
99
102
 
100
-
101
103
  def existence_of_customer_ref
102
104
  if customer_ref.nil? || (customer_ref && customer_ref.value == 0)
103
105
  errors.add(:customer_ref, "CustomerRef is required and must be a non-zero value.")
@@ -10,7 +10,6 @@ module Quickbooks
10
10
  XML_COLLECTION_NODE = "Item"
11
11
  XML_NODE = "Item"
12
12
  REST_RESOURCE = 'item'
13
- MINORVERSION = 47
14
13
 
15
14
  INVENTORY_TYPE = 'Inventory'
16
15
  NON_INVENTORY_TYPE = 'NonInventory'
@@ -4,7 +4,6 @@ module Quickbooks
4
4
  XML_COLLECTION_NODE = "Preferences"
5
5
  XML_NODE = "Preferences"
6
6
  REST_RESOURCE = 'preferences'
7
- MINORVERSION = 32
8
7
 
9
8
  xml_name XML_NODE
10
9
 
@@ -8,7 +8,6 @@ module Quickbooks
8
8
  REST_RESOURCE = 'purchaseorder'
9
9
  XML_COLLECTION_NODE = "PurchaseOrder"
10
10
  XML_NODE = "PurchaseOrder"
11
- MINORVERSION = 45
12
11
 
13
12
  xml_accessor :id, :from => 'Id'
14
13
  xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
@@ -38,7 +38,7 @@ module Quickbooks
38
38
  value = el.attr('value')
39
39
 
40
40
  next nil if value.blank?
41
- next value if value.to_s.match(/^\d+$|^\d+\.\d+$|^-\d+|^-\d+\.\d+$|^\.\d+$/).nil?
41
+ next value if value.to_s.match(/^\d+$|^\d+\.\d+$|^-\d+$|^-\d+\.\d+$|^\.\d+$/).nil?
42
42
  BigDecimal(value)
43
43
  end
44
44
  end
@@ -23,7 +23,8 @@ module Quickbooks
23
23
  def disconnect
24
24
  conn = Faraday.new
25
25
  conn.basic_auth oauth.client.id, oauth.client.secret
26
- response = conn.post(DISCONNECT_URL, token: oauth.refresh_token || oauth.token)
26
+ url = "#{DISCONNECT_URL}?minorversion=#{Quickbooks.minorversion}"
27
+ response = conn.post(url, token: oauth.refresh_token || oauth.token)
27
28
 
28
29
  if response.success?
29
30
  Quickbooks::Model::AccessTokenResponse.new(error_code: "0")
@@ -7,11 +7,6 @@ module Quickbooks
7
7
  update(account, :sparse => true)
8
8
  end
9
9
 
10
- def url_for_query(query = nil, start_position = 1, max_results = 20, options = {})
11
- url = super(query, start_position, max_results, options)
12
- "#{url}&minorversion=#{Quickbooks::Model::Account::MINORVERSION}"
13
- end
14
-
15
10
  private
16
11
 
17
12
  def model
@@ -229,6 +229,8 @@ module Quickbooks
229
229
  body['file_metadata_0'] = param_part
230
230
  end
231
231
 
232
+ url = add_query_string_to_url(url, {})
233
+
232
234
  do_http(:upload, url, body, headers)
233
235
  end
234
236
 
@@ -292,7 +294,9 @@ module Quickbooks
292
294
  @oauth.post_with_multipart(url, headers: headers, body: body, raise_errors: false)
293
295
  end
294
296
 
295
- def add_query_string_to_url(url, params)
297
+ def add_query_string_to_url(url, params = {})
298
+ params ||= {}
299
+ params['minorversion'] = Quickbooks.minorversion
296
300
  if params.is_a?(Hash) && !params.empty?
297
301
  keyvalues = params.collect { |k| "#{k.first}=#{k.last}" }.join("&")
298
302
  delim = url.index("?") != nil ? "&" : "?"
@@ -7,21 +7,11 @@ module Quickbooks
7
7
  update(customer, :sparse => true)
8
8
  end
9
9
 
10
- def url_for_resource(resource)
11
- url = super(resource)
12
- "#{url}?minorversion=#{Quickbooks::Model::Customer::MINORVERSION}"
13
- end
14
-
15
10
  def fetch_by_id(id, params = {})
16
- url = "#{url_for_base}/customer/#{id}?minorversion=#{Quickbooks::Model::Customer::MINORVERSION}"
11
+ url = "#{url_for_base}/customer/#{id}"
17
12
  fetch_object(model, url, params)
18
13
  end
19
14
 
20
- def url_for_query(query = nil, start_position = 1, max_results = 20, options = {})
21
- url = super(query, start_position, max_results, options)
22
- "#{url}&minorversion=#{Quickbooks::Model::Customer::MINORVERSION}"
23
- end
24
-
25
15
  private
26
16
 
27
17
  def model
@@ -6,20 +6,11 @@ module Quickbooks
6
6
  delete_by_query_string(invoice)
7
7
  end
8
8
 
9
- def url_for_resource(resource)
10
- url = super(resource)
11
- end
12
-
13
9
  def fetch_by_id(id, params = {})
14
- url = "#{url_for_base}/invoice/#{id}?minorversion=#{Quickbooks::Model::Invoice::MINORVERSION}"
10
+ url = "#{url_for_base}/invoice/#{id}"
15
11
  fetch_object(model, url, params)
16
12
  end
17
13
 
18
- def url_for_query(query = nil, start_position = 1, max_results = 20, options = {})
19
- url = super(query, start_position, max_results, options)
20
- "#{url}&minorversion=#{Quickbooks::Model::Invoice::MINORVERSION}"
21
- end
22
-
23
14
  def send(invoice, email_address=nil)
24
15
  query = email_address.present? ? "?sendTo=#{email_address}" : ""
25
16
  url = "#{url_for_resource(model::REST_RESOURCE)}/#{invoice.id}/send#{query}"
@@ -7,21 +7,11 @@ module Quickbooks
7
7
  update(item, :sparse => true)
8
8
  end
9
9
 
10
- def url_for_resource(resource)
11
- url = super(resource)
12
- "#{url}?minorversion=#{Quickbooks::Model::Item::MINORVERSION}"
13
- end
14
-
15
10
  def fetch_by_id(id, params = {})
16
- url = "#{url_for_base}/item/#{id}?minorversion=#{Quickbooks::Model::Item::MINORVERSION}"
11
+ url = "#{url_for_base}/item/#{id}"
17
12
  fetch_object(model, url, params)
18
13
  end
19
14
 
20
- def url_for_query(query = nil, start_position = 1, max_results = 20, options = {})
21
- url = super(query, start_position, max_results, options)
22
- "#{url}&minorversion=#{Quickbooks::Model::Item::MINORVERSION}"
23
- end
24
-
25
15
  private
26
16
 
27
17
  def model
@@ -2,11 +2,6 @@ module Quickbooks
2
2
  module Service
3
3
  class Preferences < BaseService
4
4
 
5
- def url_for_query(query = nil, start_position = 1, max_results = 20, options = {})
6
- url = super(query, start_position, max_results, options)
7
- "#{url}&minorversion=#{Quickbooks::Model::Preferences::MINORVERSION}"
8
- end
9
-
10
5
  private
11
6
 
12
7
  def model
@@ -7,13 +7,13 @@ module Quickbooks
7
7
  end
8
8
 
9
9
  def fetch_by_id(id, params = {})
10
- url = "#{url_for_base}/purchaseorder/#{id}?minorversion=#{Quickbooks::Model::PurchaseOrder::MINORVERSION}"
10
+ url = "#{url_for_base}/purchaseorder/#{id}?minorversion=#{Quickbooks.minorversion}"
11
11
  fetch_object(model, url, params)
12
12
  end
13
13
 
14
14
  def url_for_query(query = nil, start_position = 1, max_results = 20, options = {})
15
15
  url = super(query, start_position, max_results, options)
16
- "#{url}&minorversion=#{Quickbooks::Model::PurchaseOrder::MINORVERSION}"
16
+ "#{url}&minorversion=#{Quickbooks.minorversion}"
17
17
  end
18
18
 
19
19
  private
@@ -8,7 +8,7 @@ module Quickbooks
8
8
 
9
9
  def create(entity, options = {})
10
10
  raise Quickbooks::InvalidModelException.new(entity.errors.full_messages.join(',')) unless entity.valid?
11
- response = do_http(:post, url_for_resource(model.resource_for_singular), entity.to_json, options)
11
+ response = do_http_post(url_for_resource(model.resource_for_singular), entity.to_json, options)
12
12
  if response.code.to_i == 200
13
13
  JSON.parse(response.plain_body)
14
14
  else
@@ -10,26 +10,27 @@ module Quickbooks
10
10
  end
11
11
 
12
12
  def clause(field, operator, value)
13
+ # replace with an escaped backslash
14
+ escape_single_quotes = -> field { field.to_s.gsub("'", "\\\\'") }
15
+
13
16
  value = case value
14
17
  when DateTime, Time
15
18
  value.iso8601
16
19
  when Date
17
20
  value.strftime('%Y-%m-%d')
18
21
  when Array
19
- value = value.map{|v| v.to_s.gsub("'", "\\\\'") }
22
+ value = value.map(&escape_single_quotes)
20
23
  else
21
- # escape single quotes with an escaped backslash
22
- value = value.gsub("'", "\\\\'")
24
+ value = escape_single_quotes.call(value)
23
25
  end
24
26
 
25
27
  if operator.downcase == 'in' && value.is_a?(Array)
26
- value = value.map{|v| "#{VALUE_QUOTE}#{v}#{VALUE_QUOTE}"}
28
+ value = value.map { |v| "#{VALUE_QUOTE}#{v}#{VALUE_QUOTE}" }
27
29
  "#{field} #{operator} (#{value.join(', ')})"
28
30
  else
29
31
  "#{field} #{operator} #{VALUE_QUOTE}#{value}#{VALUE_QUOTE}"
30
32
  end
31
33
  end
32
-
33
34
  end
34
35
  end
35
36
  end
@@ -1,5 +1,5 @@
1
1
  module Quickbooks
2
2
 
3
- VERSION = "1.0.8"
3
+ VERSION = "1.0.13"
4
4
 
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quickbooks-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Caughlan
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-14 00:00:00.000000000 Z
11
+ date: 2020-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth2
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: roxml
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 4.0.0
33
+ version: '4.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '='
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 4.0.0
40
+ version: '4.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activemodel
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -98,44 +98,44 @@ dependencies:
98
98
  name: simplecov
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 0.7.1
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 0.7.1
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rr
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 1.0.2
117
+ version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: 1.0.2
124
+ version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: '3.9'
131
+ version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
- version: '3.9'
138
+ version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: webmock
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -154,16 +154,16 @@ dependencies:
154
154
  name: dotenv
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - '='
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: 2.2.1
159
+ version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - '='
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
- version: 2.2.1
166
+ version: '0'
167
167
  description: QBO V3 REST API to Quickbooks Online
168
168
  email: toolbag@gmail.com
169
169
  executables: []
@@ -345,7 +345,7 @@ homepage: http://github.com/ruckus/quickbooks-ruby
345
345
  licenses:
346
346
  - MIT
347
347
  metadata: {}
348
- post_install_message:
348
+ post_install_message:
349
349
  rdoc_options: []
350
350
  require_paths:
351
351
  - lib
@@ -360,9 +360,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
360
360
  - !ruby/object:Gem::Version
361
361
  version: '0'
362
362
  requirements: []
363
- rubyforge_project:
364
- rubygems_version: 2.7.8
365
- signing_key:
363
+ rubyforge_project:
364
+ rubygems_version: 2.7.6.2
365
+ signing_key:
366
366
  specification_version: 4
367
367
  summary: REST API to Quickbooks Online
368
368
  test_files: []