quickbooks-ruby 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/lib/quickbooks-ruby.rb +12 -2
  3. data/lib/quickbooks/model/account.rb +3 -3
  4. data/lib/quickbooks/model/account_based_expense_line_detail.rb +2 -2
  5. data/lib/quickbooks/model/base_model.rb +5 -1
  6. data/lib/quickbooks/model/bill.rb +2 -1
  7. data/lib/quickbooks/model/bill_line_item.rb +2 -2
  8. data/lib/quickbooks/model/bill_payment.rb +0 -1
  9. data/lib/quickbooks/model/bill_payment_line_item.rb +2 -2
  10. data/lib/quickbooks/model/class.rb +31 -0
  11. data/lib/quickbooks/model/credit_memo.rb +8 -1
  12. data/lib/quickbooks/model/customer.rb +2 -2
  13. data/lib/quickbooks/model/department.rb +31 -0
  14. data/lib/quickbooks/model/discount_line_detail.rb +2 -2
  15. data/lib/quickbooks/model/discount_override.rb +1 -1
  16. data/lib/quickbooks/model/document_numbering.rb +18 -0
  17. data/lib/quickbooks/model/employee.rb +1 -1
  18. data/lib/quickbooks/model/estimate.rb +3 -6
  19. data/lib/quickbooks/model/group_line_detail.rb +2 -2
  20. data/lib/quickbooks/model/invoice.rb +9 -8
  21. data/lib/quickbooks/model/invoice_line_item.rb +2 -2
  22. data/lib/quickbooks/model/item_based_expense_line_detail.rb +3 -3
  23. data/lib/quickbooks/model/line.rb +1 -1
  24. data/lib/quickbooks/model/markup_info.rb +2 -2
  25. data/lib/quickbooks/model/payment.rb +2 -2
  26. data/lib/quickbooks/model/payment_line_detail.rb +2 -2
  27. data/lib/quickbooks/model/payment_method.rb +1 -1
  28. data/lib/quickbooks/model/purchase.rb +2 -2
  29. data/lib/quickbooks/model/sales_item_line_detail.rb +1 -1
  30. data/lib/quickbooks/model/sales_receipt.rb +8 -6
  31. data/lib/quickbooks/model/tax_code.rb +3 -14
  32. data/lib/quickbooks/model/tax_line_detail.rb +2 -2
  33. data/lib/quickbooks/model/tax_rate.rb +1 -4
  34. data/lib/quickbooks/model/transaction_tax_detail.rb +1 -1
  35. data/lib/quickbooks/service/account.rb +0 -4
  36. data/lib/quickbooks/service/base_service.rb +20 -12
  37. data/lib/quickbooks/service/bill.rb +4 -2
  38. data/lib/quickbooks/service/bill_payment.rb +1 -3
  39. data/lib/quickbooks/service/class.rb +23 -0
  40. data/lib/quickbooks/service/company_info.rb +1 -5
  41. data/lib/quickbooks/service/credit_memo.rb +2 -4
  42. data/lib/quickbooks/service/customer.rb +0 -4
  43. data/lib/quickbooks/service/department.rb +23 -0
  44. data/lib/quickbooks/service/employee.rb +0 -4
  45. data/lib/quickbooks/service/estimate.rb +1 -5
  46. data/lib/quickbooks/service/invoice.rb +2 -6
  47. data/lib/quickbooks/service/item.rb +1 -5
  48. data/lib/quickbooks/service/payment.rb +0 -4
  49. data/lib/quickbooks/service/payment_method.rb +6 -8
  50. data/lib/quickbooks/service/purchase.rb +1 -3
  51. data/lib/quickbooks/service/purchase_order.rb +2 -4
  52. data/lib/quickbooks/service/sales_receipt.rb +1 -3
  53. data/lib/quickbooks/service/service_crud.rb +1 -15
  54. data/lib/quickbooks/service/tax_code.rb +0 -4
  55. data/lib/quickbooks/service/tax_rate.rb +0 -4
  56. data/lib/quickbooks/service/term.rb +0 -4
  57. data/lib/quickbooks/service/time_activity.rb +0 -4
  58. data/lib/quickbooks/service/vendor.rb +0 -4
  59. data/lib/quickbooks/service/vendor_credit.rb +2 -4
  60. data/lib/quickbooks/util/logging.rb +10 -0
  61. data/lib/quickbooks/util/name_entity.rb +2 -1
  62. data/lib/quickbooks/version.rb +1 -1
  63. metadata +7 -2
