ledger_sync 1.4.4 → 1.5.0

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 (214) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +64 -1
  3. data/.travis.yml +12 -5
  4. data/Gemfile.lock +67 -65
  5. data/bin/quickbooks_online_oauth_server.rb +1 -1
  6. data/documentation/generators/reference/ledger/generator.rb +2 -0
  7. data/documentation/site/guides/contribute/deployment.md +62 -7
  8. data/documentation/site/guides/contribute/index.md +5 -1
  9. data/ledger_sync.gemspec +13 -11
  10. data/lib/ledger_sync.rb +17 -12
  11. data/lib/ledger_sync/deserializer.rb +2 -2
  12. data/lib/ledger_sync/error.rb +2 -2
  13. data/lib/ledger_sync/error/ledger_errors.rb +1 -2
  14. data/lib/ledger_sync/error/operation_errors.rb +2 -2
  15. data/lib/ledger_sync/error/resource_errors.rb +1 -1
  16. data/lib/ledger_sync/ledger_configuration.rb +16 -12
  17. data/lib/ledger_sync/ledger_configuration_store.rb +16 -7
  18. data/lib/ledger_sync/ledgers/client.rb +123 -108
  19. data/lib/ledger_sync/ledgers/mixins/infer_config_mixin.rb +37 -0
  20. data/lib/ledger_sync/ledgers/mixins/infer_resource_class_mixin.rb +5 -4
  21. data/lib/ledger_sync/ledgers/mixins/infer_serializer_mixin.rb +5 -5
  22. data/lib/ledger_sync/ledgers/mixins/serialization_mixin.rb +2 -2
  23. data/lib/ledger_sync/ledgers/netsuite/check_line_item/deserializer.rb +2 -1
  24. data/lib/ledger_sync/ledgers/netsuite/check_line_item/serializer.rb +2 -1
  25. data/lib/ledger_sync/ledgers/netsuite/client.rb +5 -1
  26. data/lib/ledger_sync/ledgers/netsuite/config.rb +3 -1
  27. data/lib/ledger_sync/ledgers/netsuite/deserializer.rb +1 -1
  28. data/lib/ledger_sync/ledgers/netsuite/type/deserializer_customer_type.rb +2 -0
  29. data/lib/ledger_sync/ledgers/netsuite/type/deserializer_subsidiary_type.rb +2 -0
  30. data/lib/ledger_sync/ledgers/netsuite_soap/client.rb +3 -1
  31. data/lib/ledger_sync/ledgers/netsuite_soap/config.rb +3 -1
  32. data/lib/ledger_sync/ledgers/operation.rb +12 -10
  33. data/lib/ledger_sync/ledgers/quickbooks_online/account/deserializer.rb +10 -22
  34. data/lib/ledger_sync/ledgers/quickbooks_online/account/operations/create.rb +8 -8
  35. data/lib/ledger_sync/ledgers/quickbooks_online/account/operations/find.rb +8 -8
  36. data/lib/ledger_sync/ledgers/quickbooks_online/account/operations/update.rb +8 -8
  37. data/lib/ledger_sync/ledgers/quickbooks_online/account/serializer.rb +11 -17
  38. data/lib/ledger_sync/ledgers/quickbooks_online/account_based_expense_line_detail/deserializer.rb +21 -0
  39. data/lib/ledger_sync/ledgers/quickbooks_online/account_based_expense_line_detail/serializer.rb +21 -0
  40. data/lib/ledger_sync/ledgers/quickbooks_online/bill/deserializer.rb +20 -24
  41. data/lib/ledger_sync/ledgers/quickbooks_online/bill/operations/create.rb +9 -9
  42. data/lib/ledger_sync/ledgers/quickbooks_online/bill/operations/find.rb +9 -9
  43. data/lib/ledger_sync/ledgers/quickbooks_online/bill/operations/update.rb +9 -9
  44. data/lib/ledger_sync/ledgers/quickbooks_online/bill/serializer.rb +20 -23
  45. data/lib/ledger_sync/ledgers/quickbooks_online/bill_line/deserializer.rb +22 -0
  46. data/lib/ledger_sync/ledgers/quickbooks_online/bill_line/serializer.rb +26 -0
  47. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment/deserializer.rb +31 -35
  48. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment/operations/create.rb +13 -13
  49. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment/operations/find.rb +13 -13
  50. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment/operations/update.rb +13 -13
  51. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment/serializer.rb +31 -53
  52. data/lib/ledger_sync/ledgers/quickbooks_online/{bill_payment_line_item → bill_payment_line}/deserializer.rb +3 -5
  53. data/lib/ledger_sync/ledgers/quickbooks_online/{bill_payment_line_item → bill_payment_line}/serializer.rb +3 -5
  54. data/lib/ledger_sync/ledgers/quickbooks_online/check_payment/deserializer.rb +17 -0
  55. data/lib/ledger_sync/ledgers/quickbooks_online/check_payment/serializer.rb +17 -0
  56. data/lib/ledger_sync/ledgers/quickbooks_online/client.rb +10 -6
  57. data/lib/ledger_sync/ledgers/quickbooks_online/config.rb +3 -1
  58. data/lib/ledger_sync/ledgers/quickbooks_online/credit_card_payment/deserializer.rb +17 -0
  59. data/lib/ledger_sync/ledgers/quickbooks_online/credit_card_payment/serializer.rb +17 -0
  60. data/lib/ledger_sync/ledgers/quickbooks_online/currency/deserializer.rb +2 -3
  61. data/lib/ledger_sync/ledgers/quickbooks_online/currency/serializer.rb +3 -2
  62. data/lib/ledger_sync/ledgers/quickbooks_online/customer/deserializer.rb +10 -3
  63. data/lib/ledger_sync/ledgers/quickbooks_online/customer/operations/create.rb +4 -4
  64. data/lib/ledger_sync/ledgers/quickbooks_online/customer/operations/find.rb +5 -5
  65. data/lib/ledger_sync/ledgers/quickbooks_online/customer/operations/update.rb +4 -4
  66. data/lib/ledger_sync/ledgers/quickbooks_online/customer/serializer.rb +10 -3
  67. data/lib/ledger_sync/ledgers/quickbooks_online/department/deserializer.rb +7 -13
  68. data/lib/ledger_sync/ledgers/quickbooks_online/department/operations/create.rb +5 -5
  69. data/lib/ledger_sync/ledgers/quickbooks_online/department/operations/find.rb +5 -5
  70. data/lib/ledger_sync/ledgers/quickbooks_online/department/operations/update.rb +5 -5
  71. data/lib/ledger_sync/ledgers/quickbooks_online/department/serializer.rb +9 -17
  72. data/lib/ledger_sync/ledgers/quickbooks_online/deposit/deserializer.rb +16 -19
  73. data/lib/ledger_sync/ledgers/quickbooks_online/deposit/operations/create.rb +7 -7
  74. data/lib/ledger_sync/ledgers/quickbooks_online/deposit/operations/find.rb +7 -7
  75. data/lib/ledger_sync/ledgers/quickbooks_online/deposit/operations/update.rb +7 -7
  76. data/lib/ledger_sync/ledgers/quickbooks_online/deposit/serializer.rb +16 -19
  77. data/lib/ledger_sync/ledgers/quickbooks_online/deposit_line/deserializer.rb +22 -0
  78. data/lib/ledger_sync/ledgers/quickbooks_online/deposit_line/serializer.rb +26 -0
  79. data/lib/ledger_sync/ledgers/quickbooks_online/deposit_line_detail/deserializer.rb +34 -0
  80. data/lib/ledger_sync/ledgers/quickbooks_online/deposit_line_detail/serializer.rb +35 -0
  81. data/lib/ledger_sync/ledgers/quickbooks_online/deserializer.rb +4 -4
  82. data/lib/ledger_sync/ledgers/quickbooks_online/expense/deserializer.rb +20 -25
  83. data/lib/ledger_sync/ledgers/quickbooks_online/expense/operations/create.rb +10 -10
  84. data/lib/ledger_sync/ledgers/quickbooks_online/expense/operations/find.rb +10 -10
  85. data/lib/ledger_sync/ledgers/quickbooks_online/expense/operations/update.rb +10 -10
  86. data/lib/ledger_sync/ledgers/quickbooks_online/expense/serializer.rb +22 -28
  87. data/lib/ledger_sync/ledgers/quickbooks_online/expense_line/deserializer.rb +22 -0
  88. data/lib/ledger_sync/ledgers/quickbooks_online/expense_line/serializer.rb +26 -0
  89. data/lib/ledger_sync/ledgers/quickbooks_online/invoice/deserializer.rb +15 -15
  90. data/lib/ledger_sync/ledgers/quickbooks_online/invoice/operations/create.rb +7 -7
  91. data/lib/ledger_sync/ledgers/quickbooks_online/invoice/operations/find.rb +7 -7
  92. data/lib/ledger_sync/ledgers/quickbooks_online/invoice/operations/update.rb +7 -7
  93. data/lib/ledger_sync/ledgers/quickbooks_online/invoice/serializer.rb +15 -15
  94. data/lib/ledger_sync/ledgers/quickbooks_online/invoice_line/deserializer.rb +21 -0
  95. data/lib/ledger_sync/ledgers/quickbooks_online/invoice_line/serializer.rb +25 -0
  96. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/deserializer.rb +10 -15
  97. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/operations/create.rb +5 -5
  98. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/operations/find.rb +5 -5
  99. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/operations/update.rb +5 -5
  100. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/serializer.rb +10 -15
  101. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry_line/deserializer.rb +20 -0
  102. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry_line/serializer.rb +24 -0
  103. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry_line_detail/deserializer.rb +29 -0
  104. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry_line_detail/serializer.rb +29 -0
  105. data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/deserializer.rb +9 -13
  106. data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/operations/create.rb +5 -5
  107. data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/operations/find.rb +5 -5
  108. data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/operations/update.rb +5 -5
  109. data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/serializer.rb +10 -10
  110. data/lib/ledger_sync/ledgers/quickbooks_online/operation.rb +1 -3
  111. data/lib/ledger_sync/ledgers/quickbooks_online/operation/full_update.rb +1 -3
  112. data/lib/ledger_sync/ledgers/quickbooks_online/payment/deserializer.rb +21 -27
  113. data/lib/ledger_sync/ledgers/quickbooks_online/payment/operations/create.rb +10 -10
  114. data/lib/ledger_sync/ledgers/quickbooks_online/payment/operations/find.rb +10 -10
  115. data/lib/ledger_sync/ledgers/quickbooks_online/payment/operations/update.rb +10 -10
  116. data/lib/ledger_sync/ledgers/quickbooks_online/payment/serializer.rb +21 -27
  117. data/lib/ledger_sync/ledgers/quickbooks_online/{payment_line_item → payment_line}/deserializer.rb +3 -4
  118. data/lib/ledger_sync/ledgers/quickbooks_online/{payment_line_item → payment_line}/serializer.rb +3 -4
  119. data/lib/ledger_sync/ledgers/quickbooks_online/preferences/deserializer.rb +10 -29
  120. data/lib/ledger_sync/ledgers/quickbooks_online/preferences/operations/find.rb +10 -10
  121. data/lib/ledger_sync/ledgers/quickbooks_online/preferences/serializer.rb +10 -29
  122. data/lib/ledger_sync/ledgers/quickbooks_online/primary_email_addr/deserializer.rb +13 -0
  123. data/lib/ledger_sync/ledgers/quickbooks_online/primary_email_addr/serializer.rb +13 -0
  124. data/lib/ledger_sync/ledgers/quickbooks_online/primary_phone/deserializer.rb +13 -0
  125. data/lib/ledger_sync/ledgers/quickbooks_online/primary_phone/serializer.rb +13 -0
  126. data/lib/ledger_sync/ledgers/quickbooks_online/reference/deserializer.rb +13 -0
  127. data/lib/ledger_sync/ledgers/quickbooks_online/reference/serializer.rb +13 -0
  128. data/lib/ledger_sync/ledgers/quickbooks_online/resources/account.rb +12 -8
  129. data/lib/ledger_sync/ledgers/quickbooks_online/resources/account_based_expense_line_detail.rb +16 -0
  130. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill.rb +11 -11
  131. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill_line.rb +19 -0
  132. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill_payment.rb +17 -15
  133. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill_payment_line.rb +19 -0
  134. data/lib/ledger_sync/ledgers/quickbooks_online/resources/check_payment.rb +11 -0
  135. data/lib/ledger_sync/ledgers/quickbooks_online/resources/credit_card_payment.rb +11 -0
  136. data/lib/ledger_sync/ledgers/quickbooks_online/resources/currency.rb +7 -3
  137. data/lib/ledger_sync/ledgers/quickbooks_online/resources/customer.rb +4 -3
  138. data/lib/ledger_sync/ledgers/quickbooks_online/resources/department.rb +9 -5
  139. data/lib/ledger_sync/ledgers/quickbooks_online/resources/deposit.rb +9 -9
  140. data/lib/ledger_sync/ledgers/quickbooks_online/resources/deposit_line.rb +19 -0
  141. data/lib/ledger_sync/ledgers/quickbooks_online/resources/deposit_line_detail.rb +22 -0
  142. data/lib/ledger_sync/ledgers/quickbooks_online/resources/expense.rb +12 -12
  143. data/lib/ledger_sync/ledgers/quickbooks_online/resources/expense_line.rb +19 -0
  144. data/lib/ledger_sync/ledgers/quickbooks_online/resources/invoice.rb +8 -8
  145. data/lib/ledger_sync/ledgers/quickbooks_online/resources/invoice_line.rb +19 -0
  146. data/lib/ledger_sync/ledgers/quickbooks_online/resources/item.rb +1 -1
  147. data/lib/ledger_sync/ledgers/quickbooks_online/resources/journal_entry.rb +7 -7
  148. data/lib/ledger_sync/ledgers/quickbooks_online/resources/journal_entry_line.rb +20 -0
  149. data/lib/ledger_sync/ledgers/quickbooks_online/resources/journal_entry_line_detail.rb +27 -0
  150. data/lib/ledger_sync/ledgers/quickbooks_online/resources/ledger_class.rb +9 -5
  151. data/lib/ledger_sync/ledgers/quickbooks_online/resources/payment.rb +11 -11
  152. data/lib/ledger_sync/ledgers/quickbooks_online/resources/{payment_line_item.rb → payment_line.rb} +4 -4
  153. data/lib/ledger_sync/ledgers/quickbooks_online/resources/preferences.rb +10 -10
  154. data/lib/ledger_sync/ledgers/quickbooks_online/resources/sales_item_line_detail.rb +19 -0
  155. data/lib/ledger_sync/ledgers/quickbooks_online/resources/transfer.rb +7 -7
  156. data/lib/ledger_sync/ledgers/quickbooks_online/resources/vendor.rb +11 -9
  157. data/lib/ledger_sync/ledgers/quickbooks_online/sales_item_line_detail/deserializer.rb +21 -0
  158. data/lib/ledger_sync/ledgers/quickbooks_online/sales_item_line_detail/serializer.rb +21 -0
  159. data/lib/ledger_sync/ledgers/quickbooks_online/serialziation/type/mapping_type.rb +2 -0
  160. data/lib/ledger_sync/ledgers/quickbooks_online/transfer/deserializer.rb +13 -16
  161. data/lib/ledger_sync/ledgers/quickbooks_online/transfer/operations/create.rb +6 -6
  162. data/lib/ledger_sync/ledgers/quickbooks_online/transfer/operations/find.rb +6 -6
  163. data/lib/ledger_sync/ledgers/quickbooks_online/transfer/operations/update.rb +6 -6
  164. data/lib/ledger_sync/ledgers/quickbooks_online/transfer/serializer.rb +13 -16
  165. data/lib/ledger_sync/ledgers/quickbooks_online/util/error_matcher.rb +23 -10
  166. data/lib/ledger_sync/ledgers/quickbooks_online/util/operation_error_parser.rb +1 -1
  167. data/lib/ledger_sync/ledgers/quickbooks_online/vendor/deserializer.rb +12 -10
  168. data/lib/ledger_sync/ledgers/quickbooks_online/vendor/operations/create.rb +7 -7
  169. data/lib/ledger_sync/ledgers/quickbooks_online/vendor/operations/find.rb +7 -7
  170. data/lib/ledger_sync/ledgers/quickbooks_online/vendor/operations/update.rb +7 -7
  171. data/lib/ledger_sync/ledgers/quickbooks_online/vendor/serializer.rb +12 -10
  172. data/lib/ledger_sync/ledgers/quickbooks_online/webhook.rb +1 -1
  173. data/lib/ledger_sync/ledgers/quickbooks_online/webhook_event.rb +6 -6
  174. data/lib/ledger_sync/ledgers/quickbooks_online/webhook_notification.rb +1 -1
  175. data/lib/ledger_sync/ledgers/response.rb +1 -1
  176. data/lib/ledger_sync/ledgers/stripe/client.rb +5 -1
  177. data/lib/ledger_sync/resource.rb +5 -3
  178. data/lib/ledger_sync/resource_adaptor.rb +2 -0
  179. data/lib/ledger_sync/resource_attribute/reference/one.rb +2 -2
  180. data/lib/ledger_sync/resource_attribute_set.rb +4 -3
  181. data/lib/ledger_sync/serialization/type/deserializer_type.rb +2 -0
  182. data/lib/ledger_sync/serialization/type/format_date_type.rb +2 -0
  183. data/lib/ledger_sync/serialization/type/mapping_type.rb +2 -0
  184. data/lib/ledger_sync/serialization/type/parse_date_type.rb +2 -0
  185. data/lib/ledger_sync/serialization/type/serializer_type.rb +2 -0
  186. data/lib/ledger_sync/serializer.rb +2 -2
  187. data/lib/ledger_sync/test/support.rb +71 -0
  188. data/lib/ledger_sync/test/support/factory_bot.rb +157 -0
  189. data/lib/ledger_sync/type/date.rb +10 -0
  190. data/lib/ledger_sync/type/value_mixin.rb +3 -1
  191. data/lib/ledger_sync/util/resource_converter/attribute.rb +1 -1
  192. data/lib/ledger_sync/util/resource_converter/type/resource_converter_type.rb +2 -0
  193. data/lib/ledger_sync/util/signer.rb +2 -2
  194. data/lib/ledger_sync/version.rb +9 -1
  195. metadata +89 -65
  196. data/lib/ledger_sync/ledgers/mixins/infer_client_mixin.rb +0 -28
  197. data/lib/ledger_sync/ledgers/quickbooks_online/bill_line_item/deserializer.rb +0 -25
  198. data/lib/ledger_sync/ledgers/quickbooks_online/bill_line_item/serializer.rb +0 -29
  199. data/lib/ledger_sync/ledgers/quickbooks_online/deposit_line_item/deserializer.rb +0 -38
  200. data/lib/ledger_sync/ledgers/quickbooks_online/deposit_line_item/serializer.rb +0 -41
  201. data/lib/ledger_sync/ledgers/quickbooks_online/expense_line_item/deserializer.rb +0 -25
  202. data/lib/ledger_sync/ledgers/quickbooks_online/expense_line_item/serializer.rb +0 -27
  203. data/lib/ledger_sync/ledgers/quickbooks_online/invoice_sales_line_item/deserializer.rb +0 -25
  204. data/lib/ledger_sync/ledgers/quickbooks_online/invoice_sales_line_item/serializer.rb +0 -29
  205. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry_line_item/deserializer.rb +0 -32
  206. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry_line_item/serializer.rb +0 -36
  207. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill_line_item.rb +0 -21
  208. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill_payment_line_item.rb +0 -19
  209. data/lib/ledger_sync/ledgers/quickbooks_online/resources/deposit_line_item.rb +0 -25
  210. data/lib/ledger_sync/ledgers/quickbooks_online/resources/expense_line_item.rb +0 -21
  211. data/lib/ledger_sync/ledgers/quickbooks_online/resources/invoice_sales_line_item.rb +0 -21
  212. data/lib/ledger_sync/ledgers/quickbooks_online/resources/journal_entry_line_item.rb +0 -29
  213. data/lib/ledger_sync/ledgers/quickbooks_online/resources/subsidiary.rb +0 -12
  214. data/release.sh +0 -26
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../currency/serializer'
4
- require_relative '../department/serializer'
5
- require_relative '../bill_payment_line_item/serializer'
3
+ require_relative '../reference/serializer'
4
+ require_relative '../bill_payment_line/serializer'
5
+ require_relative '../credit_card_payment/serializer'
6
+ require_relative '../check_payment/serializer'
6
7
 
