quickbooks-ruby 0.1.2 → 0.1.3

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.
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