@@ -3,11 +3,11 @@ module Quickbooks
3
3
  class ItemBasedExpenseLineDetail < BaseModel
4
4
  xml_accessor :item_ref, :from => 'ItemRef', :as => BaseReference
5
5
  xml_accessor :class_ref, :from => 'ClassRef', :as => BaseReference
6
- xml_accessor :unit_price, :from => 'UnitPrice', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
7
- xml_accessor :rate_percent, :from => 'RatePercent', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
6
+ xml_accessor :unit_price, :from => 'UnitPrice', :as => BigDecimal, :to_xml => to_xml_big_decimal
7
+ xml_accessor :rate_percent, :from => 'RatePercent', :as => BigDecimal, :to_xml => to_xml_big_decimal
8
8
  xml_accessor :price_level_ref, :from => 'PriceLevelRef', :as => BaseReference
9
9
  xml_accessor :markup_info, :from => 'MarkupInfo', :as => MarkupInfo
10
- xml_accessor :quantity, :from => 'Qty', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
10
+ xml_accessor :quantity, :from => 'Qty', :as => BigDecimal, :to_xml => to_xml_big_decimal
11
11
  xml_accessor :tax_code_ref, :from => 'TaxCodeRef', :as => BaseReference
12
12
  xml_accessor :customer_ref, :from => 'CustomerRef', :as => BaseReference
13
13
  xml_accessor :billable_status, :from => 'BillableStatus'
@@ -10,7 +10,7 @@ module Quickbooks
10
10
  xml_accessor :id, :from => 'Id', :as => Integer
11
11
  xml_accessor :line_num, :from => 'LineNum', :as => Integer
12
12
  xml_accessor :description, :from => 'Description'
13
- xml_accessor :amount, :from => 'Amount', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
13
+ xml_accessor :amount, :from => 'Amount', :as => BigDecimal, :to_xml => to_xml_big_decimal
14
14
  xml_accessor :detail_type, :from => 'DetailType'
15
15
  xml_accessor :linked_transactions, :from => 'LinkedTxn', :as => [LinkedTransaction]
16
16
 
@@ -2,8 +2,8 @@ module Quickbooks
2
2
  module Model
3
3
  class MarkupInfo < BaseModel
4
4
  xml_accessor :percent_based, :from => 'PercentBased'
5
- xml_accessor :value, :from => 'Value', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
6
- xml_accessor :percent, :from => 'Percent', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
5
+ xml_accessor :value, :from => 'Value', :as => BigDecimal, :to_xml => to_xml_big_decimal
6
+ xml_accessor :percent, :from => 'Percent', :as => BigDecimal, :to_xml => to_xml_big_decimal
7
7
  xml_accessor :price_level_ref, :from => 'PriceLevelRef', :as => BaseReference
8
8
 
9
9
  reference_setters :price_level_ref
@@ -19,10 +19,10 @@ module Quickbooks
19
19
  xml_accessor :payment_ref_number, :from => 'PaymentRefNum'
20
20
  xml_accessor :credit_card_payment, :from => 'CreditCardPayment', :as => CreditCardPayment
21
21
  xml_accessor :total, :from => 'TotalAmt', :as => BigDecimal, :to_xml => :to_f.to_proc
22
- xml_accessor :unapplied_amount, :from => 'UnappliedAmt', :as => BigDecimal, :to_xml => :to_f.to_proc
22
+ xml_accessor :unapplied_amount, :from => 'UnappliedAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
23
23
  xml_accessor :process_payment, :from => 'ProcessPayment'
24
24
  xml_accessor :currency_ref, :from => 'CurrencyRef', :as => BaseReference
25
- xml_accessor :exchange_rate, :from => 'ExchangeRate', :as => BigDecimal, :to_xml => :to_f.to_proc
25
+ xml_accessor :exchange_rate, :from => 'ExchangeRate', :as => BigDecimal, :to_xml => to_xml_big_decimal
26
26
 