7
8
  module LedgerSync
8
9
  module Ledgers
@@ -11,65 +12,42 @@ module LedgerSync
11
12
  class Serializer < QuickBooksOnline::Serializer
12
13
  id
13
14
 
14
- amount 'TotalAmt',
15
- resource_attribute: :amount
15
+ amount :TotalAmt
16
+ attribute :DocNumber
17
+ attribute :PrivateNote
18
+ attribute :ExchangeRate
19
+ date :TxnDate
16
20
 
17
- references_one :CurrencyRef,
18
- resource_attribute: :currency,
19
- serializer: Currency::Serializer
20
-
21
- attribute 'VendorRef.value',
22
- resource_attribute: 'vendor.ledger_id'
23
-
24
- attribute 'DepartmentRef.value',
25
- resource_attribute: 'department.ledger_id'
26
-
27
- attribute 'APAccountRef.value',
28
- resource_attribute: 'account.ledger_id'
29
-
30
- attribute 'DocNumber',
31
- resource_attribute: :reference_number
32
-
33
- attribute 'PrivateNote',
34
- resource_attribute: :memo
35
-
36
- attribute 'ExchangeRate',
37
- resource_attribute: :exchange_rate
21
+ mapping :PayType,
22
+ hash: BillPayment::PAYMENT_TYPES
38
23
 
