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
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LedgerSync
4
+ module Ledgers
5
+ module Mixins
6
+ module InferConfigMixin
7
+ module ClassMethods
8
+ def inferred_config
9
+ @inferred_config ||= begin
10
+ return if name.nil?
11
+
12
+ name_parts = name.split('::')
13
+ name_parts_length = name_parts.count
14
+
15
+ config = nil
16
+
17
+ name_parts_length.times do |i|
18
+ config = LedgerSync.ledgers.config_from_base_module(
19
+ base_module: Object.const_get(
20
+ name_parts[0..(name_parts_length - i)].join('::')
21
+ )
22
+ )
23
+ break if config.present?
24
+ end
25
+
26
+ config
27
+ end
28
+ end
29
+ end
30
+
31
+ def self.included(base)
32
+ base.extend ClassMethods
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'infer_client_mixin'
3
+ require_relative 'infer_config_mixin'
4
4
 
5
5
  module LedgerSync
6
6
  module Ledgers
@@ -9,14 +9,15 @@ module LedgerSync
9
9
  module ClassMethods
10
10
  def inferred_resource_class
11
11
  @inferred_resource_class ||= begin
12
- parts = name.split('::')
13
- inferred_client_class.base_module.const_get(parts[parts.index('Ledgers') + 2])
12
+ base_module = inferred_config.base_module
13
+
14
+ base_module.const_get(name.split(base_module.name).last.split('::')[1])
14
15
  end
15
16
  end
16
17
  end
17
18
 
18
19
  def self.included(base)
19
- base.include InferClientMixin
20
+ base.include InferConfigMixin
20
21
  base.extend ClassMethods
21
22
  end
22
23
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'infer_client_mixin'
3
+ require_relative 'infer_config_mixin'
4
4
  require_relative 'infer_resource_class_mixin'
5
5
 
6
6
  module LedgerSync
@@ -9,7 +9,7 @@ module LedgerSync
9
9
  module InferSerializerMixin
10
10
  module ClassMethods
11
11
  def inferred_deserializer_class
