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
@@ -4,12 +4,16 @@ module LedgerSync
4
4
  module Ledgers
5
5
  module QuickBooksOnline
6
6
  class LedgerClass < QuickBooksOnline::Resource
7
- attribute :name, type: Type::String
8
- attribute :fully_qualified_name, type: Type::String
9
- attribute :active, type: Type::Boolean
10
- attribute :sub_class, type: Type::Boolean
7
+ attribute :Name, type: Type::String
8
+ attribute :FullyQualifiedName, type: Type::String
9
+ attribute :Active, type: Type::Boolean
10
+ attribute :SubClass, type: Type::Boolean
11
11
 
12
- references_one :parent, to: LedgerClass
12
+ references_one :Parent, to: LedgerClass
13
+
14
+ def name
15
+ self.Name
16
+ end
13
17
  end
14
18
  end
15
19
  end
@@ -3,24 +3,24 @@
3
3
  require_relative 'account'
4
4
  require_relative 'currency'
5
5
  require_relative 'customer'
6
- require_relative 'payment_line_item'
6
+ require_relative 'payment_line'
7
7
 
8
8
  module LedgerSync
9
9
  module Ledgers
10
10
  module QuickBooksOnline
11
11
  class Payment < QuickBooksOnline::Resource
12
- attribute :amount, type: Type::Integer
13
- attribute :memo, type: Type::String
14
- attribute :transaction_date, type: Type::Date
15
- attribute :exchange_rate, type: Type::Float
16
- attribute :reference_number, type: Type::String
12
+ attribute :TotalAmt, type: Type::Integer
13
+ attribute :PrivateNote, type: Type::String
14
+ attribute :TxnDate, type: Type::Date
15
+ attribute :ExchangeRate, type: Type::Float
16
+ attribute :PaymentRefNum, type: Type::String
17
17
 
18
- references_one :customer, to: Customer
19
- references_one :deposit_account, to: Account
20
- references_one :account, to: Account
21
- references_one :currency, to: Currency
18
+ references_one :Customer, to: Customer
19
+ references_one :DepositToAccount, to: Account
20
+ references_one :ARAccount, to: Account
21
+ references_one :Currency, to: Currency
22
22
 
23
- references_many :line_items, to: PaymentLineItem
23
+ references_many :Line, to: PaymentLine
24
24
 
25
25
  def name
26
26
  "Payment: #{amount} #{currency}"
@@ -5,13 +5,13 @@ require_relative 'invoice'
5
5
  module LedgerSync
6
6
  module Ledgers
7
7
  module QuickBooksOnline
8
- class PaymentLineItem < QuickBooksOnline::Resource
9
- attribute :amount, type: Type::Integer
8
+ class PaymentLine < QuickBooksOnline::Resource
9
+ attribute :Amount, type: Type::Integer
10
10
 
11
- references_many :ledger_transactions, to: [Invoice]
11
+ references_many :LinkedTxn, to: [Invoice]
12
12
 
13
13
  def name
14
- amount
14
+ self.Amount
15
15
  end
16
16
  end
17
17
  end
@@ -4,16 +4,16 @@ module LedgerSync
4
4
  module Ledgers
5
5
  module QuickBooksOnline
6
6
  class Preferences < QuickBooksOnline::Resource
7
- attribute :accounting_info, type: Type::Hash
8
- attribute :product_and_services, type: Type::Hash
9
- attribute :sales_forms, type: Type::Hash
10
- attribute :email_messages, type: Type::Hash
11
- attribute :vendor_and_purchases, type: Type::Hash
12
- attribute :time_tracking, type: Type::Hash
13
- attribute :tax, type: Type::Hash
14
- attribute :currency, type: Type::Hash
15
- attribute :report, type: Type::Hash
16
- attribute :other, type: Type::Hash
7
+ attribute :AccountingInfoPrefs, type: Type::Hash
8
+ attribute :ProductAndServicesPrefs, type: Type::Hash
9
+ attribute :SalesFormsPrefs, type: Type::Hash
10
+ attribute :EmailMessagesPrefs, type: Type::Hash
11
+ attribute :VendorAndPurchasesPrefs, type: Type::Hash
12
+ attribute :TimeTrackingPrefs, type: Type::Hash
13
+ attribute :TaxPrefs, type: Type::Hash
14
+ attribute :CurrencyPrefs, type: Type::Hash
15
+ attribute :ReportPrefs, type: Type::Hash
16
+ attribute :OtherPrefs, type: Type::Hash
17
17
 