39
- date 'TxnDate',
40
- resource_attribute: :transaction_date
24
+ references_one 'CurrencyRef',
25
+ resource_attribute: :Currency,
26
+ serializer: Reference::Serializer
41
27
 
42
- mapping 'PayType',
43
- resource_attribute: :payment_type,
44
- hash: BillPayment::PAYMENT_TYPES
28
+ references_one 'VendorRef',
29
+ resource_attribute: :Vendor,
30
+ serializer: Reference::Serializer
45
31
 
46
- attribute 'CreditCardPayment' do |args = {}|
47
- resource = args.fetch(:resource)
32
+ references_one 'DepartmentRef',
33
+ resource_attribute: :Department,
34
+ serializer: Reference::Serializer
48
35
 
49
- if resource.credit_card_account
50
- {
51
- 'CCAccountRef' => {
52
- 'value' => resource.credit_card_account.ledger_id
53
- }
54
- }
55
- end
56
- end
36
+ references_one 'APAccountRef',
37
+ resource_attribute: :APAccount,
38
+ serializer: Reference::Serializer
57
39
 
58
- attribute 'CheckPayment' do |args = {}|
59
- resource = args.fetch(:resource)
40
+ references_one 'CreditCardPayment',
41
+ resource_attribute: :CreditCardPayment,
42
+ serializer: CreditCardPayment::Serializer
60
43
 