27
27
  reference_setters :customer_ref, :ar_account_ref
28
28
  reference_setters :payment_method_ref, :deposit_to_account_ref, :currency_ref
@@ -3,10 +3,10 @@ module Quickbooks
3
3
  class PaymentLineDetail < BaseModel
4
4
  xml_accessor :item_ref, :from => 'ItemRef', :as => BaseReference
5
5
  xml_accessor :class_ref, :from => 'ClassRef', :as => BaseReference
6
- xml_accessor :balance, :from => 'Balance', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
6
+ xml_accessor :balance, :from => 'Balance', :as => BigDecimal, :to_xml => to_xml_big_decimal
7
7
  xml_accessor :discount, :from => 'Discount', :as => DiscountOverride
8
8
 
9
9
  reference_setters :item_ref, :class_ref
10
10
  end
11
11
  end
12
- end
12
+ end
@@ -8,7 +8,7 @@ module Quickbooks
8
8
  xml_accessor :id, :from => 'Id', :as => Integer
9
9
  xml_accessor :name, :from => 'Name'
10
10
  xml_accessor :active?, :from => 'Active'
11
- xml_accessor :amount, :from => 'Amount', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
11
+ xml_accessor :amount, :from => 'Amount', :as => BigDecimal, :to_xml => to_xml_big_decimal
12
12
  end
13
13
  end
14
14
  end
@@ -24,7 +24,7 @@ module Quickbooks
24
24
  xml_accessor :doc_number, :from => 'DocNumber'
25
25
  xml_accessor :txn_date, :from => 'TxnDate', :as => Date
26
26
  xml_accessor :private_note, :from => 'PrivateNote'
27
-
27
+
28
28
  xml_accessor :line_items, :from => 'Line', :as => [PurchaseLineItem]
29
29
  xml_accessor :account_ref, :from => 'AccountRef', :as => BaseReference
30
30
  xml_accessor :txn_tax_detail, :from => 'TxnTaxDetail', :as => TransactionTaxDetail
@@ -32,7 +32,7 @@ module Quickbooks
32
32
  xml_accessor :payment_type, :from => 'PaymentType'
33
33
  xml_accessor :entity_ref, :from => 'EntityRef', :as => BaseReference
34
34
  xml_accessor :remit_to_address, :from => 'RemitToAddr', :as => PhysicalAddress
35
- xml_accessor :total_amount, :from => 'TotalAmt', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
35
+ xml_accessor :total_amount, :from => 'TotalAmt', :as => BigDecimal, :to_xml => to_xml_big_decimal
36
36
  xml_accessor :print_status, :from => 'PrintStatus'
37
37
  xml_accessor :department_ref, :from => 'DepartmentRef', :as => BaseReference
38
38
 
@@ -4,7 +4,7 @@ module Quickbooks
4
4
  xml_accessor :item_ref, :from => 'ItemRef', :as => BaseReference
5
5
  xml_accessor :class_ref, :from => 'ClassRef', :as => BaseReference
6
6
  xml_accessor :unit_price, :from => 'UnitPrice', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
7
- xml_accessor :rate_percent, :from => 'RatePercent', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
7
+ xml_accessor :rate_percent, :from => 'RatePercent', :as => BigDecimal, :to_xml => to_xml_big_decimal
8
8
  xml_accessor :price_level_ref, :from => 'PriceLevelRef', :as => BaseReference
9
9
  xml_accessor :quantity, :from => 'Qty', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
10
10
  xml_accessor :tax_code_ref, :from => 'TaxCodeRef', :as => BaseReference
@@ -8,35 +8,37 @@ module Quickbooks
8
8
  xml_accessor :id, :from => 'Id', :as => Integer
9
9
  xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
10
10
  xml_accessor :meta_data, :from => 'MetaData', :as => MetaData
11
+ xml_accessor :auto_doc_number, :from => 'AutoDocNumber' # See auto_doc_number! method below for usage
11
12
  xml_accessor :doc_number, :from => 'DocNumber'
12
13
  xml_accessor :placed_on, :from => 'TxnDate', :as => Time
13
-
14
14
  xml_accessor :line_items, :from => 'Line', :as => [Line]
