quickbooks-ruby 0.4.4 → 0.4.6

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: 976ae1fc59078ac34b82246f9299a45ec007fe14
4
- data.tar.gz: a8a01b38858e3238f9f4ccd4c24af576bc287978
3
+ metadata.gz: bd6ad957a89437617f1bcff71acf5d6a35ca2230
4
+ data.tar.gz: ff0d3df6b00727db3babf0066dd091f9cbf35b95
5
5
  SHA512:
6
- metadata.gz: 45ba61f4650435a29b8b2a174801a7fcd0d6059773a3df2ce1b9ab364f3fcd28c771227ab78573c28fc44c147ef14130c650dec202034430f684ea03c3afd576
7
- data.tar.gz: e52ff31f8823f7dff764263da73ab3c3c2c4dd47d159fb610ec126ca9ee9c70bdd7e1df071c938a7d4850a063815a72fafd67fd1cb02d9f7d880277bb3a95c42
6
+ metadata.gz: 4344907b9f25e64fedfdbf8e4ca9f8522fd9a46579f4438973c931aed7837571f58137b6a4492cf389761c6eb901205bbc3eaec62e8734fc0994d9cfdba4331b
7
+ data.tar.gz: f5ad837bc5dfa26b4c5c5607cf5073efe1323e93430daebfcc3d625088e13cda980870f88da2fa36471323d33c1d6a815e2042cc22249e8d7aa96551ed6b34b1
@@ -46,6 +46,8 @@ require 'quickbooks/model/entity'
46
46
  require 'quickbooks/model/journal_entry_line_detail'
47
47
  require 'quickbooks/model/line'
48
48
  require 'quickbooks/model/journal_entry'
49
+ require 'quickbooks/model/item_group_line'
50
+ require 'quickbooks/model/item_group_detail'
49
51
  require 'quickbooks/model/item'
50
52
  require 'quickbooks/model/budget_line_item'
51
53
  require 'quickbooks/model/budget'
@@ -61,6 +63,7 @@ require 'quickbooks/model/email_address'
61
63
  require 'quickbooks/model/web_site_address'
62
64
  require 'quickbooks/model/physical_address'
63
65
  require 'quickbooks/model/invoice_line_item'
66
+ require 'quickbooks/model/invoice_group_line_detail'
64
67
  require 'quickbooks/model/name_value'
65
68
  require 'quickbooks/model/company_info'
66
69
  require 'quickbooks/model/customer'
@@ -76,6 +79,7 @@ require 'quickbooks/model/bill_payment_credit_card'
76
79
  require 'quickbooks/model/bill_payment'
77
80
  require 'quickbooks/model/vendor'
78
81
  require 'quickbooks/model/employee'
82
+ require 'quickbooks/model/exchange_rate'
79
83
  require 'quickbooks/model/term'
80
84
  require 'quickbooks/model/markup_info'
81
85
  require 'quickbooks/model/group_line_detail'
@@ -97,10 +101,10 @@ require 'quickbooks/model/tax_agency'
97
101
  require 'quickbooks/model/tax_service'
98
102
  require 'quickbooks/model/tax_code'
99
103
  require 'quickbooks/model/fault'
104
+ require 'quickbooks/model/refund_receipt'
100
105
  require 'quickbooks/model/batch_request'
101
106
  require 'quickbooks/model/batch_response'
102
107
  require 'quickbooks/model/preferences'
103
- require 'quickbooks/model/refund_receipt'
104
108
  require 'quickbooks/model/change_model'
105
109
  require 'quickbooks/model/invoice_change'
106
110
  require 'quickbooks/model/customer_change'
@@ -111,6 +115,7 @@ require 'quickbooks/model/credit_memo_change'
111
115
  require 'quickbooks/model/payment_change'
112
116
  require 'quickbooks/model/transfer'
113
117
  require 'quickbooks/model/change_data_capture'
118
+ require 'quickbooks/model/refund_receipt_change'
114
119
 
115
120
  #== Services
116
121
  require 'quickbooks/service/service_crud'
@@ -125,6 +130,7 @@ require 'quickbooks/service/customer'
125
130
  require 'quickbooks/service/department'