12
- @inferred_deserializer_class ||= inferred_client_class.base_module.const_get(
12
+ @inferred_deserializer_class ||= inferred_config.base_module.const_get(
13
13
  inferred_deserializer_class_name
14
14
  )
15
15
  end
@@ -19,7 +19,7 @@ module LedgerSync
19
19
  end
20
20
 
21
21
  def inferred_searcher_deserializer_class
22
- @inferred_searcher_deserializer_class ||= inferred_client_class.base_module.const_get(
22
+ @inferred_searcher_deserializer_class ||= inferred_config.base_module.const_get(
23
23
  inferred_searcher_deserializer_class_name
24
24
  )
25
25
  end
@@ -32,7 +32,7 @@ module LedgerSync
32
32
 
33
33
  def inferred_serializer_class
34
34
  @inferred_serializer_class ||= begin
35
- inferred_client_class.base_module.const_get(
35
+ inferred_config.base_module.const_get(
36
36
  inferred_serializer_class_name
37
37
  )
38
38
  end
@@ -44,7 +44,7 @@ module LedgerSync
44
44
  end
45
45
 
46
46
  def self.included(base)
47
- base.include InferClientMixin
47
+ base.include InferConfigMixin
48
48
  base.include InferResourceClassMixin
49
49
  base.extend ClassMethods
50
50
  end
@@ -12,7 +12,7 @@ module LedgerSync
12
12
  def inferred_serialization_class(args = {})
13
13
  type = args.fetch(:type)
14
14
 
15
- inferred_client_class.base_module.const_get(
15
+ inferred_config.base_module.const_get(
16
16
  "#{inferred_resource_class.resource_module_str}::#{type.camelcase}"
17
17
  )
18
18
  end
@@ -23,7 +23,7 @@ module LedgerSync
23
23
  end
24
24
 
25
25
  def self.included(base)
26
- base.include InferClientMixin
26
+ base.include InferConfigMixin
27
27
  base.include InferResourceClassMixin
28
28
  base.extend ClassMethods
29
29
  end
@@ -8,7 +8,8 @@ module LedgerSync
8
8
  attribute :amount
9
9
  attribute :memo
10
10
  references_one :account
11
- references_one :ledger_class
11
+ references_one :ledger_class,
12
+ hash_attribute: 'class'
12
13
  references_one :department
13
14
  end
14
15
  end
@@ -16,7 +16,8 @@ module LedgerSync
16
16
  references_one :department,
17
17
  serializer: Reference::Serializer
18
18
 
19
- references_one :ledger_class,
19
+ references_one :class,
20
+ resource_attribute: :ledger_class,
20
21
  serializer: Reference::Serializer
21
22
  end
22
23
  end
@@ -5,7 +5,9 @@ require 'oauth2'
5
5
  module LedgerSync
6
6
  module Ledgers
7
7
  module NetSuite
8
- class Client < LedgerSync::Ledgers::Client
8
+ class Client
9
+ include Ledgers::Client::Mixin
10
+
9
11
  HEADERS = {
10
12
  # 'Accept' => 'application/schema+json'
11
13
  }.freeze
@@ -34,6 +36,8 @@ module LedgerSync
34
36
  @consumer_secret = consumer_secret
35
37
  @token_id = token_id
36
38
  @token_secret = token_secret
39
+
40
+ super()
37
41
  end
38
42
 
39
43
  def account_id_for_oauth
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- LedgerSync.register_ledger(:netsuite, module_string: 'NetSuite') do |config|
3
+ require_relative 'client'
4
+
5
+ LedgerSync.register_ledger(:netsuite, base_module: LedgerSync::Ledgers::NetSuite) do |config|
4
6
  config.name = 'NetSuite REST'
5
7
  end
@@ -7,7 +7,7 @@ module LedgerSync
7
7
  module Ledgers
8
8
  module NetSuite
9
9
  class Deserializer < LedgerSync::Deserializer
10
- include Mixins::InferClientMixin
10
+ include Mixins::InferConfigMixin
11
11
 
12
12
  def self.id
13
13
  attribute :ledger_id, hash_attribute: :id
@@ -7,6 +7,8 @@ module LedgerSync
7
7
  class DeserializerCustomerType < LedgerSync::Type::Value
8
8
  def initialize(args = {})
9
9
  @customer_class = args.fetch(:customer_class)
10
+
11
+ super()
10
12
  end
11
13
 
12
14
  private
@@ -7,6 +7,8 @@ module LedgerSync
7
7
  class DeserializerSubsidiaryType < LedgerSync::Type::Value
8
8
  def initialize(args = {})
9
9
  @subsidiary_class = args.fetch(:subsidiary_class)
10
+
11
+ super()
10
12
  end
11
13
 
12
14
  private
@@ -5,7 +5,9 @@ require 'oauth2'
5
5
  module LedgerSync
6
6
  module Ledgers
7
7
  module NetSuiteSOAP
8
- class Client < Ledgers::Client
8
+ class Client
9
+ include Ledgers::Client::Mixin
10
+
9
11
  DEFAULT_API_VERSION = '2016_2'
10
12
 
11
13
  attr_reader :account_id,
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- LedgerSync.register_ledger(:netsuite_soap, module_string: 'NetSuiteSOAP') do |config|
3
+ require_relative 'client'
4
+
5
+ LedgerSync.register_ledger(:netsuite_soap, base_module: LedgerSync::Ledgers::NetSuiteSOAP) do |config|
4
6
  config.name = 'NetSuite SOAP'
5
7
  end
@@ -11,6 +11,8 @@ module LedgerSync
11
11
 
12
12
  def inherited(base)
13
13
  base.inferred_resource_class.operations[base.operation_method] = base
14
+
15
+ super
14
16
  end
15
17
 
16
18
  def operation_method
@@ -18,7 +20,7 @@ module LedgerSync
18
20
  end
19
21
 
20
22
  def operations_module
21
- @operations_module ||= Object.const_get(name.split('::Operations::').first + '::Operations')
23
+ @operations_module ||= Object.const_get("#{name.split('::Operations::').first}::Operations")
22
24
  end
23
25
  end
24
26
 
@@ -67,15 +69,15 @@ module LedgerSync
67
69
 
68
70
  @result = begin
69
71
  operate
70
- rescue LedgerSync::Error => e
71
- failure(e)
72
- rescue StandardError => e
73
- parsed_error = client.parse_operation_error(error: e, operation: self)
74
- raise e unless parsed_error
75
-
76
- failure(parsed_error)
77
- ensure
78
- @performed = true
72
+ rescue LedgerSync::Error => e
73
+ failure(e)
74
+ rescue StandardError => e
75
+ parsed_error = client.parse_operation_error(error: e, operation: self)
76
+ raise e unless parsed_error
77
+
78
+ failure(parsed_error)
79
+ ensure
80
+ @performed = true
79
81
  end
80
82
  end
81
83
 
@@ -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,33 +9,21 @@ module LedgerSync
9
9
  class Deserializer < QuickBooksOnline::Deserializer
10
10
  id
11
11
 
12
- attribute :name,
13
- hash_attribute: 'Name'
12
+ attribute :Name
13
+ attribute :AcctNum
14
+ attribute :Description
15
+ attribute :Active
14
16
 
15
- mapping :account_type,
16
- hash_attribute: 'AccountType',
17
+ mapping :AccountType,
17
18
  hash: Account::TYPES.invert
18
-
19
- mapping :account_sub_type,
20
- hash_attribute: 'AccountSubType',
19
+ mapping :AccountSubType,
21
20
  hash: Account::SUB_TYPES.invert
22
-
23
- attribute :number,
24
- hash_attribute: 'AcctNum'
25
-
26
- mapping :classification,
27
- hash_attribute: 'Classification',
21
+ mapping :Classification,
28
22
  hash: Account::CLASSIFICATIONS.invert
29
23
 
30
- attribute :description,
31
- hash_attribute: 'Description'
32
-
33
- attribute :active,
34
- hash_attribute: 'Active'
35
-
36
- references_one :currency,
24
+ references_one :Currency,
37
25
  hash_attribute: :CurrencyRef,
38
- deserializer: Currency::Deserializer
26
+ deserializer: Reference::Deserializer
39
27
  end
40
28
  end
41
29
  end
@@ -9,15 +9,15 @@ module LedgerSync
9
9
  class Contract < LedgerSync::Ledgers::Contract
10
10
  params do
11
11
  required(:external_id).maybe(:string)
12
- required(:account_sub_type).filled(:string)
13
- required(:account_type).filled(:string)
14
- required(:active).maybe(:bool)
15
- required(:classification).filled(:string)
16
- required(:currency).maybe(:hash, Types::Reference)
17
- required(:description).maybe(:string)
18
12
  required(:ledger_id).value(:nil)
19
- required(:name).filled(:string)
20
- required(:number).maybe(:string)
13
+ required(:AccountSubType).filled(:string)
14
+ required(:AccountType).filled(:string)
15
+ required(:AcctNum).maybe(:string)
16
+ required(:Active).maybe(:bool)
17
+ required(:Classification).filled(:string)
18
+ required(:Currency).maybe(:hash, Types::Reference)
19
+ required(:Description).maybe(:string)
20
+ required(:Name).filled(:string)
21
21
  end
22
22
  end
23
23
  end
@@ -10,14 +10,14 @@ module LedgerSync
10
10
  params do
11
11
  required(:external_id).maybe(:string)
12
12
  required(:ledger_id).filled(:string)
13
- required(:name).maybe(:string)
14
- required(:classification).maybe(:string)
15
- required(:account_type).maybe(:string)
16
- required(:account_sub_type).maybe(:string)
17
- required(:number).maybe(:string)
18
- required(:currency).maybe(:hash, Types::Reference)
19
- required(:description).maybe(:string)
20
- required(:active).maybe(:bool)
13
+ required(:AccountType).maybe(:string)
14
+ required(:AccountSubType).maybe(:string)
15
+ required(:AcctNum).maybe(:string)
16
+ required(:Active).maybe(:bool)
17
+ required(:Classification).maybe(:string)
18
+ required(:Currency).maybe(:hash, Types::Reference)
19
+ required(:Description).maybe(:string)
20
+ required(:Name).maybe(:string)
21
21
  end
22
22
  end
23
23
  end
@@ -12,14 +12,14 @@ module LedgerSync
12
12
  params do
13
13
  required(:external_id).maybe(:string)
14
14
  required(:ledger_id).filled(:string)
15
- required(:name).filled(:string)
16
- required(:classification).filled(:string)
17
- required(:account_type).filled(:string)
18
- required(:account_sub_type).filled(:string)
19
- required(:number).maybe(:string)
20
- required(:currency).maybe(:hash, Types::Reference)
21
- required(:description).maybe(:string)
22
- required(:active).maybe(:bool)
15
+ required(:AccountSubType).filled(:string)
16
+ required(:AccountType).filled(:string)
17
+ required(:AcctNum).maybe(:string)
18
+ required(:Active).maybe(:bool)
19
+ required(:Classification).filled(:string)
20
+ required(:Currency).maybe(:hash, Types::Reference)
21
+ required(:Description).maybe(:string)
22
+ required(:Name).filled(:string)
23
23
  end
24
24
  end
25
25
  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,27 +9,21 @@ module LedgerSync
9
9
  class Serializer < QuickBooksOnline::Serializer
10
10
  id
11
11
 
12
- attribute 'Name',
13
- resource_attribute: :name
14
- mapping 'AccountType',
15
- resource_attribute: :account_type,
12
+ attribute :Name
13
+ attribute :AcctNum
14
+ attribute :Description
15
+ attribute :Active
16
+
17
+ mapping :AccountType,
16
18
  hash: Account::TYPES
17
- mapping 'AccountSubType',
18
- resource_attribute: :account_sub_type,
19
+ mapping :AccountSubType,
19
20
  hash: Account::SUB_TYPES
20
- attribute 'AcctNum',
21
- resource_attribute: :number
22
- mapping 'Classification',
23
- resource_attribute: :classification,
21
+ mapping :Classification,
24
22
  hash: Account::CLASSIFICATIONS
25
- attribute 'Description',
26
- resource_attribute: :description
27
- attribute 'Active',
28
- resource_attribute: :active
29
23
 
30
24
  references_one :CurrencyRef,
31
- resource_attribute: :currency,
32
- serializer: Currency::Serializer
25
+ resource_attribute: :Currency,
26
+ serializer: Reference::Serializer
33
27
  end
34
28
  end
35
29
  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 AccountBasedExpenseLineDetail
9
+ class Deserializer < QuickBooksOnline::Deserializer
10
+ references_one :Account,
11
+ hash_attribute: 'AccountRef',
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