15
15
  xml_accessor :customer_ref, :from => 'CustomerRef', :as => BaseReference
16
16
  xml_accessor :bill_email, :from => 'BillEmail', :as => EmailAddress
17
17
  xml_accessor :bill_address, :from => 'BillAddr', :as => PhysicalAddress
18
18
  xml_accessor :ship_address, :from => 'ShipAddr', :as => PhysicalAddress
19
-
20
19
  xml_accessor :po_number, :from => 'PONumber'
21
-
22
20
  xml_accessor :ship_method_ref, :from => 'ShipMethodRef'
23
21
  xml_accessor :ship_date, :from => 'ShipDate', :as => Time
24
22
  xml_accessor :tracking_num, :from => 'TrackingNum'
25
-
26
23
  xml_accessor :payment_method_ref, :from => 'PaymentMethodRef', :as => BaseReference
27
24
  xml_accessor :payment_ref_number, :from => 'PaymentRefNum'
28
-
29
25
  xml_accessor :deposit_to_account_ref, :from => 'DepositToAccountRef', :as => BaseReference
30
-
31
26
  xml_accessor :customer_memo, :from => 'CustomerMemo'
32
27
  xml_accessor :private_note, :from => 'PrivateNote'
33
28
 
34
29
  # readonly
35
30
  xml_accessor :total, :from => 'TotalAmt', :as => BigDecimal
36
31
 
32
+ include DocumentNumbering
37
33
  reference_setters :customer_ref, :payment_method_ref, :deposit_to_account_ref
38
34
 
39
35
  validates_length_of :line_items, :minimum => 1
36
+ validate :document_numbering
37
+
38
+ def initialize(*args)
39
+ ensure_line_items_initialization
40
+ super
41
+ end
40
42
 
41
43
  def email=(email)
42
44
  self.bill_email = EmailAddress.new(email)
@@ -10,22 +10,11 @@ module Quickbooks
10
10
  xml_accessor :meta_data, :from => "MetaData", :as => MetaData
11
11
  xml_accessor :name, :from => "Name"
12
12
  xml_accessor :description, :from => "Description"
13
- xml_accessor :active, :from => "Active"
14
- xml_accessor :taxable, :from => "Taxable"
15
- xml_accessor :tax_group, :from => "TaxGroup"
13
+ xml_accessor :active?, :from => "Active"
14
+ xml_accessor :taxable?, :from => "Taxable"
15
+ xml_accessor :tax_group?, :from => "TaxGroup"
16
16
  xml_accessor :sales_tax_rate_list, :from => "SalesTaxRateList", :as => SalesTaxRateList
17
17
 
18
- def active?
19
- active == "true"
20
- end
21
-
22
- def taxable?
23
- taxable == "true"
24
- end
25
-
26
- def tax_group?
27
- tax_group == "true"
28
- end
29
18
  end
30
19
  end
31
20
  end
@@ -2,7 +2,7 @@ module Quickbooks
2
2
  module Model
3
3
  class TaxLineDetail < BaseModel
4
4
 
5
- xml_accessor :percent_based, :from => 'PercentBased'
5
+ xml_accessor :percent_based?, :from => 'PercentBased'
6
6
  xml_accessor :net_amount_taxable, :from => 'NetAmountTaxable', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
7
7
  xml_accessor :tax_inclusive_amount, :from => 'TaxInclusiveAmount', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
8
8
  xml_accessor :override_delta_amount, :from => 'OverrideDeltaAmount', :as => BigDecimal, :to_xml => Proc.new { |val| val.to_f }
@@ -13,4 +13,4 @@ module Quickbooks
13
13
 
14
14
  end
15
15
  end
16
- end
16
+ end
@@ -10,7 +10,7 @@ module Quickbooks
10
10
  xml_accessor :meta_data, :from => "MetaData", :as => MetaData
11
11
  xml_accessor :name, :from => "Name"
12
12
  xml_accessor :description, :from => "Description"
13
- xml_accessor :active, :from => "Active"
13
+ xml_accessor :active?, :from => "Active"
14
14
  xml_accessor :rate_value, :from => "RateValue", :as => BigDecimal, :to_xml => :to_f.to_proc
15
15
  xml_accessor :agency_ref, :from => "AgencyRef", :as => BaseReference
