quickbooks-ruby-oauth2 0.6.1

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 (169) hide show
  1. checksums.yaml +7 -0
  2. data/lib/quickbooks/faraday/middleware/gzip.rb +72 -0
  3. data/lib/quickbooks/model/access_token_response.rb +29 -0
  4. data/lib/quickbooks/model/account.rb +78 -0
  5. data/lib/quickbooks/model/account_based_expense_line_detail.rb +15 -0
  6. data/lib/quickbooks/model/attachable.rb +33 -0
  7. data/lib/quickbooks/model/attachable_ref.rb +22 -0
  8. data/lib/quickbooks/model/base_model.rb +120 -0
  9. data/lib/quickbooks/model/base_model_json.rb +16 -0
  10. data/lib/quickbooks/model/base_reference.rb +23 -0
  11. data/lib/quickbooks/model/batch_request.rb +45 -0
  12. data/lib/quickbooks/model/batch_response.rb +33 -0
  13. data/lib/quickbooks/model/bill.rb +45 -0
  14. data/lib/quickbooks/model/bill_line_item.rb +42 -0
  15. data/lib/quickbooks/model/bill_payment.rb +40 -0
  16. data/lib/quickbooks/model/bill_payment_check.rb +12 -0
  17. data/lib/quickbooks/model/bill_payment_credit_card.rb +10 -0
  18. data/lib/quickbooks/model/bill_payment_line_item.rb +21 -0
  19. data/lib/quickbooks/model/budget.rb +27 -0
  20. data/lib/quickbooks/model/budget_line_item.rb +15 -0
  21. data/lib/quickbooks/model/change_data_capture.rb +42 -0
  22. data/lib/quickbooks/model/change_model.rb +10 -0
  23. data/lib/quickbooks/model/check_payment.rb +11 -0
  24. data/lib/quickbooks/model/class.rb +31 -0
  25. data/lib/quickbooks/model/company_info.rb +69 -0
  26. data/lib/quickbooks/model/credit_card_payment.rb +17 -0
  27. data/lib/quickbooks/model/credit_memo.rb +59 -0
  28. data/lib/quickbooks/model/credit_memo_change.rb +8 -0
  29. data/lib/quickbooks/model/custom_field.rb +13 -0
  30. data/lib/quickbooks/model/customer.rb +76 -0
  31. data/lib/quickbooks/model/customer_change.rb +8 -0
  32. data/lib/quickbooks/model/definition.rb +46 -0
  33. data/lib/quickbooks/model/delivery_info.rb +8 -0
  34. data/lib/quickbooks/model/department.rb +31 -0
  35. data/lib/quickbooks/model/deposit.rb +44 -0
  36. data/lib/quickbooks/model/deposit_line_detail.rb +17 -0
  37. data/lib/quickbooks/model/deposit_line_item.rb +35 -0
  38. data/lib/quickbooks/model/description_line_detail.rb +7 -0
  39. data/lib/quickbooks/model/discount_line_detail.rb +15 -0
  40. data/lib/quickbooks/model/discount_override.rb +13 -0
  41. data/lib/quickbooks/model/document_numbering.rb +18 -0
  42. data/lib/quickbooks/model/effective_tax_rate.rb +15 -0
  43. data/lib/quickbooks/model/email_address.rb +19 -0
  44. data/lib/quickbooks/model/employee.rb +47 -0
  45. data/lib/quickbooks/model/entity.rb +16 -0
  46. data/lib/quickbooks/model/entity_ref.rb +8 -0
  47. data/lib/quickbooks/model/estimate.rb +76 -0
  48. data/lib/quickbooks/model/exchange_rate.rb +23 -0
  49. data/lib/quickbooks/model/fault.rb +16 -0
  50. data/lib/quickbooks/model/global_tax_calculation.rb +13 -0
  51. data/lib/quickbooks/model/group_line_detail.rb +13 -0
  52. data/lib/quickbooks/model/has_line_items.rb +14 -0
  53. data/lib/quickbooks/model/invoice.rb +107 -0
  54. data/lib/quickbooks/model/invoice_change.rb +9 -0
  55. data/lib/quickbooks/model/invoice_group_line_detail.rb +14 -0
  56. data/lib/quickbooks/model/invoice_line_item.rb +88 -0
  57. data/lib/quickbooks/model/item.rb +87 -0
  58. data/lib/quickbooks/model/item_based_expense_line_detail.rb +20 -0
  59. data/lib/quickbooks/model/item_change.rb +8 -0
  60. data/lib/quickbooks/model/item_group_detail.rb +9 -0
  61. data/lib/quickbooks/model/item_group_line.rb +20 -0
  62. data/lib/quickbooks/model/journal_entry.rb +36 -0
  63. data/lib/quickbooks/model/journal_entry_line_detail.rb +27 -0
  64. data/lib/quickbooks/model/line.rb +95 -0
  65. data/lib/quickbooks/model/line_ex.rb +9 -0
  66. data/lib/quickbooks/model/linked_transaction.rb +9 -0
  67. data/lib/quickbooks/model/markup_info.rb +12 -0
  68. data/lib/quickbooks/model/meta_data.rb +24 -0
  69. data/lib/quickbooks/model/name_value.rb +8 -0
  70. data/lib/quickbooks/model/other_contact_info.rb +8 -0
  71. data/lib/quickbooks/model/payment.rb +43 -0
  72. data/lib/quickbooks/model/payment_change.rb +8 -0
  73. data/lib/quickbooks/model/payment_line_detail.rb +12 -0
  74. data/lib/quickbooks/model/payment_method.rb +25 -0
  75. data/lib/quickbooks/model/physical_address.rb +40 -0
  76. data/lib/quickbooks/model/preferences.rb +49 -0
  77. data/lib/quickbooks/model/purchase.rb +57 -0
  78. data/lib/quickbooks/model/purchase_line_item.rb +44 -0
  79. data/lib/quickbooks/model/purchase_order.rb +50 -0
  80. data/lib/quickbooks/model/purchase_tax_rate_list.rb +11 -0
  81. data/lib/quickbooks/model/refund_receipt.rb +62 -0
  82. data/lib/quickbooks/model/refund_receipt_change.rb +8 -0
  83. data/lib/quickbooks/model/report.rb +52 -0
  84. data/lib/quickbooks/model/sales_item_line_detail.rb +16 -0
  85. data/lib/quickbooks/model/sales_receipt.rb +65 -0
  86. data/lib/quickbooks/model/sales_tax_rate_list.rb +11 -0
  87. data/lib/quickbooks/model/sub_total_line_detail.rb +13 -0
  88. data/lib/quickbooks/model/tax_agency.rb +18 -0
  89. data/lib/quickbooks/model/tax_code.rb +21 -0
  90. data/lib/quickbooks/model/tax_line.rb +15 -0
  91. data/lib/quickbooks/model/tax_line_detail.rb +16 -0
  92. data/lib/quickbooks/model/tax_rate.rb +28 -0
  93. data/lib/quickbooks/model/tax_rate_detail.rb +15 -0
  94. data/lib/quickbooks/model/tax_rate_detail_line.rb +23 -0
  95. data/lib/quickbooks/model/tax_service.rb +52 -0
  96. data/lib/quickbooks/model/telephone_number.rb +13 -0
  97. data/lib/quickbooks/model/term.rb +28 -0
  98. data/lib/quickbooks/model/time_activity.rb +79 -0
  99. data/lib/quickbooks/model/transaction_tax_detail.rb +12 -0
  100. data/lib/quickbooks/model/transfer.rb +21 -0
  101. data/lib/quickbooks/model/upload.rb +35 -0
  102. data/lib/quickbooks/model/validator.rb +10 -0
  103. data/lib/quickbooks/model/vendor.rb +53 -0
  104. data/lib/quickbooks/model/vendor_change.rb +8 -0
  105. data/lib/quickbooks/model/vendor_credit.rb +40 -0
  106. data/lib/quickbooks/model/web_site_address.rb +16 -0
  107. data/lib/quickbooks/service/access_token.rb +38 -0
  108. data/lib/quickbooks/service/account.rb +17 -0
  109. data/lib/quickbooks/service/attachable.rb +12 -0
  110. data/lib/quickbooks/service/base_service.rb +445 -0
  111. data/lib/quickbooks/service/base_service_json.rb +39 -0
  112. data/lib/quickbooks/service/batch.rb +11 -0
  113. data/lib/quickbooks/service/bill.rb +16 -0
  114. data/lib/quickbooks/service/bill_payment.rb +16 -0
  115. data/lib/quickbooks/service/budget.rb +12 -0
  116. data/lib/quickbooks/service/change_data_capture.rb +24 -0
  117. data/lib/quickbooks/service/change_service.rb +28 -0
  118. data/lib/quickbooks/service/class.rb +23 -0
  119. data/lib/quickbooks/service/company_info.rb +12 -0
  120. data/lib/quickbooks/service/credit_memo.rb +16 -0
  121. data/lib/quickbooks/service/credit_memo_change.rb +16 -0
  122. data/lib/quickbooks/service/customer.rb +18 -0
  123. data/lib/quickbooks/service/customer_change.rb +16 -0
  124. data/lib/quickbooks/service/department.rb +23 -0
  125. data/lib/quickbooks/service/deposit.rb +16 -0
  126. data/lib/quickbooks/service/employee.rb +24 -0
  127. data/lib/quickbooks/service/estimate.rb +22 -0
  128. data/lib/quickbooks/service/exchange_rate.rb +25 -0
  129. data/lib/quickbooks/service/invoice.rb +45 -0
  130. data/lib/quickbooks/service/invoice_change.rb +16 -0
  131. data/lib/quickbooks/service/item.rb +32 -0
  132. data/lib/quickbooks/service/item_change.rb +16 -0
  133. data/lib/quickbooks/service/journal_entry.rb +16 -0
  134. data/lib/quickbooks/service/payment.rb +29 -0
  135. data/lib/quickbooks/service/payment_change.rb +16 -0
  136. data/lib/quickbooks/service/payment_method.rb +30 -0
  137. data/lib/quickbooks/service/preferences.rb +12 -0
  138. data/lib/quickbooks/service/purchase.rb +16 -0
  139. data/lib/quickbooks/service/purchase_order.rb +16 -0
  140. data/lib/quickbooks/service/refund_receipt.rb +16 -0
  141. data/lib/quickbooks/service/refund_receipt_change.rb +16 -0
  142. data/lib/quickbooks/service/reports.rb +33 -0
  143. data/lib/quickbooks/service/responses/methods.rb +17 -0
  144. data/lib/quickbooks/service/responses/oauth1_http_response.rb +42 -0
  145. data/lib/quickbooks/service/responses/oauth2_http_response.rb +43 -0
  146. data/lib/quickbooks/service/responses/oauth_http_response.rb +21 -0
  147. data/lib/quickbooks/service/sales_receipt.rb +46 -0
  148. data/lib/quickbooks/service/service_crud.rb +75 -0
  149. data/lib/quickbooks/service/service_crud_json.rb +31 -0
  150. data/lib/quickbooks/service/tax_agency.rb +12 -0
  151. data/lib/quickbooks/service/tax_code.rb +12 -0
  152. data/lib/quickbooks/service/tax_rate.rb +12 -0
  153. data/lib/quickbooks/service/tax_service.rb +11 -0
  154. data/lib/quickbooks/service/term.rb +17 -0
  155. data/lib/quickbooks/service/time_activity.rb +16 -0
  156. data/lib/quickbooks/service/transfer.rb +16 -0
  157. data/lib/quickbooks/service/upload.rb +39 -0
  158. data/lib/quickbooks/service/vendor.rb +24 -0
  159. data/lib/quickbooks/service/vendor_change.rb +16 -0
  160. data/lib/quickbooks/service/vendor_credit.rb +16 -0
  161. data/lib/quickbooks/util/collection.rb +18 -0
  162. data/lib/quickbooks/util/http_encoding_helper.rb +54 -0
  163. data/lib/quickbooks/util/logging.rb +19 -0
  164. data/lib/quickbooks/util/multipart.rb +85 -0
  165. data/lib/quickbooks/util/name_entity.rb +85 -0
  166. data/lib/quickbooks/util/query_builder.rb +35 -0
  167. data/lib/quickbooks/version.rb +5 -0
  168. data/lib/quickbooks-ruby.rb +255 -0
  169. metadata +378 -0