126
131
  require 'quickbooks/service/invoice'
127
132
  require 'quickbooks/service/deposit'
133
+
128
134
  require 'quickbooks/service/item'
129
135
  require 'quickbooks/service/budget'
130
136
  require 'quickbooks/service/journal_entry'
@@ -136,6 +142,7 @@ require 'quickbooks/service/bill'
136
142
  require 'quickbooks/service/bill_payment'
137
143
  require 'quickbooks/service/vendor'
138
144
  require 'quickbooks/service/employee'
145
+ require 'quickbooks/service/exchange_rate'
139
146
  require 'quickbooks/service/payment'
140
147
  require 'quickbooks/service/term'
141
148
  require 'quickbooks/service/time_activity'
@@ -162,6 +169,7 @@ require 'quickbooks/service/credit_memo_change'
162
169
  require 'quickbooks/service/payment_change'
163
170
  require 'quickbooks/service/transfer'
164
171
  require 'quickbooks/service/change_data_capture'
172
+ require 'quickbooks/service/refund_receipt_change'
165
173
 
166
174
  module Quickbooks
167
175
  @@sandbox_mode = false
@@ -207,15 +215,16 @@ module Quickbooks
207
215
  end # << self
208
216
 
209
217
  class InvalidModelException < StandardError; end
210
-
211
218
  class AuthorizationFailure < StandardError; end
212
219
  class Forbidden < StandardError; end
213
-
220
+ class ThrottleExceeded < Forbidden; end
221
+ class TooManyRequests < StandardError; end
214
222
  class ServiceUnavailable < StandardError; end
215
223
  class MissingRealmError < StandardError; end
216
224
 
217
225
  class IntuitRequestException < StandardError
218
226
  attr_accessor :message, :code, :detail, :type, :request_xml, :request_json
227
+
219
228
  def initialize(msg)
220
229
  self.message = msg
221
230
  super(msg)
@@ -19,6 +19,7 @@ class Quickbooks::Model::BatchRequest < Quickbooks::Model::BaseModel
19
19
  xml_accessor :credit_memo, from: "CreditMemo", as: Quickbooks::Model::CreditMemo
20
20
  xml_accessor :payment, from: "Payment", as: Quickbooks::Model::Payment
21
21
  xml_accessor :time_activity, from: "TimeActivity", as: Quickbooks::Model::TimeActivity
22
+ xml_accessor :refund_receipt, from: "RefundReceipt", as: Quickbooks::Model::RefundReceipt
22
23
  end
23
24
 
24
25
  XML_COLLECTION_NODE = "IntuitBatchRequest"
@@ -18,6 +18,7 @@ class Quickbooks::Model::BatchResponse < Quickbooks::Model::BaseModel
18
18
  xml_accessor :credit_memo, from: "CreditMemo", as: Quickbooks::Model::CreditMemo
19
19
  xml_accessor :payment, from: "Payment", as: Quickbooks::Model::Payment
20
20
  xml_accessor :time_activity, from: "TimeActivity", as: Quickbooks::Model::TimeActivity
21
+ xml_accessor :refund_receipt, from: "RefundReceipt", as: Quickbooks::Model::RefundReceipt
21
22
 
22
23
  def fault?
23
24
  fault
@@ -0,0 +1,23 @@
1
+ module Quickbooks
2
+ module Model
3
+ class ExchangeRate < BaseModel
4
+ XML_COLLECTION_NODE = "ExchangeRate"
5
+ XML_NODE = "ExchangeRate"
6
+ REST_RESOURCE = "exchangerate"
7
+
8
+ xml_accessor :id, :from => "Id"
9
+ xml_accessor :sync_token, :from => "SyncToken", :as => Integer
10
+ xml_accessor :meta_data, :from => "MetaData", :as => MetaData
11
+
12
+ xml_accessor :custom_fields, :from => 'CustomField', :as => [CustomField]
13
+ xml_accessor :source_currency_code, :from => 'SourceCurrencyCode'
14
+ xml_accessor :target_currency_code, :from => 'TargetCurrencyCode'
15
+ xml_accessor :rate, :from => 'Rate', :as => BigDecimal, :to_xml => to_xml_big_decimal
16
+ xml_accessor :as_of_date, :from => 'AsOfDate', :as => Date
17
+
18
+ validates_presence_of :source_currency_code, :rate, :as_of_date
19
+ validates_length_of :source_currency_code, :is => 3
20
+ validates_length_of :target_currency_code, :is => 3
21
+ end
22
+ end
23
+ end
@@ -48,6 +48,7 @@ module Quickbooks
48
48
  xml_accessor :print_status, :from => 'PrintStatus'