16
16
  xml_accessor :tax_return_line_ref, :from => "TaxReturnLineRef", :as => BaseReference
@@ -23,9 +23,6 @@ module Quickbooks
23
23
  reference_setters :agency_ref
24
24
  reference_setters :tax_return_line_ref
25
25
 
26
- def active?
27
- active == "true"
28
- end
29
26
  end
30
27
  end
31
28
  end
@@ -3,7 +3,7 @@ module Quickbooks
3
3
  class TransactionTaxDetail < BaseModel
4
4
 
5
5
  xml_accessor :txn_tax_code_ref, :from => 'TxnTaxCodeRef', :as => BaseReference
6
- xml_accessor :total_tax, :from => 'TotalTax', :as => BigDecimal, :to_xml => :to_f.to_proc
6
+ xml_accessor :total_tax, :from => 'TotalTax', :as => BigDecimal, :to_xml => to_xml_big_decimal
7
7
  xml_accessor :lines, :from => 'TaxLine', :as => [TaxLine]
8
8
 
9
9
  reference_setters :txn_tax_code_ref
@@ -9,10 +9,6 @@ module Quickbooks
9
9
 
10
10
  private
11
11
 
12
- def default_model_query
13
- "SELECT * FROM ACCOUNT"
14
- end
15
-
16
12
  def model
17
13
  Quickbooks::Model::Account
18
14
  end
@@ -15,8 +15,9 @@ module Quickbooks
15
15
  HTTP_ACCEPT = 'application/xml'
16
16
  HTTP_ACCEPT_ENCODING = 'gzip, deflate'
17
17
 
18
- def initialize()
18
+ def initialize(attributes = {})
19
19
  @base_uri = 'https://qb.sbfinance.intuit.com/v3/company'
20
+ attributes.each {|key, value| public_send("#{key}=", value) }
20
21
  end
21
22
 
22
23
  def access_token=(token)
@@ -40,6 +41,10 @@ module Quickbooks
40
41
  "#{@base_uri}/#{@company_id}"
41
42
  end
42
43
 
44
+ def default_model_query
45
+ "SELECT * FROM #{self.class.name.split("::").last}"
46
+ end
47
+
43
48
  def url_for_query(query = nil, start_position = 1, max_results = 20)
44
49
  query ||= default_model_query
45
50
  query = "#{query} STARTPOSITION #{start_position} MAXRESULTS #{max_results}"
@@ -194,11 +199,12 @@ module Quickbooks
194
199
  headers['Accept-Encoding'] = HTTP_ACCEPT_ENCODING
195
200
  end
196
201
 
197
- log "------ New Request ------"
202
+ log "------ QUICKBOOKS-RUBY REQUEST ------"
198
203
  log "METHOD = #{method}"
199
204
  log "RESOURCE = #{url}"
200
- log "BODY(#{body.class}) = #{body == nil ? "<NIL>" : body.inspect}"
201
- log "HEADERS = #{headers.inspect}"
205
+ log "REQUEST BODY:"
206
+ log(log_xml(body))
207
+ log "REQUEST HEADERS = #{headers.inspect}"
202
208
 
203
209
  response = case method
204
210
  when :get
@@ -208,7 +214,7 @@ module Quickbooks
208
214
  else
209
215
  raise "Do not know how to perform that HTTP operation"
210
216
  end
211
- check_response(response)
217
+ check_response(response, :request_xml => body)
212
218
  end
213
219
 
214
220
  def add_query_string_to_url(url, params)
@@ -219,25 +225,27 @@ module Quickbooks
219
225
  end
220
226
  end
221
227
 
222
- def check_response(response)
228
+ def check_response(response, options = {})
229
+ log "------ QUICKBOOKS-RUBY RESPONSE ------"
223
230
  log "RESPONSE CODE = #{response.code}"
224
- log "RESPONSE BODY = #{response.plain_body}"
231
+ log "RESPONSE BODY:"
232
+ log(log_xml(response.plain_body))
225
233
  parse_xml(response.plain_body)
226
234
  status = response.code.to_i
227
235
  case status
228
236
  when 200
229
237
  # even HTTP 200 can contain an error, so we always have to peek for an Error