@@ -0,0 +1,28 @@
1
+ module Quickbooks
2
+ module Service
3
+ class ChangeService < BaseService
4
+
5
+ def url_for_query(query = nil, start_position = 1, max_results = 20)
6
+ q = entity
7
+ q = "#{q}&#{query}" if query.present?
8
+
9
+ "#{url_for_base}/cdc?entities=#{q}"
10
+ end
11
+
12
+ def since(timestamp)
13
+ query("changedSince=#{URI.encode_www_form_component(timestamp.iso8601)}")
14
+ end
15
+
16
+ private
17
+
18
+ def entity
19
+ raise NotImplementedError
20
+ end
21
+
22
+ def model
23
+ raise NotImplementedError
24
+ end
25
+
26
+ end
27
+ end
28
+ end
@@ -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
@@ -0,0 +1,12 @@
1
+ module Quickbooks
2
+ module Service
3
+ class CompanyInfo < BaseService
4
+
5
+ private
6
+
7
+ def model
8
+ Quickbooks::Model::CompanyInfo
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ module Quickbooks
2
+ module Service
3
+ class CreditMemo < BaseService
4
+
5
+ def delete(credit_memo)
6
+ delete_by_query_string(credit_memo)
7
+ end
8
+
9
+ private
10
+
11
+ def model
12
+ Quickbooks::Model::CreditMemo
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module Quickbooks
2
+ module Service
3
+ class CreditMemoChange < ChangeService
4
+
5
+ private
6
+
7
+ def entity
8
+ "CreditMemo"
9
+ end
10
+
11
+ def model
12
+ Quickbooks::Model::CreditMemoChange
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ module Quickbooks
2
+ module Service
3
+ class Customer < BaseService
4
+
5
+ def delete(customer)
6
+ customer.active = false
7
+ update(customer, :sparse => true)
8
+ end
9
+
10
+ private
11
+
12
+ def model
13
+ Quickbooks::Model::Customer
14
+ end
15
+
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ module Quickbooks
2
+ module Service
3
+ class CustomerChange < ChangeService
4
+
5
+ private
6
+
7
+ def entity
8
+ "Customer"
9
+ end
10
+
11
+ def model
12
+ Quickbooks::Model::CustomerChange
13
+ end
14
+ end
15
+ end
16
+ 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
@@ -0,0 +1,16 @@
1
+ module Quickbooks
2
+ module Service
3
+ class Deposit < BaseService
4
+
5
+ def delete(payment)
6
+ delete_by_query_string(payment)
7
+ end
8
+
9
+ private
10
+
11
+ def model
12
+ Quickbooks::Model::Deposit
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,24 @@
1
+ module Quickbooks
2
+ module Service
3
+ class Employee < BaseService
4
+
5
+ # override update as sparse is not supported
6
+ def update(entity, options = {})
7
+ raise Quickbooks::InvalidModelException.new('Employee sparse update is not supported by Intuit at this time') if options[:sparse] && options[:sparse] == true
8
+ super(entity, options)
9
+ end
10
+
11
+ def delete(employee)
12
+ employee.active = false
13
+ update(employee, :sparse => false)
14
+ end
15
+
16
+ private
17
+
18
+ def model
19
+ Quickbooks::Model::Employee
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,22 @@
1
+ module Quickbooks
2
+ module Service
3
+ class Estimate < BaseService
4
+
5
+ def delete(estimate)
6
+ delete_by_query_string(estimate)
7
+ end
8
+
9
+ def pdf(estimate)
10
+ url = "#{url_for_resource(model::REST_RESOURCE)}/#{estimate.id}/pdf"
11
+ response = do_http_raw_get(url, {}, {'Accept' => 'application/pdf'})
12
+ response.plain_body
13
+ end
14
+
15
+ private
16
+
17
+ def model
18
+ Quickbooks::Model::Estimate
19
+ end
20
+ end
21
+ end
22
+ 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,45 @@
1
+ module Quickbooks
2
+ module Service
3
+ class Invoice < BaseService
4
+
5
+ def delete(invoice)
6
+ delete_by_query_string(invoice)
7
+ end
8
+
9
+ def send(invoice, email_address=nil)
10
+ query = email_address.present? ? "?sendTo=#{email_address}" : ""
11
+ url = "#{url_for_resource(model::REST_RESOURCE)}/#{invoice.id}/send#{query}"
12
+ response = do_http_post(url, "", {}, { 'Content-Type' => 'application/octet-stream' })
13
+ if response.code.to_i == 200
14
+ model.from_xml(parse_singular_entity_response(model, response.plain_body))
15
+ else
16
+ nil
17
+ end
18
+ end
19
+
20
+ def pdf(invoice)
21
+ url = "#{url_for_resource(model::REST_RESOURCE)}/#{invoice.id}/pdf"
22
+ response = do_http_raw_get(url, {}, {'Accept' => 'application/pdf'})
23
+ response.plain_body
24
+ end
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
+
38
+ private
39
+
40
+ def model
41
+ Quickbooks::Model::Invoice
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,16 @@
1
+ module Quickbooks
2
+ module Service
3
+ class InvoiceChange < ChangeService
4
+
5
+ private
6
+
7
+ def entity
8
+ "Invoice"
9
+ end
10
+
11
+ def model
12
+ Quickbooks::Model::InvoiceChange
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,32 @@
1
+ module Quickbooks
2
+ module Service
3
+ class Item < BaseService
4
+
5
+ def delete(item)
6
+ item.active = false
7
+ update(item, :sparse => true)
8
+ end
9
+
10
+ def url_for_resource(resource)
11
+ url = super(resource)
12
+ "#{url}?minorversion=#{Quickbooks::Model::Item::MINORVERSION}"
13
+ end
14
+
15
+ def fetch_by_id(id, params = {})
16
+ url = "#{url_for_base}/item/#{id}?minorversion=#{Quickbooks::Model::Item::MINORVERSION}"
17
+ fetch_object(model, url, params)
18
+ end
19
+
20
+ def url_for_query(query = nil, start_position = 1, max_results = 20, options = {})
21
+ url = super(query, start_position, max_results, options)
22
+ "#{url}&minorversion=#{Quickbooks::Model::Item::MINORVERSION}"
23
+ end
24
+
25
+ private
26
+
27
+ def model
28
+ Quickbooks::Model::Item
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,16 @@
1
+ module Quickbooks
2
+ module Service
3
+ class ItemChange < ChangeService
4
+
5
+ private
6
+
7
+ def entity
8
+ "Item"
9
+ end
10
+
11
+ def model
12
+ Quickbooks::Model::ItemChange
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module Quickbooks
2
+ module Service
3
+ class JournalEntry < BaseService
4
+
5
+ def delete(entry)
6
+ delete_by_query_string(entry)
7
+ end
8
+
9
+ private
10
+
11
+ def model
12
+ Quickbooks::Model::JournalEntry
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,29 @@
1
+ module Quickbooks
2
+ module Service
3
+ class Payment < BaseService
4
+
5
+ def delete(payment)
6
+ delete_by_query_string(payment)
7
+ end
8
+
9
+ def void(entity, options = {})
10
+ raise Quickbooks::InvalidModelException.new(entity.errors.full_messages.join(',')) unless entity.valid?
11
+ xml = entity.to_xml_ns(options)
12
+ url = "#{url_for_resource(model::REST_RESOURCE)}?include=void"
13
+
14
+ response = do_http_post(url, valid_xml_document(xml), {})
15
+ if response.code.to_i == 200
16
+ model.from_xml(parse_singular_entity_response(model, response.plain_body))
17
+ else
18
+ false
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def model
25
+ Quickbooks::Model::Payment
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,16 @@
1
+ module Quickbooks
2
+ module Service
3
+ class PaymentChange < ChangeService
4
+
5
+ private
6
+
7
+ def entity
8
+ "Payment"
9
+ end
10
+
11
+ def model
12
+ Quickbooks::Model::PaymentChange
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,30 @@
1
+ module Quickbooks
2
+ module Service
3
+ class PaymentMethod < BaseService
4
+
5
+ def fetch_by_name(name)
6
+ self.query(search_name_query(name)).entries.first
7
+ end
8
+
9
+ def search_name_query(name)
10
+ "SELECT * FROM PaymentMethod WHERE Name = '#{name}'"
11
+ end
12
+
13
+ def update(entity, options = {})
14
+ raise Quickbooks::InvalidModelException.new('Payment Method sparse update is not supported by Intuit at this time') if options[:sparse] && options[:sparse] == true
15
+ super(entity, options)
16
+ end
17
+
18
+ def delete(department)
19
+ department.active = false
20
+ update(department, :sparse => false)
21
+ end
22
+
23
+ private
24
+
25
+ def model
26
+ Quickbooks::Model::PaymentMethod
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,12 @@
1
+ module Quickbooks
2
+ module Service
3
+ class Preferences < BaseService
4
+
5
+ private
6
+
7
+ def model
8
+ Quickbooks::Model::Preferences
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ module Quickbooks
2
+ module Service
3
+ class Purchase < BaseService
4
+
5
+ def delete(purchase)
6
+ delete_by_query_string(purchase)
7
+ end
8
+
9
+ private
10
+
11
+ def model
12
+ Quickbooks::Model::Purchase
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module Quickbooks
2
+ module Service
3
+ class PurchaseOrder < BaseService
4
+
5
+ def delete(purchase_order)
6
+ delete_by_query_string(purchase_order)
7
+ end
8
+
9
+ private
10
+
11
+ def model
12
+ Quickbooks::Model::PurchaseOrder
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module Quickbooks
2
+ module Service
3
+ class RefundReceipt < BaseService
4
+
5
+ def delete(refund_receipt)
6
+ delete_by_query_string(refund_receipt)
7
+ end
8
+
9
+ private
10
+
11
+ def model
12
+ Quickbooks::Model::RefundReceipt
13
+ end
14
+ end
15
+ end
16
+ 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
@@ -0,0 +1,33 @@
1
+ # Docs: https://developer.intuit.com/docs/0100_accounting/0400_references/reports
2
+ module Quickbooks
3
+ module Service
4
+ class Reports < BaseService
5
+
6
+ def url_for_query(which_report = 'BalanceSheet', date_macro = 'This Fiscal Year-to-date', options = {})
7
+ if(options == {})
8
+ return "#{url_for_base}/reports/#{which_report}?date_macro=#{URI.encode_www_form_component(date_macro)}"
9
+ else
10
+ options_string = ""
11
+ options.each do |key, value|
12
+ options_string += "#{key}=#{value}&"
13
+ end
14
+ options_string = options_string[0..-2]
15
+ options_string.gsub!(/\s/,"%20")
16
+ return "#{url_for_base}/reports/#{which_report}?#{options_string}"
17
+ end
18
+ end
19
+
20
+ def query(object_query = 'BalanceSheet', date_macro = 'This Fiscal Year-to-date', options = {})
21
+ do_http_get(url_for_query(object_query, date_macro, options))
22
+ model.new(:xml => @last_response_xml)
23
+ end
24
+
25
+ private
26
+
27
+ def model
28
+ Quickbooks::Model::Report
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,17 @@
1
+ module Quickbooks
2
+ module Service
3
+ module Responses
4
+ module Methods
5
+
6
+ def body
7
+ raise "implement me"
8
+ end
9
+
10
+ def code
11
+ raise "implement me"
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,42 @@
1
+ module Quickbooks
2
+ module Service
3
+ module Responses
4
+
5
+ class OAuth1HttpResponse < OAuthHttpResponse
6
+
7
+ attr_accessor :real_response
8
+
9
+ # net/http response
10
+ def initialize(response)
11
+ @real_response = response
12
+ end
13
+
14
+ def version
15
+ 1
16
+ end
17
+
18
+ def code
19
+ @real_response.code.to_i
20
+ end
21
+
22
+ def plain_body
23
+ if @real_response.respond_to?(:plain_body)
24
+ @real_response.plain_body
25
+ else
26
+ nil
27
+ end
28
+ end
29
+
30
+ def headers
31
+ if @real_response.respond_to?(:headers)
32
+ @real_response.headers
33
+ else
34
+ nil
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,43 @@
1
+ module Quickbooks
2
+ module Service
3
+ module Responses
4
+
5
+ class OAuth2HttpResponse
6
+ include Quickbooks::Service::Responses::Methods
7
+
8
+ attr_accessor :real_response
9
+
10
+ # response : Faraday response
11
+ def initialize(response)
12
+ @real_response = response
13
+ end
14
+
15
+ def version
16
+ 2
17
+ end
18
+
19
+ def body
20
+ @real_response.body
21
+ end
22
+
23
+ def plain_body
24
+ body
25
+ end
26
+
27
+ def code
28
+ @real_response.status.to_i
29
+ end
30
+
31
+ def headers
32
+ if @real_response.respond_to?(:headers)
33
+ @real_response.headers
34
+ else
35
+ nil
36
+ end
37
+ end
38
+
39
+ end
40
+
41
+ end
42
+ end
43
+ end