quickbooks-ruby 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
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