49
49
  xml_accessor :email_status, :from => 'EmailStatus'
50
50
  xml_accessor :balance, :from => 'Balance', :as => BigDecimal, :to_xml => to_xml_big_decimal
51
+ xml_accessor :home_balance, :from => 'HomeBalance', :as => BigDecimal, :to_xml => to_xml_big_decimal
51
52
  xml_accessor :deposit, :from => 'Deposit', :as => BigDecimal, :to_xml => to_xml_big_decimal
52
53
  xml_accessor :department_ref, :from => 'DepartmentRef', :as => BaseReference
53
54
  xml_accessor :allow_ipn_payment?, :from => 'AllowIPNPayment'
@@ -1,6 +1,7 @@
1
1
  module Quickbooks
2
2
  module Model
3
- # Refer to: https://developer.intuit.com/docs/0100_accounting/0300_developer_guides/change_data_capture
3
+ # Refer to:
4
+ # - https://developer.intuit.com/docs/0100_quickbooks_online/0200_dev_guides/accounting/change_data_capture
4
5
  class InvoiceChange < ChangeModel
5
6
  XML_NODE = "Invoice"
6
7
  end
@@ -0,0 +1,14 @@
1
+ module Quickbooks
2
+ module Model
3
+ class InvoiceGroupLineDetail < InvoiceLineItem
4
+ include HasLineItems
5
+
6
+ xml_accessor :id, :from => 'Id'
7
+ xml_accessor :group_item_ref, :from => 'GroupItemRef', :as => BaseReference
8
+ xml_accessor :quantity, :from => 'Quantity', :as => BigDecimal, :to_xml => to_xml_big_decimal
9
+ xml_accessor :line_items, :from => 'Line', :as => [InvoiceLineItem]
10
+
11
+ reference_setters :group_item_ref
12
+ end
13
+ end
14
+ end
@@ -1,12 +1,14 @@
1
1
  module Quickbooks
2
2
  module Model
3
3
  class InvoiceLineItem < BaseModel
4
+ require 'quickbooks/model/invoice_group_line_detail'
4
5
 
5
6
  #== Constants
6
7
  SALES_LINE_ITEM_DETAIL = 'SalesItemLineDetail'
7
8
  SUB_TOTAL_LINE_DETAIL = 'SubTotalLineDetail'
8
9
  PAYMENT_LINE_DETAIL = 'PaymentLineDetail'
9
10
  DISCOUNT_LINE_DETAIL = 'DiscountLineDetail'
11
+ INVOICE_GROUP_LINE_DETAIL = 'GroupLineDetail'
10
12
 
11
13
  xml_accessor :id, :from => 'Id'
12
14
  xml_accessor :line_num, :from => 'LineNum', :as => Integer
@@ -19,6 +21,11 @@ module Quickbooks
19
21
  xml_accessor :sub_total_line_detail, :from => 'SubTotalLineDetail', :as => SubTotalLineDetail
20
22
  xml_accessor :payment_line_detail, :from => 'PaymentLineDetail', :as => PaymentLineDetail
21
23
  xml_accessor :discount_line_detail, :from => 'DiscountLineDetail', :as => DiscountLineDetail
24
+ xml_accessor :group_line_detail, :from => INVOICE_GROUP_LINE_DETAIL, :as => InvoiceGroupLineDetail
25
+
26
+ def group_line_detail?
27
+ detail_type.to_s == INVOICE_GROUP_LINE_DETAIL
28
+ end
22
29
 
23
30
  def sales_item?
24
31
  detail_type.to_s == SALES_LINE_ITEM_DETAIL