61
- if resource.bank_account
62
- {
63
- 'BankAccountRef' => {
64
- 'value' => resource.bank_account.ledger_id
65
- }
66
- }
67
- end
68
- end
44
+ references_one 'CheckPayment',
45
+ resource_attribute: :CheckPayment,
46
+ serializer: CheckPayment::Serializer
69
47
 
70
48
  references_many 'Line',
71
- resource_attribute: :line_items,
72
- serializer: BillPaymentLineItem::Serializer
49
+ resource_attribute: :Line,
50
+ serializer: BillPaymentLine::Serializer
73
51
  end
74
52
  end
75
53
  end
@@ -3,13 +3,11 @@
3
3
  module LedgerSync
4
4
  module Ledgers
5
5
  module QuickBooksOnline
6
- class BillPaymentLineItem
6
+ class BillPaymentLine
7
7
  class Deserializer < QuickBooksOnline::Deserializer
8
- amount :amount,
9
- hash_attribute: 'Amount'
8
+ amount :Amount
10
9
 
11
- attribute :ledger_transactions,
12
- hash_attribute: 'LinkedTxn',
10
+ attribute :LinkedTxn,
13
11
  type: Serialization::Type::DeserializeTransactionReferenceType.new
14
12
  end
15
13
  end
@@ -3,13 +3,11 @@
3
3
  module LedgerSync