230
238
  if response_is_error?
231
- parse_and_raise_exception
239
+ parse_and_raise_exception(options)
232
240
  else
233
241
  response
234
242
  end
235
243
  when 302
236
244
  raise "Unhandled HTTP Redirect"
237
- when 401
245
+ when 401, 403
238
246
  raise Quickbooks::AuthorizationFailure
239
247
  when 400, 500
240
- parse_and_raise_exception
248
+ parse_and_raise_exception(options)
241
249
  when 503
242
250
  raise Quickbooks::ServiceUnavailable
243
251
  else
@@ -245,13 +253,13 @@ module Quickbooks
245
253
  end
246
254
  end
247
255
 
248
- def parse_and_raise_exception
256
+ def parse_and_raise_exception(options = {})
249
257
  err = parse_intuit_error
250
258
  ex = Quickbooks::IntuitRequestException.new("#{err[:message]}:\n\t#{err[:detail]}")
251
259
  ex.code = err[:code]
252
260
  ex.detail = err[:detail]
253
261
  ex.type = err[:type]
254
-
262
+ ex.request_xml = options[:request_xml]
255
263
  raise ex
256
264
  end
257
265
 
@@ -2,10 +2,12 @@ module Quickbooks
2
2
  module Service
3
3
  class Bill < BaseService
4
4
 
5
- def default_model_query
6
- "SELECT * FROM Bill"
5
+ def delete(bill, options = {})
6
+ delete_by_query_string(bill)
7
7
  end
8
8
 
9
+ private
10
+
9
11
  def model
10
12
  Quickbooks::Model::Bill
11
13
  end
@@ -2,9 +2,7 @@ module Quickbooks
2
2
  module Service
3
3
  class BillPayment < BaseService
4
4
 
5
- def default_model_query
6
- "SELECT * FROM BillPayment"
7
- end
5
+ private
8
6
 
9
7
  def model
10
8
  Quickbooks::Model::BillPayment
@@ -0,0 +1,23 @@
1
+ module Quickbooks
2
+ module Service
3
+ class Class < BaseService
4
+
5
+ def update(entity, options = {})
6
+ raise Quickbooks::InvalidModelException.new('Class sparse update is not supported by Intuit at this time') if options[:sparse] && options[:sparse] == true
7
+ super(entity, options)
8
+ end
9
+
10
+ def delete(classs)
11
+ classs.active = false
12
+ update(classs, :sparse => false)
13
+ end
14
+
15
+ private
16
+
17
+ def model
18
+ Quickbooks::Model::Class
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -3,11 +3,7 @@ module Quickbooks
3
3
  class CompanyInfo < BaseService
4
4
 
5
5
  private
6
-
7
- def default_model_query
8
- "SELECT * FROM CompanyInfo"
9
- end
10
-
6
+
11
7
  def model
12
8
  Quickbooks::Model::CompanyInfo
13
9
  end
@@ -2,10 +2,8 @@ module Quickbooks
2
2
  module Service
3
3
  class CreditMemo < BaseService
4
4
 
5
- def default_model_query
6
- "SELECT * FROM CreditMemo"
7
- end
8
-
5
+ private
6
+
9
7
  def model
10
8
  Quickbooks::Model::CreditMemo
11
9
  end
@@ -9,10 +9,6 @@ module Quickbooks
9
9
 
10
10
  private
11
11
 
12
- def default_model_query
13
- "SELECT * FROM CUSTOMER"
14
- end
15
-
16
12
  def model
17
13
  Quickbooks::Model::Customer
18
14
  end
@@ -0,0 +1,23 @@
1
+ module Quickbooks
2
+ module Service
3
+ class Department < BaseService
4
+
5
+ def update(entity, options = {})
6
+ raise Quickbooks::InvalidModelException.new('Department sparse update is not supported by Intuit at this time') if options[:sparse] && options[:sparse] == true
7
+ super(entity, options)
8
+ end
9
+
10
+ def delete(department)
11
+ department.active = false
12
+ update(department, :sparse => false)
13
+ end
14
+
15
+ private
16
+
17
+ def model
18
+ Quickbooks::Model::Department
19
+ end
20
+
21
+ end
22
+ end
23
+ end