@@ -39,6 +46,13 @@ module Quickbooks
39
46
  yield self.sales_line_item_detail if block_given?
40
47
  end
41
48
 
49
+ def group_line_detail!
50
+ self.detail_type = INVOICE_GROUP_LINE_DETAIL
51
+ self.group_line_detail = InvoiceGroupLineDetail.new
52
+
53
+ yield self.group_line_detail if block_given?
54
+ end
55
+
42
56
  def payment_item!
43
57
  self.detail_type = PAYMENT_LINE_DETAIL
44
58
  self.payment_line_detail = PaymentLineDetail.new
@@ -52,7 +66,6 @@ module Quickbooks
52
66
 
53
67
  yield self.discount_line_detail if block_given?
54
68
  end
55
-
56
69
  end
57
70
  end
58
71
  end
@@ -49,6 +49,10 @@ module Quickbooks
49
49
  xml_accessor :purchase_tax_code_ref, :from => 'PurchaseTaxCodeRef', :as => BaseReference
50
50
  xml_accessor :inv_start_date, :from => 'InvStartDate', :as => Date
51
51
 
52
+ xml_accessor :print_grouped_items?, :from => 'PrintGroupedItems'
53
+
54
+ xml_accessor :item_group_details, :from => 'ItemGroupDetail', :as => ItemGroupDetail
55
+
52
56
  reference_setters :parent_ref, :income_account_ref, :expense_account_ref
53
57
  reference_setters :asset_account_ref, :sales_tax_code_ref, :purchase_tax_code_ref
54
58
 
@@ -78,7 +82,6 @@ module Quickbooks
78
82
  end
79
83
  errors.empty?
80
84
  end
81
-
82
85
  end
83
86
  end
84
87
  end
@@ -0,0 +1,9 @@
1
+ module Quickbooks
2
+ module Model
3
+ class ItemGroupDetail < BaseModel
4
+ include HasLineItems
5
+
6
+ xml_accessor :line_items, :from => 'ItemGroupLine', :as => [ItemGroupLine]
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,20 @@
1
+ module Quickbooks
2
+ module Model
3
+ class ItemGroupLine < BaseModel
4
+ xml_accessor :item_ref, :from => 'ItemRef', :as => BaseReference
5
+ xml_accessor :quantity, :from => 'Qty'
6
+
7
+ def id
8
+ item_ref.value.to_i
9
+ end
10
+
11
+ def name
12
+ item_ref.name
13
+ end
14
+
15
+ def type
16
+ item_ref.type
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,8 @@
1
+ module Quickbooks
2
+ module Model
3
+ # Refer to: https://developer.intuit.com/docs/0100_accounting/0300_developer_guides/change_data_capture
4
+ class RefundReceiptChange < ChangeModel
5
+ XML_NODE = "RefundReceipt"
6
+ end
7
+ end
8
+ end
@@ -268,9 +268,16 @@ module Quickbooks
268
268
  when 401
269
269
  raise Quickbooks::AuthorizationFailure
270
270
  when 403
271
- raise Quickbooks::Forbidden
271
+ message = parse_intuit_error[:message]
272
+ if message.include?('ThrottleExceeded')
273
+ raise Quickbooks::ThrottleExceeded, message
274
+ end
275
+ raise Quickbooks::Forbidden, message
272
276
  when 400, 500
273
277
  parse_and_raise_exception(options)
278
+ when 429
279
+ message = parse_intuit_error[:message]
280
+ raise Quickbooks::TooManyRequests, message
274
281
  when 503, 504
275
282
  raise Quickbooks::ServiceUnavailable
276
283
  else
@@ -3,7 +3,7 @@ module Quickbooks
3
3
  class Batch < BaseService
4
4
 
5
5
  def make_request(entity, options = {})
6
- response = do_http_post(url_for_resource('batch'), valid_xml_document(entity.to_xml_ns))
6
+ response = do_http_post(url_for_resource('batch'), valid_xml_document(entity.to_xml_ns), options[:query])
7
7
  Quickbooks::Model::BatchResponse.from_xml(response.plain_body)
8
8
  end
9
9
  end