18
18
  def name
19
19
  'Preference'
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'item'
4
+ require_relative 'ledger_class'
5
+
6
+ module LedgerSync
7
+ module Ledgers
8
+ module QuickBooksOnline
9
+ class SalesItemLineDetail < QuickBooksOnline::Resource
10
+ references_one :Item, to: Item
11
+ references_one :Class, to: LedgerClass
12
+
13
+ def name
14
+ "#{self.Item.try(:name)} #{self.Class.try(:name)}"
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -7,16 +7,16 @@ module LedgerSync
7
7
  module Ledgers
8
8
  module QuickBooksOnline
9
9
  class Transfer < QuickBooksOnline::Resource
10
- attribute :amount, type: Type::Integer
11
- attribute :memo, type: Type::String
12
- attribute :transaction_date, type: Type::Date
10
+ attribute :Amount, type: Type::Integer
11
+ attribute :PrivateNote, type: Type::String
12
+ attribute :TxnDate, type: Type::Date
13
13
 
14
- references_one :from_account, to: Account
15
- references_one :to_account, to: Account
16
- references_one :currency, to: Currency
14
+ references_one :FromAccount, to: Account
15
+ references_one :ToAccount, to: Account
16
+ references_one :Currency, to: Currency
17
17
 
18
18
  def name
19
- "Transaction: #{amount} #{currency}"
19
+ "Transfer: #{self.Amount} #{self.Currency}"
20
20
  end
21
21
  end
22
22
  end
@@ -1,21 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'subsidiary'
3
+ require_relative 'primary_phone'
4
+ require_relative 'primary_email_addr'
4
5
 
5
6
  module LedgerSync
6
7
  module Ledgers
7
8
  module QuickBooksOnline
8
9
  class Vendor < QuickBooksOnline::Resource
9
- attribute :company_name, type: Type::String
10
- attribute :email, type: Type::String
11
- attribute :display_name, type: Type::String
12
- attribute :first_name, type: Type::String
13
- attribute :last_name, type: Type::String
14
- attribute :phone_number, type: Type::String
15
- references_one :subsidiary, to: Subsidiary
10
+ attribute :DisplayName, type: Type::String
11
+ attribute :GivenName, type: Type::String
12
+ attribute :MiddleName, type: Type::String
13
+ attribute :FamilyName, type: Type::String
14
+ attribute :CompanyName, type: Type::String
15
+
16
+ references_one :PrimaryPhone, to: PrimaryPhone
17
+ references_one :PrimaryEmailAddr, to: PrimaryEmailAddr
16
18
 
17
19
  def name
18
- display_name.to_s
20
+ self.DisplayName
19
21
  end
20
22
  end
21
23
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../reference/deserializer'
4
+
5
+ module LedgerSync
6
+ module Ledgers
7
+ module QuickBooksOnline
8
+ class SalesItemLineDetail
9
+ class Deserializer < QuickBooksOnline::Deserializer
10
+ references_one :Item,
11
+ hash_attribute: 'ItemRef',
12
+ deserializer: Reference::Deserializer
13
+
14
+ references_one :Class,
15
+ hash_attribute: 'ClassRef',
16
+ deserializer: Reference::Deserializer
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../reference/serializer'
4
+
5
+ module LedgerSync
6
+ module Ledgers
7
+ module QuickBooksOnline
8
+ class SalesItemLineDetail
9
+ class Serializer < QuickBooksOnline::Serializer
10
+ references_one 'ItemRef',
11
+ resource_attribute: :Item,
12
+ serializer: Reference::Serializer
13
+
14
+ references_one 'ClassRef',
15
+ resource_attribute: :Class,
16
+ serializer: Reference::Serializer
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -9,6 +9,8 @@ module LedgerSync
9
9
 