4
4
  module Ledgers
5
5
  module QuickBooksOnline
6
- class BillPaymentLineItem
6
+ class BillPaymentLine
7
7
  class Serializer < QuickBooksOnline::Serializer
8
- amount 'Amount',
9
- resource_attribute: :amount
8
+ amount :Amount
10
9
 
11
- attribute 'LinkedTxn',
12
- resource_attribute: :ledger_transactions,
10
+ attribute :LinkedTxn,
13
11
  type: Serialization::Type::SerializeTransactionReferenceType.new
14
12
  end
15
13
  end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../reference/deserializer'
4
+
5
+ module LedgerSync
6
+ module Ledgers
7
+ module QuickBooksOnline
8
+ class CheckPayment
9
+ class Deserializer < QuickBooksOnline::Deserializer
10
+ references_one :BankAccount,
11
+ hash_attribute: 'BankAccountRef',
12
+ deserializer: Reference::Deserializer
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../reference/serializer'
4
+
5
+ module LedgerSync
6
+ module Ledgers
7
+ module QuickBooksOnline
8
+ class CheckPayment
9
+ class Serializer < QuickBooksOnline::Serializer
10
+ references_one 'BankAccountRef',
11
+ resource_attribute: :BankAccount,
12
+ serializer: Reference::Serializer
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -6,7 +6,9 @@ require_relative 'dashboard_url_helper'
6
6
  module LedgerSync