@@ -0,0 +1,25 @@
1
+ module Quickbooks
2
+ module Service
3
+ class ExchangeRate < BaseService
4
+
5
+ def fetch_by_currency(source_currency_code, as_of_date = nil)
6
+ url = url_for_resource(model::REST_RESOURCE)
7
+ params = { sourcecurrencycode: source_currency_code }
8
+ params[:asofdate] = as_of_date unless as_of_date.nil?
9
+
10
+ response = do_http_get(url, params)
11
+ if response.code.to_i == 200
12
+ model.from_xml(parse_singular_entity_response(model, response.plain_body))
13
+ else
14
+ nil
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def model
21
+ Quickbooks::Model::ExchangeRate
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,16 @@
1
+ module Quickbooks
2
+ module Service
3
+ class RefundReceiptChange < ChangeService
4
+
5
+ private
6
+
7
+ def entity
8
+ "RefundReceipt"
9
+ end
10
+
11
+ def model
12
+ Quickbooks::Model::RefundReceiptChange
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,5 +1,5 @@
1
1
  module Quickbooks
2
2
 
3
- VERSION = "0.4.4"
3
+ VERSION = "0.4.6"
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.4
4
+ version: 0.4.6
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-06-02 00:00:00.000000000 Z
11
+ date: 2016-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: activemodel
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - <
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 5.0.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - <
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 5.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: multipart-post
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -199,16 +199,20 @@ files:
199
199
  - lib/quickbooks/model/entity.rb
200
200
  - lib/quickbooks/model/entity_ref.rb
201
201
  - lib/quickbooks/model/estimate.rb
202
+ - lib/quickbooks/model/exchange_rate.rb
202
203
  - lib/quickbooks/model/fault.rb
203
204
  - lib/quickbooks/model/global_tax_calculation.rb
204
205
  - lib/quickbooks/model/group_line_detail.rb
205
206
  - lib/quickbooks/model/has_line_items.rb
206
207
  - lib/quickbooks/model/invoice.rb
207
208
  - lib/quickbooks/model/invoice_change.rb
209
+ - lib/quickbooks/model/invoice_group_line_detail.rb
208
210
  - lib/quickbooks/model/invoice_line_item.rb
209
211
  - lib/quickbooks/model/item.rb
210
212
  - lib/quickbooks/model/item_based_expense_line_detail.rb
211
213
  - lib/quickbooks/model/item_change.rb
214
+ - lib/quickbooks/model/item_group_detail.rb
215
+ - lib/quickbooks/model/item_group_line.rb
212
216
  - lib/quickbooks/model/journal_entry.rb
213
217
  - lib/quickbooks/model/journal_entry_line_detail.rb
214
218
  - lib/quickbooks/model/line.rb
@@ -228,6 +232,7 @@ files:
228
232
  - lib/quickbooks/model/purchase_order.rb
229
233
  - lib/quickbooks/model/purchase_tax_rate_list.rb
230
234
  - lib/quickbooks/model/refund_receipt.rb
235
+ - lib/quickbooks/model/refund_receipt_change.rb
231
236
  - lib/quickbooks/model/report.rb
232
237
  - lib/quickbooks/model/sales_item_line_detail.rb
233
238
  - lib/quickbooks/model/sales_receipt.rb
@@ -273,6 +278,7 @@ files:
273
278
  - lib/quickbooks/service/deposit.rb
274
279
  - lib/quickbooks/service/employee.rb
275
280
  - lib/quickbooks/service/estimate.rb
281
+ - lib/quickbooks/service/exchange_rate.rb
276
282
  - lib/quickbooks/service/invoice.rb
277
283
  - lib/quickbooks/service/invoice_change.rb
278
284
  - lib/quickbooks/service/item.rb
@@ -285,6 +291,7 @@ files:
285
291
  - lib/quickbooks/service/purchase.rb
286
292
  - lib/quickbooks/service/purchase_order.rb
287
293
  - lib/quickbooks/service/refund_receipt.rb
294
+ - lib/quickbooks/service/refund_receipt_change.rb
288
295
  - lib/quickbooks/service/reports.rb
289
296
  - lib/quickbooks/service/sales_receipt.rb
290
297
  - lib/quickbooks/service/service_crud.rb