10
10
  def initialize(args = {})
11
11
  @mapping = args.fetch(:mapping)
12
+
13
+ super()
12
14
  end
13
15
 
14
16
  def cast_value(args = {})
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../currency/deserializer'
3
+ require_relative '../reference/deserializer'
4
4
 
5
5
  module LedgerSync
6
6
  module Ledgers
@@ -9,24 +9,21 @@ module LedgerSync
9
9
  class Deserializer < QuickBooksOnline::Deserializer
10
10
  id
11
11
 
12
- amount :amount,
13
- hash_attribute: 'Amount'
12
+ amount :Amount
13
+ attribute :PrivateNote
14
+ date :TxnDate
14
15
 
15
- attribute :memo,
16
- hash_attribute: 'PrivateNote'
16
+ references_one :FromAccount,
17
+ hash_attribute: 'FromAccountRef',
18
+ deserializer: Reference::Deserializer
17
19
 
18
- attribute 'from_account.ledger_id',
19
- hash_attribute: 'FromAccountRef.value'
20
+ references_one :ToAccount,
21
+ hash_attribute: 'ToAccountRef',
22
+ deserializer: Reference::Deserializer
20
23
 
21
- attribute 'to_account.ledger_id',
22
- hash_attribute: 'ToAccountRef.value'
23
-
24
- date :transaction_date,
25
- hash_attribute: 'TxnDate'
26
-
27
- references_one :currency,
28
- hash_attribute: :CurrencyRef,
29
- deserializer: Currency::Deserializer
24
+ references_one :Currency,
25
+ hash_attribute: 'CurrencyRef',
26
+ deserializer: Reference::Deserializer
30
27
  end
31
28
  end
32
29
  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(:from_account).hash(Types::Reference)
14
- required(:to_account).hash(Types::Reference)
15
- required(:amount).filled(:integer)
16
- required(:currency).filled(:hash, Types::Reference)
17
- required(:memo).filled(:string)
18
- required(:transaction_date).filled(:date?)
13
+ required(:FromAccount).hash(Types::Reference)
14
+ required(:ToAccount).hash(Types::Reference)
15
+ required(:Amount).filled(:integer)
16
+ required(:Currency).filled(:hash, Types::Reference)
17
+ required(:PrivateNote).filled(:string)
18
+ required(:TxnDate).filled(:date?)
19
19
  end
20
20
  end
21
21
  end
@@ -10,12 +10,12 @@ module LedgerSync
10
10
  schema do
11
11
  required(:external_id).maybe(:string)
12
12
  required(:ledger_id).filled(:string)
13
- required(:from_account).hash(Types::Reference)
14
- required(:to_account).hash(Types::Reference)
15
- required(:amount).maybe(:integer)
16
- required(:currency).maybe(:hash, Types::Reference)
17
- required(:memo).maybe(:string)
18
- required(:transaction_date).maybe(:date?)
13
+ optional(:FromAccount).hash(Types::Reference)
14
+ optional(:ToAccount).hash(Types::Reference)
15
+ optional(:Amount).maybe(:integer)
16
+ optional(:Currency).maybe(:hash, Types::Reference)
17
+ optional(:PrivateNote).maybe(:string)
18
+ optional(:TxnDate).maybe(:date?)
19
19
  end
20
20
  end
21
21
  end
@@ -10,12 +10,12 @@ module LedgerSync
10
10
  schema do
11
11
  required(:external_id).maybe(:string)
12
12
  required(:ledger_id).filled(:string)
