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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8c1f7609fbdad9a588640b0ecb0249f9b25d1cd5
4
- data.tar.gz: 478cfbcb38a9b85550eab9bb0c4a50bd37e70aca
3
+ metadata.gz: 976ae1fc59078ac34b82246f9299a45ec007fe14
4
+ data.tar.gz: a8a01b38858e3238f9f4ccd4c24af576bc287978
5
5
  SHA512:
6
- metadata.gz: 8debdcbde394d52e675e5000b519a0ba4a213a7151cf108c97502716658e2361a3a0a4eb7d6ffef3f95b412786dbe4f8bacb41ded9a6f049a597c1eb1aac99aa
7
- data.tar.gz: 556d4cf4a82481b7300a9ae737f7b0423b6bc411df2fd5fc904fbcdb5363b1e7b8cb2d575c1e91f55b5a2d22ea50f1c48c97854be7eb206e843799660cad11a6
6
+ metadata.gz: 45ba61f4650435a29b8b2a174801a7fcd0d6059773a3df2ce1b9ab364f3fcd28c771227ab78573c28fc44c147ef14130c650dec202034430f684ea03c3afd576
7
+ data.tar.gz: e52ff31f8823f7dff764263da73ab3c3c2c4dd47d159fb610ec126ca9ee9c70bdd7e1df071c938a7d4850a063815a72fafd67fd1cb02d9f7d880277bb3a95c42
@@ -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.select { |nv| nv.name == name }.first.value
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 => Entity
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.resource_for_singular)
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
- nil
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
@@ -1,5 +1,5 @@
1
1
  module Quickbooks
2
2
 
3
- VERSION = "0.4.3"
3
+ VERSION = "0.4.4"
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: 0.4.3
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-13 00:00:00.000000000 Z
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