quickbooks-ruby 0.4.3 → 0.4.4
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/lib/quickbooks-ruby.rb +2 -0
- data/lib/quickbooks/model/base_model.rb +8 -0
- data/lib/quickbooks/model/batch_request.rb +1 -0
- data/lib/quickbooks/model/batch_response.rb +1 -0
- data/lib/quickbooks/model/change_data_capture.rb +42 -0
- data/lib/quickbooks/model/company_info.rb +2 -1
- data/lib/quickbooks/model/deposit_line_detail.rb +1 -1
- data/lib/quickbooks/service/base_service.rb +1 -1
- data/lib/quickbooks/service/change_data_capture.rb +24 -0
- data/lib/quickbooks/service/invoice.rb +12 -0
- data/lib/quickbooks/service/item.rb +2 -2
- data/lib/quickbooks/service/payment.rb +2 -3
- data/lib/quickbooks/service/sales_receipt.rb +13 -0
- data/lib/quickbooks/util/name_entity.rb +2 -1
- data/lib/quickbooks/version.rb +1 -1
- metadata +4 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 976ae1fc59078ac34b82246f9299a45ec007fe14
|
4
|
+
data.tar.gz: a8a01b38858e3238f9f4ccd4c24af576bc287978
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 45ba61f4650435a29b8b2a174801a7fcd0d6059773a3df2ce1b9ab364f3fcd28c771227ab78573c28fc44c147ef14130c650dec202034430f684ea03c3afd576
|
7
|
+
data.tar.gz: e52ff31f8823f7dff764263da73ab3c3c2c4dd47d159fb610ec126ca9ee9c70bdd7e1df071c938a7d4850a063815a72fafd67fd1cb02d9f7d880277bb3a95c42
|
data/lib/quickbooks-ruby.rb
CHANGED
@@ -110,6 +110,7 @@ require 'quickbooks/model/report'
|
|
110
110
|
require 'quickbooks/model/credit_memo_change'
|
111
111
|
require 'quickbooks/model/payment_change'
|
112
112
|
require 'quickbooks/model/transfer'
|
113
|
+
require 'quickbooks/model/change_data_capture'
|
113
114
|
|
114
115
|
#== Services
|
115
116
|
require 'quickbooks/service/service_crud'
|
@@ -160,6 +161,7 @@ require 'quickbooks/service/reports'
|
|
160
161
|
require 'quickbooks/service/credit_memo_change'
|
161
162
|
require 'quickbooks/service/payment_change'
|
162
163
|
require 'quickbooks/service/transfer'
|
164
|
+
require 'quickbooks/service/change_data_capture'
|
163
165
|
|
164
166
|
module Quickbooks
|
165
167
|
@@sandbox_mode = false
|
@@ -27,6 +27,14 @@ module Quickbooks
|
|
27
27
|
step2
|
28
28
|
end
|
29
29
|
|
30
|
+
def as_json(options = nil)
|
31
|
+
options = {} if options.nil?
|
32
|
+
except_conditions = ["roxml_references"]
|
33
|
+
except_conditions << options[:except]
|
34
|
+
options[:except] = except_conditions.flatten.uniq.compact
|
35
|
+
super(options)
|
36
|
+
end
|
37
|
+
|
30
38
|
def to_xml_ns(options = {})
|
31
39
|
to_xml_inject_ns(self.class::XML_NODE, options)
|
32
40
|
end
|
@@ -18,6 +18,7 @@ class Quickbooks::Model::BatchRequest < Quickbooks::Model::BaseModel
|
|
18
18
|
xml_accessor :purchase, from: "Purchase", as: Quickbooks::Model::Purchase
|
19
19
|
xml_accessor :credit_memo, from: "CreditMemo", as: Quickbooks::Model::CreditMemo
|
20
20
|
xml_accessor :payment, from: "Payment", as: Quickbooks::Model::Payment
|
21
|
+
xml_accessor :time_activity, from: "TimeActivity", as: Quickbooks::Model::TimeActivity
|
21
22
|
end
|
22
23
|
|
23
24
|
XML_COLLECTION_NODE = "IntuitBatchRequest"
|
@@ -17,6 +17,7 @@ class Quickbooks::Model::BatchResponse < Quickbooks::Model::BaseModel
|
|
17
17
|
xml_accessor :purchase, from: "Purchase", as: Quickbooks::Model::Purchase
|
18
18
|
xml_accessor :credit_memo, from: "CreditMemo", as: Quickbooks::Model::CreditMemo
|
19
19
|
xml_accessor :payment, from: "Payment", as: Quickbooks::Model::Payment
|
20
|
+
xml_accessor :time_activity, from: "TimeActivity", as: Quickbooks::Model::TimeActivity
|
20
21
|
|
21
22
|
def fault?
|
22
23
|
fault
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Quickbooks
|
2
|
+
module Model
|
3
|
+
class ChangeDataCapture < BaseModel
|
4
|
+
|
5
|
+
attr_accessor :xml
|
6
|
+
|
7
|
+
TYPES = ["Bill", "BillPayment", "CreditMemo", "Deposit", "Invoice", "JournalEntry", "Payment",
|
8
|
+
"Purchase", "RefundReceipt", "SalesReceipt", "PurchaseOrder", "VendorCredit", "Transfer",
|
9
|
+
"Estimate", "Account", "Budget", "Class", "Customer", "Department", "Employee", "Item",
|
10
|
+
"PaymentMethod", "Term", "Vendor"]
|
11
|
+
|
12
|
+
def all_types
|
13
|
+
data = {}
|
14
|
+
TYPES.each do |entity|
|
15
|
+
if xml.css(entity).first != nil
|
16
|
+
data[entity] = all_of_type(entity)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
data
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def all_of_type(entity)
|
25
|
+
parse_block(xml.css(entity).first.parent, entity)
|
26
|
+
end
|
27
|
+
|
28
|
+
def parse_block(node, entity)
|
29
|
+
model = "Quickbooks::Model::#{entity}".constantize
|
30
|
+
models = []
|
31
|
+
all_items = node.css(entity).map do |item|
|
32
|
+
if item.attribute("status").try(:value) == "Deleted"
|
33
|
+
Quickbooks::Model::ChangeModel.from_xml(item)
|
34
|
+
else
|
35
|
+
model.from_xml(item)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -25,7 +25,8 @@ module Quickbooks
|
|
25
25
|
xml_accessor :name_values, :from => 'NameValue', :as => [NameValue]
|
26
26
|
|
27
27
|
def find_name_value(name)
|
28
|
-
name_values.
|
28
|
+
nv = name_values.find { |nv| nv.name == name }
|
29
|
+
nv ? nv.value : nil
|
29
30
|
end
|
30
31
|
|
31
32
|
def find_boolean_name_value(name)
|
@@ -2,7 +2,7 @@ module Quickbooks
|
|
2
2
|
module Model
|
3
3
|
class DepositLineDetail < BaseModel
|
4
4
|
|
5
|
-
xml_accessor :entity, :from => 'Entity', :as =>
|
5
|
+
xml_accessor :entity, :from => 'Entity', :as => BaseReference
|
6
6
|
xml_accessor :class_ref, :from => 'ClassRef', :as => BaseReference
|
7
7
|
xml_accessor :account_ref, :from => 'AccountRef', :as => BaseReference
|
8
8
|
xml_accessor :payment_method_ref, :from => 'PaymentMethodRef', :as => BaseReference
|
@@ -57,7 +57,7 @@ module Quickbooks
|
|
57
57
|
"SELECT * FROM #{self.class.name.split("::").last}"
|
58
58
|
end
|
59
59
|
|
60
|
-
def url_for_query(query = nil, start_position = 1, max_results = 20)
|
60
|
+
def url_for_query(query = nil, start_position = 1, max_results = 20, options = {})
|
61
61
|
query ||= default_model_query
|
62
62
|
query = "#{query} STARTPOSITION #{start_position} MAXRESULTS #{max_results}"
|
63
63
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Quickbooks
|
2
|
+
module Service
|
3
|
+
class ChangeDataCapture < BaseService
|
4
|
+
|
5
|
+
def url_for_query(entity_list, query=nil)
|
6
|
+
q = entity_list.join(",")
|
7
|
+
q = "#{q}&#{query}" if query.present?
|
8
|
+
return "#{url_for_base}/cdc?entities=#{q}"
|
9
|
+
end
|
10
|
+
|
11
|
+
def since(entity_list, timestamp)
|
12
|
+
do_http_get(url_for_query(entity_list, "changedSince=#{URI.encode_www_form_component(timestamp.iso8601)}"))
|
13
|
+
model.new(:xml => @last_response_xml)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def model
|
19
|
+
Quickbooks::Model::ChangeDataCapture
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -23,6 +23,18 @@ module Quickbooks
|
|
23
23
|
response.plain_body
|
24
24
|
end
|
25
25
|
|
26
|
+
def void(invoice, options = {})
|
27
|
+
url = "#{url_for_resource(model::REST_RESOURCE)}?operation=void"
|
28
|
+
|
29
|
+
xml = invoice.to_xml_ns(options)
|
30
|
+
response = do_http_post(url, valid_xml_document(xml))
|
31
|
+
if response.code.to_i == 200
|
32
|
+
model.from_xml(parse_singular_entity_response(model, response.plain_body))
|
33
|
+
else
|
34
|
+
false
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
26
38
|
private
|
27
39
|
|
28
40
|
def model
|
@@ -17,8 +17,8 @@ module Quickbooks
|
|
17
17
|
fetch_object(model, url, params)
|
18
18
|
end
|
19
19
|
|
20
|
-
def url_for_query(query = nil, start_position = 1, max_results = 20)
|
21
|
-
url = super(query, start_position, max_results)
|
20
|
+
def url_for_query(query = nil, start_position = 1, max_results = 20, options = {})
|
21
|
+
url = super(query, start_position, max_results, options)
|
22
22
|
"#{url}&minorversion=#{Quickbooks::Model::Item::MINORVERSION}"
|
23
23
|
end
|
24
24
|
|
@@ -9,14 +9,13 @@ module Quickbooks
|
|
9
9
|
def void(entity, options = {})
|
10
10
|
raise Quickbooks::InvalidModelException.new(entity.errors.full_messages.join(',')) unless entity.valid?
|
11
11
|
xml = entity.to_xml_ns(options)
|
12
|
-
url = url_for_resource(model
|
13
|
-
url += '?include=void'
|
12
|
+
url = "#{url_for_resource(model::REST_RESOURCE)}?include=void"
|
14
13
|
|
15
14
|
response = do_http_post(url, valid_xml_document(xml), {})
|
16
15
|
if response.code.to_i == 200
|
17
16
|
model.from_xml(parse_singular_entity_response(model, response.plain_body))
|
18
17
|
else
|
19
|
-
|
18
|
+
false
|
20
19
|
end
|
21
20
|
end
|
22
21
|
|
@@ -12,6 +12,19 @@ module Quickbooks
|
|
12
12
|
response.plain_body
|
13
13
|
end
|
14
14
|
|
15
|
+
def void(sales_receipt, options = {})
|
16
|
+
raise Quickbooks::InvalidModelException.new(sales_receipt.errors.full_messages.join(',')) unless sales_receipt.valid?
|
17
|
+
xml = sales_receipt.to_xml_ns(options)
|
18
|
+
url = "#{url_for_resource(model::REST_RESOURCE)}?include=void"
|
19
|
+
|
20
|
+
response = do_http_post(url, valid_xml_document(xml), {})
|
21
|
+
if response.code.to_i == 200
|
22
|
+
model.from_xml(parse_singular_entity_response(model, response.plain_body))
|
23
|
+
else
|
24
|
+
false
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
15
28
|
private
|
16
29
|
|
17
30
|
def model
|
@@ -21,7 +21,8 @@ module NameEntity
|
|
21
21
|
|
22
22
|
def email_address_is_valid
|
23
23
|
if primary_email_address
|
24
|
-
address = primary_email_address.address
|
24
|
+
address = primary_email_address.address.to_s
|
25
|
+
return false if address.length == 0
|
25
26
|
unless address.index('@') && address.index('.')
|
26
27
|
errors.add(:primary_email_address, "Email address must contain @ and . (dot)")
|
27
28
|
end
|
data/lib/quickbooks/version.rb
CHANGED
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: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Caughlan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02
|
11
|
+
date: 2016-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oauth
|
@@ -150,34 +150,6 @@ dependencies:
|
|
150
150
|
- - '='
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 1.3.0
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: guard
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - '='
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: 1.8.0
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - '='
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: 1.8.0
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: guard-rspec
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - '='
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: 3.0.0
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - '='
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: 3.0.0
|
181
153
|
description: QBO V3 REST API to Quickbooks Online
|
182
154
|
email: toolbag@gmail.com
|
183
155
|
executables: []
|
@@ -202,6 +174,7 @@ files:
|
|
202
174
|
- lib/quickbooks/model/bill_payment_line_item.rb
|
203
175
|
- lib/quickbooks/model/budget.rb
|
204
176
|
- lib/quickbooks/model/budget_line_item.rb
|
177
|
+
- lib/quickbooks/model/change_data_capture.rb
|
205
178
|
- lib/quickbooks/model/change_model.rb
|
206
179
|
- lib/quickbooks/model/check_payment.rb
|
207
180
|
- lib/quickbooks/model/class.rb
|
@@ -288,6 +261,7 @@ files:
|
|
288
261
|
- lib/quickbooks/service/bill.rb
|
289
262
|
- lib/quickbooks/service/bill_payment.rb
|
290
263
|
- lib/quickbooks/service/budget.rb
|
264
|
+
- lib/quickbooks/service/change_data_capture.rb
|
291
265
|
- lib/quickbooks/service/change_service.rb
|
292
266
|
- lib/quickbooks/service/class.rb
|
293
267
|
- lib/quickbooks/service/company_info.rb
|