13
- required(:from_account).hash(Types::Reference)
14
- required(:to_account).hash(Types::Reference)
15
- required(:amount).filled(:integer)
16
- required(:currency).filled(:hash, Types::Reference)
17
- required(:memo).filled(:string)
18
- required(:transaction_date).filled(:date?)
13
+ required(:FromAccount).hash(Types::Reference)
14
+ required(:ToAccount).hash(Types::Reference)
15
+ required(:Amount).filled(:integer)
16
+ required(:Currency).filled(:hash, Types::Reference)
17
+ required(:PrivateNote).filled(:string)
18
+ required(:TxnDate).filled(:date?)
19
19
  end
20
20
  end
21
21
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../currency/serializer'
3
+ require_relative '../reference/serializer'
4
4
 
5
5
  module LedgerSync
6
6
  module Ledgers
@@ -9,24 +9,21 @@ module LedgerSync
9
9
  class Serializer < QuickBooksOnline::Serializer
10
10
  id
11
11
 
12
- amount 'Amount',
13
- resource_attribute: :amount
12
+ amount :Amount
13
+ attribute :PrivateNote
14
+ date :TxnDate
14
15
 
15
- attribute 'PrivateNote',
16
- resource_attribute: :memo
16
+ references_one 'FromAccountRef',
17
+ resource_attribute: :FromAccount,
18
+ serializer: Reference::Serializer
17
19
 
18
- attribute 'FromAccountRef.value',
19
- resource_attribute: 'from_account.ledger_id'
20
+ references_one 'ToAccountRef',
21
+ resource_attribute: :ToAccount,
22
+ serializer: Reference::Serializer
20
23
 
21
- attribute 'ToAccountRef.value',
22
- resource_attribute: 'to_account.ledger_id'
23
-
24
- date 'TxnDate',
25
- resource_attribute: :transaction_date
26
-
27
- references_one :CurrencyRef,
28
- resource_attribute: :currency,
29
- serializer: Currency::Serializer
24
+ references_one 'CurrencyRef',
25
+ resource_attribute: :Currency,
26
+ serializer: Reference::Serializer
30
27
  end
31
28
  end
32
29
  end
@@ -14,7 +14,7 @@ module LedgerSync
14
14
  end
15
15
 
16
16
  def body
17
- error.response.body
17
+ @body ||= error.response.body
18
18
  rescue NoMethodError
19
19
  nil
20
20
  end
@@ -26,30 +26,43 @@ module LedgerSync
26
26
  def error_message
27
27
  return error.message unless body
28
28
 
29
- parsed_body = JSON.parse(body)
30
-
31
- parsed_body.dig('fault', 'error')&.first&.fetch('message') ||
32
- parsed_body.dig('Fault', 'Error')&.first&.fetch('Message') ||
33
- parsed_body.dig('error')
29
+ fault&.fetch('message', nil) ||
30
+ fault&.fetch('Message', nil) ||
31
+ parsed_body['error']
34
32
  end
35
33
 
36
34
  def detail
37
- (body && JSON.parse(body).dig('fault', 'error')&.first&.fetch('detail')) ||
38
- (body && JSON.parse(body).dig('Fault', 'Error')&.first&.fetch('Detail'))
35
+ return if body.blank?
36
+
37
+ fault&.fetch('detail') ||
38
+ fault&.fetch('Detail')
39
39
  end
40
40
 
41
41
  def code
42
- ((body && JSON.parse(body).dig('fault', 'error')&.first&.fetch('code')) ||
43
- (body && JSON.parse(body).dig('Fault', 'Error')&.first&.fetch('code'))).to_i
42
+ return if body.blank?
43
+
44
+ fault&.fetch('code') ||
45
+ fault&.fetch('code').to_i
44
46
  end
45
47
 
46
48
  def match?
47
49
  raise NotImplementedError
48
50
  end
49
51
 
52
+ def parsed_body
53
+ @parsed_body ||= JSON.parse(body)
54
+ end
55
+
50
56
  def output_message
51
57
  raise NotImplementedError
52
58
  end
59
+
60
+ private
61
+
62
+ def fault
63
+ parsed_body.dig('fault', 'error')&.first ||
64
+ parsed_body.dig('Fault', 'Error')&.first
65
+ end
53
66
  end
54
67
  end
55
68
  end