7
7
  module Ledgers
8
8
  module QuickBooksOnline
9
- class Client < Ledgers::Client
9
+ class Client
10
+ include Ledgers::Client::Mixin
11
+
10
12
  OAUTH_HEADERS = { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }.freeze
11
13
  ROOT_URI = 'https://quickbooks.api.intuit.com'
12
14
  REVOKE_TOKEN_URI = 'https://developer.api.intuit.com/v2/oauth2/tokens/revoke'
@@ -50,6 +52,8 @@ module LedgerSync
50
52
  @root_uri = (test ? ROOT_SANDBOX_URI : ROOT_URI)
51
53
 
52
54
  update_secrets_in_dotenv if update_dotenv
55
+
56
+ super()
53
57
  end
54
58
 
55
59
  def authorization_url(redirect_uri:)
@@ -92,7 +96,7 @@ module LedgerSync
92
96
  )
93
97
  end
94
98
 
95
- def query(limit: 10, offset: 1, query:, resource_class:)
99
+ def query(query:, resource_class:, limit: 10, offset: 1)
96
100
  ledger_resource_type = self.class.ledger_resource_type_for(
97
101
  resource_class: resource_class
98
102
  ).classify
@@ -118,7 +122,7 @@ module LedgerSync
118
122
 
119
123
  def revoke_token!
120
124
  headers = OAUTH_HEADERS.dup.merge(
121
- 'Authorization' => 'Basic ' + Base64.strict_encode64(client_id + ':' + client_secret)
125
+ 'Authorization' => "Basic #{Base64.strict_encode64("#{client_id}:#{client_secret}")}"
122
126
  )
123
127
  LedgerSync::Ledgers::Request.new(
124
128
  body: {
@@ -130,7 +134,7 @@ module LedgerSync
130
134
  ).perform.status == 200
131
135
  end
132
136
 
133
- def set_credentials_from_oauth_code(code:, realm_id: nil, redirect_uri:)
137
+ def set_credentials_from_oauth_code(code:, redirect_uri:, realm_id: nil)
134
138
  oauth_token = oauth_client.get_token(
135
139
  code: code,
136
140
  redirect_uri: redirect_uri
@@ -232,7 +236,7 @@ module LedgerSync
232
236
  @oauth_base_uri ||= "#{root_uri}/v3/company/#{realm_id}"
233
237
  end
234
238
 
235
- def request(body: nil, headers: {}, method:, url:)
239
+ def request(method:, url:, body: nil, headers: {})
236
240
  Request.new(
237
241
  client: self,
238
242
  body: body,
@@ -242,7 +246,7 @@ module LedgerSync
242
246
  ).perform
243
247
  end
244
248
 
245
- def set_credentials_from_oauth_token(realm_id: nil, token:)
249
+ def set_credentials_from_oauth_token(token:, realm_id: nil) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
246
250
  @previous_access_tokens << access_token if access_token.present?
247
251
  @access_token = token.token
248
252
 
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- LedgerSync.register_ledger(:quickbooks_online, module_string: 'QuickBooksOnline') do |config|
3
+ require_relative 'client'
4
+
5
+ LedgerSync.register_ledger(:quickbooks_online, base_module: LedgerSync::Ledgers::QuickBooksOnline) do |config|
4
6
  config.name = 'QuickBooks Online'
5
7
  config.add_alias :qbo
6
8
  config.add_alias :quick_books_online
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../reference/deserializer'
4
+
5
+ module LedgerSync
6
+ module Ledgers
7
+ module QuickBooksOnline
8
+ class CreditCardPayment
9
+ class Deserializer < QuickBooksOnline::Deserializer
10
+ references_one :CCAccount,
11
+ hash_attribute: 'CCAccountRef',
12
+ deserializer: Reference::Deserializer
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../reference/serializer'
4
+
5
+ module LedgerSync
6
+ module Ledgers
7
+ module QuickBooksOnline
8
+ class CreditCardPayment
9
+ class Serializer < QuickBooksOnline::Serializer
10
+ references_one 'CCAccountRef',
11
+ resource_attribute: :CCAccount,
12
+ serializer: Reference::Serializer
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -5,11 +5,10 @@ module LedgerSync
5
5
  module QuickBooksOnline
6
6
  class Currency
7
7
  class Deserializer < QuickBooksOnline::Deserializer
8
- attribute :symbol,
8
+ attribute :Symbol,
9
9
  hash_attribute: :value
10
10
 
11
- attribute :name,
12
- hash_attribute: :name
11
+ attribute :Name
13
12
  end
14
13
  end
15
14
  end
@@ -6,9 +6,10 @@ module LedgerSync
6
6
  class Currency
7
7
  class Serializer < QuickBooksOnline::Serializer
8
8
  attribute :value,
9
- resource_attribute: :symbol
9
+ resource_attribute: :Symbol
10
10
 
11
- attribute :name
11
+ attribute :name,
12
+ resource_attribute: :Name
12
13
  end
13
14
  end
14
15
  end
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../primary_phone/deserializer'
4
+ require_relative '../primary_email_addr/deserializer'
5
+
3
6
  module LedgerSync
4
7
  module Ledgers
5
8
  module QuickBooksOnline
@@ -8,10 +11,14 @@ module LedgerSync
8
11
  id
9
12
 
10
13
  attribute :DisplayName
14
+ attribute :GivenName
15
+ attribute :FamilyName
16
+ attribute :MiddleName
11
17
 
12
- attribute 'PrimaryPhone.FreeFormNumber'
13
-
14
- attribute 'PrimaryEmailAddr.Address'
18
+ references_one :PrimaryPhone,
19
+ deserializer: PrimaryPhone::Deserializer
20
+ references_one :PrimaryEmailAddr,
21
+ deserializer: PrimaryEmailAddr::Deserializer
15
22
  end
16
23
  end
17
24
  end
@@ -10,12 +10,12 @@ module LedgerSync
10
10
  params do
11
11
  required(:external_id).maybe(:string)
12
12
  required(:ledger_id).value(:nil)
13
+ required(:DisplayName).maybe(:string)
14
+ required(:FamilyName).maybe(:string)
15
+ required(:GivenName).maybe(:string)
16
+ required(:MiddleName).maybe(:string)
13
17
  required(:PrimaryEmailAddr).maybe(:hash, Types::Reference)
14
- optional(:DisplayName).filled(:string)
15
- optional(:firstName).maybe(:string)
16
- optional(:lastName).maybe(:string)
17
18
  required(:PrimaryPhone).maybe(:hash, Types::Reference)
18
- required(:subsidiary).maybe(:hash, Types::Reference)
19
19
  end
20
20
  end
21
21
  end
@@ -10,12 +10,12 @@ module LedgerSync
10
10
  params do
11
11
  required(:external_id).maybe(:string)
12
12
  required(:ledger_id).filled(:string)
13
- required(:PrimaryEmailAddr).maybe(:hash, Types::Reference)
14
13
  optional(:DisplayName).maybe(:string)
15
- optional(:firstName).maybe(:string)
16
- optional(:lastName).maybe(:string)
17
- required(:PrimaryPhone).maybe(:hash, Types::Reference)
18
- required(:subsidiary).maybe(:hash, Types::Reference)
14
+ optional(:FamilyName).maybe(:string)
15
+ optional(:GivenName).maybe(:string)
16
+ optional(:MiddleName).maybe(:string)
17
+ optional(:PrimaryEmailAddr).maybe(:hash, Types::Reference)
18
+ optional(:PrimaryPhone).maybe(:hash, Types::Reference)
19
19
  end
20
20
  end
21
21
  end
@@ -10,12 +10,12 @@ module LedgerSync
10
10
  params do
11
11
  required(:external_id).maybe(:string)
12
12
  required(:ledger_id).filled(:string)
13
+ required(:DisplayName).maybe(:string)
14
+ required(:FamilyName).maybe(:string)
15
+ required(:GivenName).maybe(:string)
16
+ required(:MiddleName).maybe(:string)
13
17
  required(:PrimaryEmailAddr).maybe(:hash, Types::Reference)
14
- optional(:DisplayName).filled(:string)
15
- optional(:firstName).maybe(:string)
16
- optional(:lastName).maybe(:string)
17
18
  required(:PrimaryPhone).maybe(:hash, Types::Reference)
18
- required(:subsidiary).maybe(:hash, Types::Reference)
19
19
  end
20
20
  end
21
21
  end
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../primary_phone/serializer'
4
+ require_relative '../primary_email_addr/serializer'
5
+
3
6
  module LedgerSync
4
7
  module Ledgers
5
8
  module QuickBooksOnline
@@ -8,10 +11,14 @@ module LedgerSync
8
11
  id
9
12
 
10
13
  attribute :DisplayName
14
+ attribute :GivenName
15
+ attribute :FamilyName
16
+ attribute :MiddleName
11
17
 
12
- attribute 'PrimaryPhone.FreeFormNumber'
13
-
14
- attribute 'PrimaryEmailAddr.Address'
18
+ references_one :PrimaryPhone,
19
+ serializer: PrimaryPhone::Serializer
20
+ references_one :PrimaryEmailAddr,
21
+ serializer: PrimaryEmailAddr::Serializer
15
22
  end
16
23
  end
17
24
  end
@@ -7,20 +7,14 @@ module LedgerSync
7
7
  class Deserializer < QuickBooksOnline::Deserializer
8
8
  id
9
9
 
10
- attribute :name,
11
- hash_attribute: 'Name'
12
- attribute :active,
13
- hash_attribute: 'Active'
14
- attribute :sub_department,
15
- hash_attribute: 'SubDepartment'
16
- attribute :fully_qualified_name,
17
- hash_attribute: 'FullyQualifiedName'
10
+ attribute :Name
11
+ attribute :Active
12
+ attribute :SubDepartment
13
+ attribute :FullyQualifiedName
18
14
 
19
- attribute(:parent) do |args = {}|
20
- hash = args.fetch(:hash)
21
-
22
- LedgerSync::QuickBooks::Department.new(ledger_id: hash['ParentRef']) if hash['ParentRef'].nil?
23
- end
15
+ references_one :Parent,
16
+ hash_attribute: 'ParentRef',
17
+ deserializer: Reference::Deserializer
24
18
  end
25
19
  end
26
20
  end