ledger_sync 1.3.4 → 1.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (683) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -2
  3. data/.overcommit.yml +30 -0
  4. data/.rubocop.yml +14 -1
  5. data/.travis.yml +12 -2
  6. data/Dockerfile +2 -2
  7. data/Gemfile +2 -0
  8. data/Gemfile.lock +99 -39
  9. data/LICENSE.txt +5 -21
  10. data/README.md +9 -489
  11. data/Rakefile +2 -0
  12. data/bin/console +1 -0
  13. data/bin/quickbooks_online_oauth_server.rb +103 -0
  14. data/docs/.gitignore +4 -0
  15. data/documentation/build.sh +10 -0
  16. data/documentation/generate.rb +32 -0
  17. data/documentation/generators/generator.rb +80 -0
  18. data/documentation/generators/guides/generator.rb +36 -0
  19. data/documentation/generators/reference/generator.rb +76 -0
  20. data/documentation/generators/reference/ledger/generator.rb +74 -0
  21. data/documentation/generators/template.rb +22 -0
  22. data/documentation/helper_methods.rb +17 -0
  23. data/documentation/site/CNAME +1 -0
  24. data/documentation/site/LICENSE.md +40 -0
  25. data/documentation/site/README.md +8 -0
  26. data/documentation/site/_config.yml +119 -0
  27. data/documentation/site/_data/guides_sections.yml +10 -0
  28. data/documentation/site/_data/reference_sections.yml +5 -0
  29. data/documentation/site/_includes/action_link.html +11 -0
  30. data/documentation/site/_includes/alerts/base.html +3 -0
  31. data/documentation/site/_includes/alerts/danger.html +1 -0
  32. data/documentation/site/_includes/alerts/info.html +1 -0
  33. data/documentation/site/_includes/alerts/success.html +1 -0
  34. data/documentation/site/_includes/alerts/warning.html +1 -0
  35. data/documentation/site/_includes/cta_buttons.html +4 -0
  36. data/documentation/site/_includes/example.md +8 -0
  37. data/documentation/site/_includes/footer.html +20 -0
  38. data/documentation/site/_includes/getting_help.md +8 -0
  39. data/documentation/site/_includes/guides_menu.html +29 -0
  40. data/documentation/site/_includes/guides_submenu.html +7 -0
  41. data/documentation/site/_includes/header.html +35 -0
  42. data/documentation/site/_includes/installation_instructions.md +17 -0
  43. data/documentation/site/_includes/ledgers/netsuite_soap_summary.md +1 -0
  44. data/documentation/site/_includes/ledgers/netsuite_summary.md +1 -0
  45. data/documentation/site/_includes/ledgers/netsuite_summary_shared.md +1 -0
  46. data/documentation/site/_includes/ledgers/quickbooks_online_summary.md +1 -0
  47. data/documentation/site/_includes/ledgers/stripe_summary.md +1 -0
  48. data/documentation/site/_includes/reference/netsuite/authentication/_token_based_authentication.md +99 -0
  49. data/documentation/site/_includes/reference/netsuite/authentication/index.md +15 -0
  50. data/documentation/site/_includes/reference/netsuite/authentication/token_based_authentication.md +6 -0
  51. data/documentation/site/_includes/reference/netsuite/index.md +25 -0
  52. data/documentation/site/_includes/reference/netsuite_soap/index.md +11 -0
  53. data/documentation/site/_includes/reference/quickbooks_online/authentication/index.md +55 -0
  54. data/documentation/site/_includes/reference/quickbooks_online/errors/index.md +9 -0
  55. data/documentation/site/_includes/reference/quickbooks_online/index.md +6 -0
  56. data/documentation/site/_includes/reference/quickbooks_online/webhooks/index.md +42 -0
  57. data/documentation/site/_includes/reference/stripe/index.md +6 -0
  58. data/documentation/site/_includes/section_content.html +29 -0
  59. data/documentation/site/_includes/section_cta.html +24 -0
  60. data/documentation/site/_includes/section_grid.html +45 -0
  61. data/documentation/site/_includes/section_guides.html +35 -0
  62. data/documentation/site/_includes/section_hero.html +23 -0
  63. data/documentation/site/_includes/submenu.html +7 -0
  64. data/documentation/site/_layouts/advanced.html +8 -0
  65. data/documentation/site/_layouts/base.html +34 -0
  66. data/documentation/site/_layouts/blog.html +51 -0
  67. data/documentation/site/_layouts/body.html +11 -0
  68. data/documentation/site/_layouts/guides.html +46 -0
  69. data/documentation/site/_layouts/page.html +26 -0
  70. data/documentation/site/_layouts/post.html +52 -0
  71. data/documentation/site/_layouts/reference.html +46 -0
  72. data/documentation/site/_layouts/reference_netsuite.html +46 -0
  73. data/documentation/site/_layouts/reference_netsuite_soap.html +46 -0
  74. data/documentation/site/_layouts/reference_quickbooks_online.html +46 -0
  75. data/documentation/site/_layouts/reference_stripe.html +46 -0
  76. data/documentation/site/_plugins/filters.rb +122 -0
  77. data/documentation/site/_plugins/hooks.rb +9 -0
  78. data/documentation/site/_posts/2020-06-01-introducing-docs.md +17 -0
  79. data/documentation/site/_posts/2020-06-10-netsuite-authentication.md +382 -0
  80. data/documentation/site/_sass/imports/_animations.scss +19 -0
  81. data/documentation/site/_sass/imports/_footer.scss +94 -0
  82. data/documentation/site/_sass/imports/_functions.scss +69 -0
  83. data/documentation/site/_sass/imports/_general.scss +687 -0
  84. data/documentation/site/_sass/imports/_guides.scss +300 -0
  85. data/documentation/site/_sass/imports/_header.scss +358 -0
  86. data/documentation/site/_sass/imports/_icons.scss +90 -0
  87. data/documentation/site/_sass/imports/_post-navigation.scss +67 -0
  88. data/documentation/site/_sass/imports/_posts-pages.scss +165 -0
  89. data/documentation/site/_sass/imports/_prism.scss +174 -0
  90. data/documentation/site/_sass/imports/_reset.scss +210 -0
  91. data/documentation/site/_sass/imports/_sections.scss +370 -0
  92. data/documentation/site/_sass/imports/_structure.scss +44 -0
  93. data/documentation/site/_templates/_layouts/reference_ledger.html.erb +46 -0
  94. data/documentation/site/_templates/guides/ledger.md.erb +9 -0
  95. data/documentation/site/_templates/reference/resources/index.md.erb +9 -0
  96. data/documentation/site/_templates/reference/resources/resource.md.erb +41 -0
  97. data/documentation/site/assets/css/brands.min.css +5 -0
  98. data/documentation/site/assets/css/fontawesome.min.css +5 -0
  99. data/documentation/site/assets/css/main.scss +45 -0
  100. data/documentation/site/assets/css/monokai.css +441 -0
  101. data/documentation/site/assets/js/main.js +214 -0
  102. data/documentation/site/assets/js/plugins.js +22 -0
  103. data/documentation/site/assets/js/prism.js +9 -0
  104. data/documentation/site/assets/webfonts/fa-brands-400.eot +0 -0
  105. data/documentation/site/assets/webfonts/fa-brands-400.svg +3452 -0
  106. data/documentation/site/assets/webfonts/fa-brands-400.ttf +0 -0
  107. data/documentation/site/assets/webfonts/fa-brands-400.woff +0 -0
  108. data/documentation/site/assets/webfonts/fa-brands-400.woff2 +0 -0
  109. data/documentation/site/blog/index.md +6 -0
  110. data/documentation/site/guides/architecture/clients.md +35 -0
  111. data/documentation/site/guides/architecture/index.md +14 -0
  112. data/documentation/site/guides/architecture/operations.md +45 -0
  113. data/documentation/site/guides/architecture/resources.md +40 -0
  114. data/documentation/site/guides/architecture/results.md +6 -0
  115. data/documentation/site/guides/architecture/searchers.md +28 -0
  116. data/documentation/site/guides/architecture/serialization.md +59 -0
  117. data/documentation/site/guides/community/index.md +8 -0
  118. data/documentation/site/guides/contribute/console.md +6 -0
  119. data/documentation/site/guides/contribute/deployment.md +17 -0
  120. data/documentation/site/guides/contribute/documentation.md +37 -0
  121. data/documentation/site/guides/contribute/index.md +18 -0
  122. data/documentation/site/guides/contribute/qa.md +16 -0
  123. data/documentation/site/guides/contribute/testing.md +6 -0
  124. data/documentation/site/guides/customization/custom_resources.md +50 -0
  125. data/documentation/site/guides/customization/custom_serializers.md +47 -0
  126. data/documentation/site/guides/customization/index.md +15 -0
  127. data/documentation/site/guides/customization/resource_converters.md +79 -0
  128. data/documentation/site/guides/getting-started/get-help.md +7 -0
  129. data/documentation/site/guides/getting-started/index.md +8 -0
  130. data/documentation/site/guides/getting-started/installation.md +7 -0
  131. data/documentation/site/guides/getting-started/quick-start.md +123 -0
  132. data/documentation/site/guides/index.md +16 -0
  133. data/documentation/site/guides/ledgers/index.md +12 -0
  134. data/documentation/site/guides/ledgers/netsuite.md +9 -0
  135. data/documentation/site/guides/ledgers/netsuite_soap.md +9 -0
  136. data/documentation/site/guides/ledgers/quickbooks_online.md +9 -0
  137. data/documentation/site/guides/ledgers/stripe.md +9 -0
  138. data/documentation/site/guides/modern-treasury/index.md +14 -0
  139. data/documentation/site/guides/tips_and_more/index.md +76 -0
  140. data/documentation/site/images/1.jpg +0 -0
  141. data/documentation/site/images/10.jpg +0 -0
  142. data/documentation/site/images/2.jpg +0 -0
  143. data/documentation/site/images/3.jpg +0 -0
  144. data/documentation/site/images/4.jpg +0 -0
  145. data/documentation/site/images/5.jpg +0 -0
  146. data/documentation/site/images/6.jpg +0 -0
  147. data/documentation/site/images/7.jpg +0 -0
  148. data/documentation/site/images/8.jpg +0 -0
  149. data/documentation/site/images/9.jpg +0 -0
  150. data/documentation/site/images/logo.svg +8 -0
  151. data/documentation/site/index.md +99 -0
  152. data/documentation/site/overview.md +21 -0
  153. data/documentation/site/reference/index.md +6 -0
  154. data/documentation/site/reference/netsuite/authentication/_token_based_authentication.md +99 -0
  155. data/documentation/site/reference/netsuite/authentication/index.md +15 -0
  156. data/documentation/site/reference/netsuite/authentication/token_based_authentication.md +6 -0
  157. data/documentation/site/reference/netsuite/index.md +25 -0
  158. data/documentation/site/reference/netsuite/resources/account.md +44 -0
  159. data/documentation/site/reference/netsuite/resources/check.md +55 -0
  160. data/documentation/site/reference/netsuite/resources/check_line_item.md +27 -0
  161. data/documentation/site/reference/netsuite/resources/currency.md +49 -0
  162. data/documentation/site/reference/netsuite/resources/customer.md +54 -0
  163. data/documentation/site/reference/netsuite/resources/customer_deposit.md +52 -0
  164. data/documentation/site/reference/netsuite/resources/department.md +53 -0
  165. data/documentation/site/reference/netsuite/resources/deposit.md +29 -0
  166. data/documentation/site/reference/netsuite/resources/deposit_line_item.md +27 -0
  167. data/documentation/site/reference/netsuite/resources/index.md +25 -0
  168. data/documentation/site/reference/netsuite/resources/invoice.md +29 -0
  169. data/documentation/site/reference/netsuite/resources/invoice_line_item.md +26 -0
  170. data/documentation/site/reference/netsuite/resources/item.md +23 -0
  171. data/documentation/site/reference/netsuite/resources/journal_entry.md +52 -0
  172. data/documentation/site/reference/netsuite/resources/journal_entry_line_item.md +28 -0
  173. data/documentation/site/reference/netsuite/resources/ledger_class.md +53 -0
  174. data/documentation/site/reference/netsuite/resources/location.md +49 -0
  175. data/documentation/site/reference/netsuite/resources/resource.md +22 -0
  176. data/documentation/site/reference/netsuite/resources/subsidiary.md +26 -0
  177. data/documentation/site/reference/netsuite/resources/vendor.md +55 -0
  178. data/documentation/site/reference/netsuite_soap/index.md +11 -0
  179. data/documentation/site/reference/netsuite_soap/resources/customer.md +38 -0
  180. data/documentation/site/reference/netsuite_soap/resources/index.md +9 -0
  181. data/documentation/site/reference/netsuite_soap/resources/resource.md +22 -0
  182. data/documentation/site/reference/netsuite_soap/resources/subsidiary.md +36 -0
  183. data/documentation/site/reference/quickbooks_online/authentication/index.md +55 -0
  184. data/documentation/site/reference/quickbooks_online/errors/index.md +9 -0
  185. data/documentation/site/reference/quickbooks_online/index.md +6 -0
  186. data/documentation/site/reference/quickbooks_online/resources/account.md +50 -0
  187. data/documentation/site/reference/quickbooks_online/resources/bill.md +51 -0
  188. data/documentation/site/reference/quickbooks_online/resources/bill_line_item.md +26 -0
  189. data/documentation/site/reference/quickbooks_online/resources/bill_payment.md +53 -0
  190. data/documentation/site/reference/quickbooks_online/resources/bill_payment_line_item.md +24 -0
  191. data/documentation/site/reference/quickbooks_online/resources/currency.md +25 -0
  192. data/documentation/site/reference/quickbooks_online/resources/customer.md +46 -0
  193. data/documentation/site/reference/quickbooks_online/resources/department.md +47 -0
  194. data/documentation/site/reference/quickbooks_online/resources/deposit.md +49 -0
  195. data/documentation/site/reference/quickbooks_online/resources/deposit_line_item.md +27 -0
  196. data/documentation/site/reference/quickbooks_online/resources/expense.md +52 -0
  197. data/documentation/site/reference/quickbooks_online/resources/expense_line_item.md +26 -0
  198. data/documentation/site/reference/quickbooks_online/resources/index.md +33 -0
  199. data/documentation/site/reference/quickbooks_online/resources/invoice.md +47 -0
  200. data/documentation/site/reference/quickbooks_online/resources/invoice_sales_line_item.md +26 -0
  201. data/documentation/site/reference/quickbooks_online/resources/item.md +23 -0
  202. data/documentation/site/reference/quickbooks_online/resources/journal_entry.md +47 -0
  203. data/documentation/site/reference/quickbooks_online/resources/journal_entry_line_item.md +28 -0
  204. data/documentation/site/reference/quickbooks_online/resources/ledger_class.md +47 -0
  205. data/documentation/site/reference/quickbooks_online/resources/payment.md +50 -0
  206. data/documentation/site/reference/quickbooks_online/resources/payment_line_item.md +24 -0
  207. data/documentation/site/reference/quickbooks_online/resources/preferences.md +38 -0
  208. data/documentation/site/reference/quickbooks_online/resources/primary_email_addr.md +23 -0
  209. data/documentation/site/reference/quickbooks_online/resources/primary_phone.md +23 -0
  210. data/documentation/site/reference/quickbooks_online/resources/resource.md +22 -0
  211. data/documentation/site/reference/quickbooks_online/resources/subsidiary.md +24 -0
  212. data/documentation/site/reference/quickbooks_online/resources/transfer.md +46 -0
  213. data/documentation/site/reference/quickbooks_online/resources/vendor.md +49 -0
  214. data/documentation/site/reference/quickbooks_online/webhooks/index.md +42 -0
  215. data/documentation/site/reference/stripe/index.md +6 -0
  216. data/documentation/site/reference/stripe/resources/customer.md +49 -0
  217. data/documentation/site/reference/stripe/resources/index.md +8 -0
  218. data/documentation/site/reference/stripe/resources/resource.md +22 -0
  219. data/documentation/site/style-guide.md +137 -0
  220. data/ledger_sync.gemspec +8 -2
  221. data/lib/ledger_sync.rb +47 -62
  222. data/lib/ledger_sync/concerns/validatable.rb +2 -0
  223. data/lib/ledger_sync/core_ext/resonad.rb +2 -2
  224. data/lib/ledger_sync/deserializer.rb +108 -0
  225. data/lib/ledger_sync/error.rb +15 -0
  226. data/lib/ledger_sync/error/{adaptor_errors.rb → ledger_errors.rb} +13 -13
  227. data/lib/ledger_sync/error/operation_errors.rb +1 -1
  228. data/lib/ledger_sync/error/resource_errors.rb +49 -19
  229. data/lib/ledger_sync/{adaptor_configuration.rb → ledger_configuration.rb} +12 -12
  230. data/lib/ledger_sync/ledger_configuration_store.rb +60 -0
  231. data/lib/ledger_sync/{adaptors/adaptor.rb → ledgers/client.rb} +35 -17
  232. data/lib/ledger_sync/{adaptors → ledgers}/contract.rb +1 -1
  233. data/lib/ledger_sync/ledgers/dashboard_url_helper.rb +23 -0
  234. data/lib/ledger_sync/ledgers/mixins/infer_client_mixin.rb +28 -0
  235. data/lib/ledger_sync/{adaptors → ledgers}/mixins/infer_resource_class_mixin.rb +5 -2
  236. data/lib/ledger_sync/ledgers/mixins/infer_serializer_mixin.rb +54 -0
  237. data/lib/ledger_sync/{adaptors → ledgers}/mixins/infer_validation_contract_mixin.rb +1 -1
  238. data/lib/ledger_sync/{adaptors → ledgers}/mixins/offset_and_limit_pagination_searcher_mixin.rb +1 -1
  239. data/lib/ledger_sync/ledgers/mixins/serialization_mixin.rb +41 -0
  240. data/lib/ledger_sync/ledgers/netsuite/account/deserializer.rb +23 -0
  241. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/account/operations/create.rb +4 -4
  242. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/account/operations/find.rb +4 -4
  243. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/account/searcher.rb +2 -2
  244. data/lib/ledger_sync/ledgers/netsuite/account/searcher_deserializer.rb +29 -0
  245. data/lib/ledger_sync/ledgers/netsuite/account/serializer.rb +21 -0
  246. data/lib/ledger_sync/ledgers/netsuite/check/deserializer.rb +29 -0
  247. data/lib/ledger_sync/ledgers/netsuite/check/operations/create.rb +27 -0
  248. data/lib/ledger_sync/ledgers/netsuite/check/operations/delete.rb +27 -0
  249. data/lib/ledger_sync/ledgers/netsuite/check/operations/find.rb +27 -0
  250. data/lib/ledger_sync/ledgers/netsuite/check/operations/update.rb +27 -0
  251. data/lib/ledger_sync/ledgers/netsuite/check/searcher.rb +15 -0
  252. data/lib/ledger_sync/ledgers/netsuite/check/searcher_deserializer.rb +16 -0
  253. data/lib/ledger_sync/ledgers/netsuite/check/serializer.rb +51 -0
  254. data/lib/ledger_sync/ledgers/netsuite/check_line_item/deserializer.rb +17 -0
  255. data/lib/ledger_sync/ledgers/netsuite/check_line_item/serializer.rb +25 -0
  256. data/lib/ledger_sync/{adaptors/netsuite/adaptor.rb → ledgers/netsuite/client.rb} +47 -16
  257. data/lib/ledger_sync/ledgers/netsuite/config.rb +5 -0
  258. data/lib/ledger_sync/ledgers/netsuite/currency/deserializer.rb +23 -0
  259. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/currency/operations/create.rb +3 -3
  260. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/currency/operations/delete.rb +3 -3
  261. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/currency/operations/find.rb +3 -3
  262. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/currency/operations/update.rb +3 -3
  263. data/lib/ledger_sync/ledgers/netsuite/currency/serializer.rb +21 -0
  264. data/lib/ledger_sync/ledgers/netsuite/customer/deserializer.rb +22 -0
  265. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/customer/operations/create.rb +7 -5
  266. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/customer/operations/delete.rb +7 -5
  267. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/customer/operations/find.rb +7 -5
  268. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/customer/operations/update.rb +7 -5
  269. data/lib/ledger_sync/{adaptors/netsuite/department → ledgers/netsuite/customer}/searcher.rb +2 -2
  270. data/lib/ledger_sync/ledgers/netsuite/customer/searcher_deserializer.rb +18 -0
  271. data/lib/ledger_sync/ledgers/netsuite/customer/serializer.rb +29 -0
  272. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/deserializer.rb +20 -0
  273. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/operations/create.rb +24 -0
  274. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/operations/delete.rb +24 -0
  275. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/operations/find.rb +24 -0
  276. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/operations/update.rb +24 -0
  277. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/searcher.rb +12 -0
  278. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/searcher_deserializer.rb +16 -0
  279. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/serializer.rb +25 -0
  280. data/lib/ledger_sync/ledgers/netsuite/dashboard_url_helper.rb +28 -0
  281. data/lib/ledger_sync/ledgers/netsuite/department/deserializer.rb +15 -0
  282. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/department/operations/create.rb +3 -3
  283. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/department/operations/delete.rb +3 -3
  284. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/department/operations/find.rb +3 -3
  285. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/department/operations/update.rb +3 -3
  286. data/lib/ledger_sync/ledgers/netsuite/department/searcher.rb +12 -0
  287. data/lib/ledger_sync/ledgers/netsuite/department/searcher_deserializer.rb +19 -0
  288. data/lib/ledger_sync/ledgers/netsuite/department/serializer.rb +13 -0
  289. data/lib/ledger_sync/ledgers/netsuite/deserializer.rb +18 -0
  290. data/lib/ledger_sync/ledgers/netsuite/error.rb +19 -0
  291. data/lib/ledger_sync/ledgers/netsuite/journal_entry/deserializer.rb +31 -0
  292. data/lib/ledger_sync/ledgers/netsuite/journal_entry/operations/create.rb +26 -0
  293. data/lib/ledger_sync/ledgers/netsuite/journal_entry/operations/delete.rb +26 -0
  294. data/lib/ledger_sync/ledgers/netsuite/journal_entry/operations/find.rb +26 -0
  295. data/lib/ledger_sync/ledgers/netsuite/journal_entry/operations/update.rb +30 -0
  296. data/lib/ledger_sync/ledgers/netsuite/journal_entry/serializer.rb +36 -0
  297. data/lib/ledger_sync/ledgers/netsuite/journal_entry_line_item/deserializer.rb +20 -0
  298. data/lib/ledger_sync/ledgers/netsuite/journal_entry_line_item/serializer.rb +21 -0
  299. data/lib/ledger_sync/ledgers/netsuite/ledger_class/deserializer.rb +15 -0
  300. data/lib/ledger_sync/ledgers/netsuite/ledger_class/operations/create.rb +25 -0
  301. data/lib/ledger_sync/ledgers/netsuite/ledger_class/operations/delete.rb +25 -0
  302. data/lib/ledger_sync/ledgers/netsuite/ledger_class/operations/find.rb +25 -0
  303. data/lib/ledger_sync/ledgers/netsuite/ledger_class/operations/update.rb +25 -0
  304. data/lib/ledger_sync/ledgers/netsuite/ledger_class/searcher.rb +12 -0
  305. data/lib/ledger_sync/ledgers/netsuite/ledger_class/searcher_deserializer.rb +19 -0
  306. data/lib/ledger_sync/ledgers/netsuite/ledger_class/serializer.rb +13 -0
  307. data/lib/ledger_sync/ledgers/netsuite/location/deserializer.rb +15 -0
  308. data/lib/ledger_sync/ledgers/netsuite/location/operations/create.rb +21 -0
  309. data/lib/ledger_sync/ledgers/netsuite/location/operations/delete.rb +21 -0
  310. data/lib/ledger_sync/ledgers/netsuite/location/operations/find.rb +21 -0
  311. data/lib/ledger_sync/ledgers/netsuite/location/operations/update.rb +21 -0
  312. data/lib/ledger_sync/ledgers/netsuite/location/searcher.rb +12 -0
  313. data/lib/ledger_sync/ledgers/netsuite/location/serializer.rb +13 -0
  314. data/lib/ledger_sync/ledgers/netsuite/operation.rb +40 -0
  315. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/operation/create.rb +6 -13
  316. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/operation/delete.rb +4 -4
  317. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/operation/find.rb +9 -5
  318. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/operation/update.rb +6 -13
  319. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/record/http_method.rb +3 -3
  320. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/record/metadata.rb +17 -13
  321. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/record/parameter.rb +2 -2
  322. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/record/property.rb +2 -2
  323. data/lib/ledger_sync/ledgers/netsuite/reference/serializer.rb +13 -0
  324. data/lib/ledger_sync/ledgers/netsuite/resource.rb +10 -0
  325. data/lib/ledger_sync/ledgers/netsuite/resources/account.rb +43 -0
  326. data/lib/ledger_sync/ledgers/netsuite/resources/check.rb +23 -0
  327. data/lib/ledger_sync/ledgers/netsuite/resources/check_line_item.rb +15 -0
  328. data/lib/ledger_sync/ledgers/netsuite/resources/currency.rb +13 -0
  329. data/lib/ledger_sync/ledgers/netsuite/resources/customer.rb +19 -0
  330. data/lib/ledger_sync/ledgers/netsuite/resources/customer_deposit.rb +15 -0
  331. data/lib/ledger_sync/ledgers/netsuite/resources/department.rb +16 -0
  332. data/lib/ledger_sync/ledgers/netsuite/resources/deposit.rb +28 -0
  333. data/lib/ledger_sync/ledgers/netsuite/resources/deposit_line_item.rb +25 -0
  334. data/lib/ledger_sync/ledgers/netsuite/resources/invoice.rb +28 -0
  335. data/lib/ledger_sync/ledgers/netsuite/resources/invoice_line_item.rb +21 -0
  336. data/lib/ledger_sync/ledgers/netsuite/resources/item.rb +11 -0
  337. data/lib/ledger_sync/ledgers/netsuite/resources/journal_entry.rb +26 -0
  338. data/lib/ledger_sync/ledgers/netsuite/resources/journal_entry_line_item.rb +24 -0
  339. data/lib/ledger_sync/ledgers/netsuite/resources/ledger_class.rb +16 -0
  340. data/lib/ledger_sync/ledgers/netsuite/resources/location.rb +11 -0
  341. data/lib/ledger_sync/ledgers/netsuite/resources/subsidiary.rb +12 -0
  342. data/lib/ledger_sync/ledgers/netsuite/resources/vendor.rb +23 -0
  343. data/lib/ledger_sync/ledgers/netsuite/searcher.rb +66 -0
  344. data/lib/ledger_sync/ledgers/netsuite/serializer.rb +13 -0
  345. data/lib/ledger_sync/ledgers/netsuite/subsidiary/deserializer.rb +17 -0
  346. data/lib/ledger_sync/ledgers/netsuite/subsidiary/searcher.rb +12 -0
  347. data/lib/ledger_sync/ledgers/netsuite/subsidiary/searcher_deserializer.rb +15 -0
  348. data/lib/ledger_sync/ledgers/netsuite/subsidiary/serializer.rb +15 -0
  349. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/token.rb +19 -23
  350. data/lib/ledger_sync/ledgers/netsuite/type/deserializer_active_type.rb +32 -0
  351. data/lib/ledger_sync/ledgers/netsuite/type/deserializer_customer_type.rb +33 -0
  352. data/lib/ledger_sync/ledgers/netsuite/type/deserializer_entity_type.rb +30 -0
  353. data/lib/ledger_sync/ledgers/netsuite/type/deserializer_subsidiary_type.rb +33 -0
  354. data/lib/ledger_sync/ledgers/netsuite/vendor/deserializer.rb +30 -0
  355. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/vendor/operations/create.rb +3 -3
  356. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/vendor/operations/delete.rb +3 -3
  357. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/vendor/operations/find.rb +3 -3
  358. data/lib/ledger_sync/{adaptors → ledgers}/netsuite/vendor/operations/update.rb +3 -3
  359. data/lib/ledger_sync/ledgers/netsuite/vendor/searcher.rb +12 -0
  360. data/lib/ledger_sync/ledgers/netsuite/vendor/searcher_deserializer.rb +21 -0
  361. data/lib/ledger_sync/ledgers/netsuite/vendor/serializer.rb +30 -0
  362. data/lib/ledger_sync/{adaptors/netsuite_soap/adaptor.rb → ledgers/netsuite_soap/client.rb} +17 -23
  363. data/lib/ledger_sync/ledgers/netsuite_soap/config.rb +5 -0
  364. data/lib/ledger_sync/{adaptors → ledgers}/netsuite_soap/customer/operations/create.rb +5 -3
  365. data/lib/ledger_sync/{adaptors → ledgers}/netsuite_soap/customer/operations/find.rb +3 -3
  366. data/lib/ledger_sync/{adaptors → ledgers}/netsuite_soap/operation.rb +5 -5
  367. data/lib/ledger_sync/{adaptors → ledgers}/netsuite_soap/operation/create.rb +5 -5
  368. data/lib/ledger_sync/{adaptors → ledgers}/netsuite_soap/operation/find.rb +2 -2
  369. data/lib/ledger_sync/ledgers/netsuite_soap/resource.rb +10 -0
  370. data/lib/ledger_sync/ledgers/netsuite_soap/resources/customer.rb +29 -0
  371. data/lib/ledger_sync/ledgers/netsuite_soap/resources/subsidiary.rb +12 -0
  372. data/lib/ledger_sync/{adaptors → ledgers}/netsuite_soap/subsidiary/operations/create.rb +3 -3
  373. data/lib/ledger_sync/{adaptors → ledgers}/netsuite_soap/subsidiary/operations/find.rb +3 -3
  374. data/lib/ledger_sync/{adaptors → ledgers}/operation.rb +41 -34
  375. data/lib/ledger_sync/ledgers/quickbooks_online/account/deserializer.rb +43 -0
  376. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/account/operations/create.rb +6 -4
  377. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/account/operations/find.rb +6 -4
  378. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/account/operations/update.rb +4 -4
  379. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/account/searcher.rb +2 -2
  380. data/lib/ledger_sync/ledgers/quickbooks_online/account/serializer.rb +37 -0
  381. data/lib/ledger_sync/ledgers/quickbooks_online/bill/deserializer.rb +45 -0
  382. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/bill/operations/create.rb +5 -3
  383. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/bill/operations/find.rb +5 -3
  384. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/bill/operations/update.rb +5 -3
  385. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/bill/searcher.rb +2 -2
  386. data/lib/ledger_sync/ledgers/quickbooks_online/bill/serializer.rb +44 -0
  387. data/lib/ledger_sync/ledgers/quickbooks_online/bill_line_item/deserializer.rb +25 -0
  388. data/lib/ledger_sync/ledgers/quickbooks_online/bill_line_item/serializer.rb +29 -0
  389. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment/deserializer.rb +59 -0
  390. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/bill_payment/operations/create.rb +3 -3
  391. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/bill_payment/operations/find.rb +3 -3
  392. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/bill_payment/operations/update.rb +3 -3
  393. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment/serializer.rb +77 -0
  394. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment_line_item/deserializer.rb +18 -0
  395. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment_line_item/serializer.rb +18 -0
  396. data/lib/ledger_sync/{adaptors/quickbooks_online/adaptor.rb → ledgers/quickbooks_online/client.rb} +30 -17
  397. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/config.rb +1 -1
  398. data/lib/ledger_sync/ledgers/quickbooks_online/currency/deserializer.rb +17 -0
  399. data/lib/ledger_sync/ledgers/quickbooks_online/currency/serializer.rb +16 -0
  400. data/lib/ledger_sync/ledgers/quickbooks_online/customer/deserializer.rb +19 -0
  401. data/lib/ledger_sync/ledgers/quickbooks_online/customer/operations/create.rb +26 -0
  402. data/lib/ledger_sync/ledgers/quickbooks_online/customer/operations/find.rb +26 -0
  403. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/customer/operations/update.rb +8 -6
  404. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/customer/searcher.rb +5 -3
  405. data/lib/ledger_sync/ledgers/quickbooks_online/customer/serializer.rb +19 -0
  406. data/lib/ledger_sync/ledgers/quickbooks_online/dashboard_url_helper.rb +34 -0
  407. data/lib/ledger_sync/ledgers/quickbooks_online/department/deserializer.rb +28 -0
  408. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/department/operations/create.rb +5 -3
  409. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/department/operations/find.rb +5 -3
  410. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/department/operations/update.rb +3 -3
  411. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/department/searcher.rb +3 -3
  412. data/lib/ledger_sync/ledgers/quickbooks_online/department/serializer.rb +49 -0
  413. data/lib/ledger_sync/ledgers/quickbooks_online/deposit/deserializer.rb +39 -0
  414. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/deposit/operations/create.rb +5 -3
  415. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/deposit/operations/find.rb +5 -3
  416. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/deposit/operations/update.rb +3 -3
  417. data/lib/ledger_sync/{adaptors/quickbooks_online/expense → ledgers/quickbooks_online/deposit}/searcher.rb +2 -2
  418. data/lib/ledger_sync/ledgers/quickbooks_online/deposit/serializer.rb +39 -0
  419. data/lib/ledger_sync/ledgers/quickbooks_online/deposit_line_item/deserializer.rb +38 -0
  420. data/lib/ledger_sync/ledgers/quickbooks_online/deposit_line_item/serializer.rb +41 -0
  421. data/lib/ledger_sync/ledgers/quickbooks_online/deserializer.rb +100 -0
  422. data/lib/ledger_sync/ledgers/quickbooks_online/expense/deserializer.rb +59 -0
  423. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/expense/operations/create.rb +5 -3
  424. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/expense/operations/find.rb +5 -3
  425. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/expense/operations/update.rb +5 -3
  426. data/lib/ledger_sync/{adaptors/quickbooks_online/deposit → ledgers/quickbooks_online/expense}/searcher.rb +3 -2
  427. data/lib/ledger_sync/ledgers/quickbooks_online/expense/serializer.rb +59 -0
  428. data/lib/ledger_sync/ledgers/quickbooks_online/expense_line_item/deserializer.rb +25 -0
  429. data/lib/ledger_sync/ledgers/quickbooks_online/expense_line_item/serializer.rb +27 -0
  430. data/lib/ledger_sync/ledgers/quickbooks_online/invoice/deserializer.rb +35 -0
  431. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/invoice/operations/create.rb +3 -3
  432. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/invoice/operations/find.rb +5 -3
  433. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/invoice/operations/update.rb +5 -3
  434. data/lib/ledger_sync/ledgers/quickbooks_online/invoice/serializer.rb +35 -0
  435. data/lib/ledger_sync/ledgers/quickbooks_online/invoice_sales_line_item/deserializer.rb +25 -0
  436. data/lib/ledger_sync/ledgers/quickbooks_online/invoice_sales_line_item/serializer.rb +29 -0
  437. data/lib/ledger_sync/{adaptors/quickbooks_online/item/ledger_serializer.rb → ledgers/quickbooks_online/item/deserializer.rb} +3 -3
  438. data/lib/ledger_sync/ledgers/quickbooks_online/item/serializer.rb +12 -0
  439. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/deserializer.rb +33 -0
  440. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/journal_entry/operations/create.rb +5 -3
  441. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/journal_entry/operations/find.rb +5 -3
  442. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/journal_entry/operations/update.rb +5 -3
  443. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/journal_entry/searcher.rb +2 -2
  444. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/serializer.rb +33 -0
  445. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry_line_item/deserializer.rb +32 -0
  446. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry_line_item/serializer.rb +36 -0
  447. data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/deserializer.rb +28 -0
  448. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/ledger_class/operations/create.rb +5 -3
  449. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/ledger_class/operations/find.rb +5 -3
  450. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/ledger_class/operations/update.rb +3 -3
  451. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/ledger_class/searcher.rb +3 -3
  452. data/lib/ledger_sync/{adaptors/quickbooks_online/ledger_class/ledger_serializer.rb → ledgers/quickbooks_online/ledger_class/serializer.rb} +8 -9
  453. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/oauth_client.rb +1 -1
  454. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/operation.rb +8 -7
  455. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/operation/create.rb +4 -4
  456. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/operation/find.rb +3 -3
  457. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/operation/full_update.rb +11 -12
  458. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/operation/sparse_update.rb +5 -5
  459. data/lib/ledger_sync/ledgers/quickbooks_online/payment/deserializer.rb +48 -0
  460. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/payment/operations/create.rb +3 -3
  461. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/payment/operations/find.rb +5 -3
  462. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/payment/operations/update.rb +5 -3
  463. data/lib/ledger_sync/ledgers/quickbooks_online/payment/serializer.rb +48 -0
  464. data/lib/ledger_sync/ledgers/quickbooks_online/payment_line_item/deserializer.rb +18 -0
  465. data/lib/ledger_sync/ledgers/quickbooks_online/payment_line_item/serializer.rb +18 -0
  466. data/lib/ledger_sync/ledgers/quickbooks_online/preferences/deserializer.rb +43 -0
  467. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/preferences/operations/find.rb +2 -10
  468. data/lib/ledger_sync/ledgers/quickbooks_online/preferences/serializer.rb +43 -0
  469. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/request.rb +13 -13
  470. data/lib/ledger_sync/ledgers/quickbooks_online/resource.rb +10 -0
  471. data/lib/ledger_sync/ledgers/quickbooks_online/resources/account.rb +355 -0
  472. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill.rb +31 -0
  473. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill_line_item.rb +21 -0
  474. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill_payment.rb +42 -0
  475. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill_payment_line_item.rb +19 -0
  476. data/lib/ledger_sync/ledgers/quickbooks_online/resources/currency.rb +13 -0
  477. data/lib/ledger_sync/ledgers/quickbooks_online/resources/customer.rb +23 -0
  478. data/lib/ledger_sync/ledgers/quickbooks_online/resources/department.rb +16 -0
  479. data/lib/ledger_sync/ledgers/quickbooks_online/resources/deposit.rb +28 -0
  480. data/lib/ledger_sync/ledgers/quickbooks_online/resources/deposit_line_item.rb +25 -0
  481. data/lib/ledger_sync/ledgers/quickbooks_online/resources/expense.rb +40 -0
  482. data/lib/ledger_sync/ledgers/quickbooks_online/resources/expense_line_item.rb +21 -0
  483. data/lib/ledger_sync/ledgers/quickbooks_online/resources/invoice.rb +28 -0
  484. data/lib/ledger_sync/ledgers/quickbooks_online/resources/invoice_sales_line_item.rb +21 -0
  485. data/lib/ledger_sync/ledgers/quickbooks_online/resources/item.rb +11 -0
  486. data/lib/ledger_sync/ledgers/quickbooks_online/resources/journal_entry.rb +24 -0
  487. data/lib/ledger_sync/ledgers/quickbooks_online/resources/journal_entry_line_item.rb +29 -0
  488. data/lib/ledger_sync/ledgers/quickbooks_online/resources/ledger_class.rb +16 -0
  489. data/lib/ledger_sync/ledgers/quickbooks_online/resources/payment.rb +31 -0
  490. data/lib/ledger_sync/ledgers/quickbooks_online/resources/payment_line_item.rb +19 -0
  491. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/resources/preferences.rb +2 -2
  492. data/lib/ledger_sync/ledgers/quickbooks_online/resources/primary_email_addr.rb +11 -0
  493. data/lib/ledger_sync/ledgers/quickbooks_online/resources/primary_phone.rb +11 -0
  494. data/lib/ledger_sync/ledgers/quickbooks_online/resources/subsidiary.rb +12 -0
  495. data/lib/ledger_sync/ledgers/quickbooks_online/resources/transfer.rb +24 -0
  496. data/lib/ledger_sync/ledgers/quickbooks_online/resources/vendor.rb +23 -0
  497. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/searcher.rb +6 -7
  498. data/lib/ledger_sync/ledgers/quickbooks_online/serialization/type/amount_float_to_integer_type.rb +21 -0
  499. data/lib/ledger_sync/ledgers/quickbooks_online/serialization/type/deserialize_transaction_reference_type.rb +30 -0
  500. data/lib/ledger_sync/ledgers/quickbooks_online/serialization/type/integer_to_amount_float_type.rb +21 -0
  501. data/lib/ledger_sync/ledgers/quickbooks_online/serialization/type/serialize_transaction_reference_type.rb +30 -0
  502. data/lib/ledger_sync/ledgers/quickbooks_online/serializer.rb +71 -0
  503. data/lib/ledger_sync/ledgers/quickbooks_online/serialziation/type/mapping_type.rb +25 -0
  504. data/lib/ledger_sync/ledgers/quickbooks_online/transfer/deserializer.rb +34 -0
  505. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/transfer/operations/create.rb +5 -3
  506. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/transfer/operations/find.rb +5 -3
  507. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/transfer/operations/update.rb +3 -3
  508. data/lib/ledger_sync/ledgers/quickbooks_online/transfer/serializer.rb +34 -0
  509. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/util/error_matcher.rb +11 -8
  510. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/util/error_parser.rb +3 -3
  511. data/lib/ledger_sync/{adaptors/quickbooks_online/util/adaptor_error_parser.rb → ledgers/quickbooks_online/util/ledger_error_parser.rb} +19 -19
  512. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/util/operation_error_parser.rb +9 -9
  513. data/lib/ledger_sync/ledgers/quickbooks_online/vendor/deserializer.rb +25 -0
  514. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/vendor/operations/create.rb +3 -3
  515. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/vendor/operations/find.rb +4 -4
  516. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/vendor/operations/update.rb +3 -3
  517. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/vendor/searcher.rb +2 -2
  518. data/lib/ledger_sync/{adaptors/quickbooks_online/vendor/ledger_serializer.rb → ledgers/quickbooks_online/vendor/serializer.rb} +7 -7
  519. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/webhook.rb +1 -1
  520. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/webhook_event.rb +12 -10
  521. data/lib/ledger_sync/{adaptors → ledgers}/quickbooks_online/webhook_notification.rb +5 -4
  522. data/lib/ledger_sync/{adaptors → ledgers}/request.rb +11 -7
  523. data/lib/ledger_sync/{adaptors → ledgers}/response.rb +4 -2
  524. data/lib/ledger_sync/{adaptors → ledgers}/searcher.rb +11 -10
  525. data/lib/ledger_sync/ledgers/stripe/client.rb +37 -0
  526. data/lib/ledger_sync/{adaptors → ledgers}/stripe/config.rb +1 -1
  527. data/lib/ledger_sync/{adaptors → ledgers}/stripe/customer/operations/create.rb +3 -3
  528. data/lib/ledger_sync/{adaptors → ledgers}/stripe/customer/operations/delete.rb +3 -3
  529. data/lib/ledger_sync/{adaptors → ledgers}/stripe/customer/operations/find.rb +3 -3
  530. data/lib/ledger_sync/{adaptors → ledgers}/stripe/customer/operations/update.rb +3 -3
  531. data/lib/ledger_sync/ledgers/stripe/dashboard_url_helper.rb +21 -0
  532. data/lib/ledger_sync/{adaptors → ledgers}/stripe/operation.rb +5 -5
  533. data/lib/ledger_sync/{adaptors → ledgers}/stripe/operation/create.rb +2 -4
  534. data/lib/ledger_sync/{adaptors → ledgers}/stripe/operation/delete.rb +2 -4
  535. data/lib/ledger_sync/{adaptors → ledgers}/stripe/operation/find.rb +2 -2
  536. data/lib/ledger_sync/{adaptors → ledgers}/stripe/operation/update.rb +2 -4
  537. data/lib/ledger_sync/ledgers/stripe/resource.rb +10 -0
  538. data/lib/ledger_sync/ledgers/stripe/resources/customer.rb +13 -0
  539. data/lib/ledger_sync/operation.rb +23 -0
  540. data/lib/ledger_sync/resource.rb +24 -10
  541. data/lib/ledger_sync/resource_adaptor.rb +52 -0
  542. data/lib/ledger_sync/resource_attribute.rb +31 -9
  543. data/lib/ledger_sync/resource_attribute/dirty_mixin.rb +5 -1
  544. data/lib/ledger_sync/resource_attribute/mixin.rb +17 -27
  545. data/lib/ledger_sync/resource_attribute/reference/many.rb +21 -23
  546. data/lib/ledger_sync/resource_attribute/reference/one.rb +16 -5
  547. data/lib/ledger_sync/resource_attribute_set.rb +4 -8
  548. data/lib/ledger_sync/result.rb +9 -14
  549. data/lib/ledger_sync/serialization/attribute.rb +41 -0
  550. data/lib/ledger_sync/serialization/attribute_set_mixin.rb +27 -0
  551. data/lib/ledger_sync/serialization/deserializer_attribute.rb +82 -0
  552. data/lib/ledger_sync/serialization/deserializer_attribute_set.rb +22 -0
  553. data/lib/ledger_sync/serialization/mixin.rb +70 -0
  554. data/lib/ledger_sync/serialization/serializer_attribute.rb +64 -0
  555. data/lib/ledger_sync/serialization/serializer_attribute_set.rb +22 -0
  556. data/lib/ledger_sync/serialization/type/deserializer_references_many_type.rb +26 -0
  557. data/lib/ledger_sync/serialization/type/deserializer_references_one_type.rb +12 -0
  558. data/lib/ledger_sync/serialization/type/deserializer_type.rb +29 -0
  559. data/lib/ledger_sync/serialization/type/format_date_type.rb +23 -0
  560. data/lib/ledger_sync/serialization/type/mapping_type.rb +23 -0
  561. data/lib/ledger_sync/serialization/type/parse_date_type.rb +23 -0
  562. data/lib/ledger_sync/serialization/type/serializer_references_many_type.rb +21 -0
  563. data/lib/ledger_sync/serialization/type/serializer_references_one_type.rb +12 -0
  564. data/lib/ledger_sync/serialization/type/serializer_type.rb +23 -0
  565. data/lib/ledger_sync/serializer.rb +97 -0
  566. data/lib/ledger_sync/type/boolean.rb +2 -0
  567. data/lib/ledger_sync/type/date.rb +3 -1
  568. data/lib/ledger_sync/type/float.rb +2 -0
  569. data/lib/ledger_sync/type/hash.rb +6 -2
  570. data/lib/ledger_sync/type/id.rb +8 -2
  571. data/lib/ledger_sync/type/integer.rb +2 -0
  572. data/lib/ledger_sync/type/reference_many.rb +15 -5
  573. data/lib/ledger_sync/type/reference_one.rb +8 -17
  574. data/lib/ledger_sync/type/string.rb +2 -0
  575. data/lib/ledger_sync/type/string_from_set.rb +43 -0
  576. data/lib/ledger_sync/type/value_mixin.rb +37 -7
  577. data/lib/ledger_sync/util/hash_helpers.rb +12 -2
  578. data/lib/ledger_sync/util/mixins/delegate_iterable_methods_mixin.rb +44 -0
  579. data/lib/ledger_sync/util/mixins/dupable_mixin.rb +13 -0
  580. data/lib/ledger_sync/util/mixins/resource_registerable_mixin.rb +29 -0
  581. data/lib/ledger_sync/util/read_only_object.rb +1 -1
  582. data/lib/ledger_sync/util/resource_converter.rb +117 -0
  583. data/lib/ledger_sync/util/resource_converter/attribute.rb +133 -0
  584. data/lib/ledger_sync/util/resource_converter/attribute_set.rb +43 -0
  585. data/lib/ledger_sync/util/resource_converter/type/references_many_type.rb +27 -0
  586. data/lib/ledger_sync/util/resource_converter/type/references_one_type.rb +14 -0
  587. data/lib/ledger_sync/util/resource_converter/type/resource_converter_type.rb +26 -0
  588. data/lib/ledger_sync/util/resources_builder.rb +24 -16
  589. data/lib/ledger_sync/util/string_helpers.rb +3 -3
  590. data/lib/ledger_sync/util/url_helpers.rb +38 -0
  591. data/lib/ledger_sync/util/validator.rb +3 -1
  592. data/lib/ledger_sync/version.rb +3 -1
  593. data/licenses/BSL.txt +97 -0
  594. data/licenses/documentation_site.txt +7 -0
  595. metadata +626 -220
  596. data/_config.yml +0 -1
  597. data/lib/ledger_sync/adaptor_configuration_store.rb +0 -56
  598. data/lib/ledger_sync/adaptors/ledger_serializer.rb +0 -143
  599. data/lib/ledger_sync/adaptors/ledger_serializer_attribute.rb +0 -178
  600. data/lib/ledger_sync/adaptors/ledger_serializer_attribute_set.rb +0 -58
  601. data/lib/ledger_sync/adaptors/ledger_serializer_type/mapping_type.rb +0 -41
  602. data/lib/ledger_sync/adaptors/ledger_serializer_type/references_many_type.rb +0 -24
  603. data/lib/ledger_sync/adaptors/ledger_serializer_type/references_one_type.rb +0 -22
  604. data/lib/ledger_sync/adaptors/ledger_serializer_type/value_type.rb +0 -17
  605. data/lib/ledger_sync/adaptors/mixins/infer_adaptor_class_mixin.rb +0 -24
  606. data/lib/ledger_sync/adaptors/mixins/infer_ledger_serializer_mixin.rb +0 -45
  607. data/lib/ledger_sync/adaptors/netsuite/account/ledger_deserializer.rb +0 -24
  608. data/lib/ledger_sync/adaptors/netsuite/account/ledger_serializer.rb +0 -22
  609. data/lib/ledger_sync/adaptors/netsuite/config.rb +0 -5
  610. data/lib/ledger_sync/adaptors/netsuite/currency/deledger_serializer.rb +0 -28
  611. data/lib/ledger_sync/adaptors/netsuite/currency/ledger_serializer.rb +0 -25
  612. data/lib/ledger_sync/adaptors/netsuite/customer/ledger_deserializer.rb +0 -27
  613. data/lib/ledger_sync/adaptors/netsuite/customer/ledger_serializer.rb +0 -38
  614. data/lib/ledger_sync/adaptors/netsuite/department/ledger_serializer.rb +0 -17
  615. data/lib/ledger_sync/adaptors/netsuite/ledger_serializer.rb +0 -30
  616. data/lib/ledger_sync/adaptors/netsuite/ledger_serializer_type/reference_type.rb +0 -24
  617. data/lib/ledger_sync/adaptors/netsuite/ledger_serializer_type/subsidiary_type.rb +0 -22
  618. data/lib/ledger_sync/adaptors/netsuite/operation.rb +0 -19
  619. data/lib/ledger_sync/adaptors/netsuite/searcher.rb +0 -36
  620. data/lib/ledger_sync/adaptors/netsuite/vendor/ledger_deserializer.rb +0 -32
  621. data/lib/ledger_sync/adaptors/netsuite/vendor/ledger_serializer.rb +0 -35
  622. data/lib/ledger_sync/adaptors/netsuite_soap/config.rb +0 -5
  623. data/lib/ledger_sync/adaptors/netsuite_soap/customer/ledger_serializer.rb +0 -13
  624. data/lib/ledger_sync/adaptors/netsuite_soap/ledger_serializer.rb +0 -25
  625. data/lib/ledger_sync/adaptors/quickbooks_online/account/ledger_serializer.rb +0 -37
  626. data/lib/ledger_sync/adaptors/quickbooks_online/bill/ledger_serializer.rb +0 -46
  627. data/lib/ledger_sync/adaptors/quickbooks_online/bill_line_item/ledger_serializer.rb +0 -30
  628. data/lib/ledger_sync/adaptors/quickbooks_online/bill_payment/ledger_serializer.rb +0 -76
  629. data/lib/ledger_sync/adaptors/quickbooks_online/bill_payment_line_item/ledger_serializer.rb +0 -19
  630. data/lib/ledger_sync/adaptors/quickbooks_online/currency/ledger_serializer.rb +0 -17
  631. data/lib/ledger_sync/adaptors/quickbooks_online/customer/ledger_serializer.rb +0 -23
  632. data/lib/ledger_sync/adaptors/quickbooks_online/customer/operations/create.rb +0 -22
  633. data/lib/ledger_sync/adaptors/quickbooks_online/customer/operations/find.rb +0 -22
  634. data/lib/ledger_sync/adaptors/quickbooks_online/dashboard_url_helper.rb +0 -59
  635. data/lib/ledger_sync/adaptors/quickbooks_online/department/ledger_serializer.rb +0 -38
  636. data/lib/ledger_sync/adaptors/quickbooks_online/deposit/ledger_serializer.rb +0 -40
  637. data/lib/ledger_sync/adaptors/quickbooks_online/deposit_line_item/ledger_serializer.rb +0 -34
  638. data/lib/ledger_sync/adaptors/quickbooks_online/expense/ledger_serializer.rb +0 -52
  639. data/lib/ledger_sync/adaptors/quickbooks_online/expense_line_item/ledger_serializer.rb +0 -30
  640. data/lib/ledger_sync/adaptors/quickbooks_online/invoice/ledger_serializer.rb +0 -36
  641. data/lib/ledger_sync/adaptors/quickbooks_online/invoice_sales_line_item/ledger_serializer.rb +0 -30
  642. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/ledger_serializer.rb +0 -34
  643. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry_line_item/ledger_serializer.rb +0 -37
  644. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer.rb +0 -131
  645. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/account_sub_type.rb +0 -305
  646. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/account_type.rb +0 -51
  647. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/amount_type.rb +0 -23
  648. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/classification_type.rb +0 -23
  649. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/date_type.rb +0 -23
  650. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/entity_reference_type.rb +0 -49
  651. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/journal_entry_line_item_type.rb +0 -20
  652. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/payment_type.rb +0 -21
  653. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/transaction_reference_type.rb +0 -49
  654. data/lib/ledger_sync/adaptors/quickbooks_online/payment/ledger_serializer.rb +0 -50
  655. data/lib/ledger_sync/adaptors/quickbooks_online/payment_line_item/ledger_serializer.rb +0 -19
  656. data/lib/ledger_sync/adaptors/quickbooks_online/preferences/ledger_serializer.rb +0 -45
  657. data/lib/ledger_sync/adaptors/quickbooks_online/transfer/ledger_serializer.rb +0 -36
  658. data/lib/ledger_sync/adaptors/stripe/adaptor.rb +0 -45
  659. data/lib/ledger_sync/adaptors/test/customer/ledger_serializer.rb +0 -12
  660. data/lib/ledger_sync/adaptors/test/ledger_serializer.rb +0 -12
  661. data/lib/ledger_sync/resources/account.rb +0 -17
  662. data/lib/ledger_sync/resources/bill.rb +0 -27
  663. data/lib/ledger_sync/resources/bill_line_item.rb +0 -17
  664. data/lib/ledger_sync/resources/bill_payment.rb +0 -32
  665. data/lib/ledger_sync/resources/bill_payment_line_item.rb +0 -15
  666. data/lib/ledger_sync/resources/currency.rb +0 -9
  667. data/lib/ledger_sync/resources/customer.rb +0 -25
  668. data/lib/ledger_sync/resources/department.rb +0 -14
  669. data/lib/ledger_sync/resources/deposit.rb +0 -24
  670. data/lib/ledger_sync/resources/deposit_line_item.rb +0 -22
  671. data/lib/ledger_sync/resources/expense.rb +0 -33
  672. data/lib/ledger_sync/resources/expense_line_item.rb +0 -17
  673. data/lib/ledger_sync/resources/invoice.rb +0 -24
  674. data/lib/ledger_sync/resources/invoice_sales_line_item.rb +0 -17
  675. data/lib/ledger_sync/resources/item.rb +0 -5
  676. data/lib/ledger_sync/resources/journal_entry.rb +0 -20
  677. data/lib/ledger_sync/resources/journal_entry_line_item.rb +0 -20
  678. data/lib/ledger_sync/resources/ledger_class.rb +0 -14
  679. data/lib/ledger_sync/resources/payment.rb +0 -27
  680. data/lib/ledger_sync/resources/payment_line_item.rb +0 -15
  681. data/lib/ledger_sync/resources/subsidiary.rb +0 -8
  682. data/lib/ledger_sync/resources/transfer.rb +0 -20
  683. data/lib/ledger_sync/resources/vendor.rb +0 -19
@@ -0,0 +1,8 @@
1
+ ---
2
+ title: Resources
3
+ weight: 0
4
+ layout: reference_stripe
5
+ ---
6
+
7
+ - [resource](/reference/stripe/resources/resource)
8
+ - [customer](/reference/stripe/resources/customer)
@@ -0,0 +1,22 @@
1
+ ---
2
+ title: resource
3
+ weight: 2
4
+ layout: reference_stripe
5
+ ---
6
+
7
+ ## LedgerSync::Ledgers::Stripe::Resource
8
+
9
+ ## Attributes
10
+
11
+ | Name | Type |
12
+ | ---- | ---- |
13
+ | external_id | LedgerSync::Type::ID |
14
+ | ledger_id | LedgerSync::Type::ID |
15
+
16
+
17
+ ## Operations
18
+
19
+
20
+ ## Searchers
21
+
22
+ There are no searchers for this resource.
@@ -0,0 +1,137 @@
1
+ ---
2
+ title: Style Guide
3
+ subtitle: The style guide provides you with a blueprint of default post and page styles.
4
+ image: images/5.jpg
5
+ layout: page
6
+ ---
7
+
8
+ **This is a paragraph**. Pellentesque habitant morbi *tristique senectus et netus et malesuada* fames ac turpis egestas. Vestibulum [tortor quam](https://www.google.com), feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit <mark>amet est et sapien ullamcorper</mark> pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi.
9
+
10
+ # This is an H1
11
+
12
+ Quisque facilisis erat a dui. Nam malesuada ornare dolor. Cras gravida, this is marked text ornare, erat elit consectetuer erat, id egestas pede nibh eget odio. Proin tincidunt, velit vel porta elementum, magna diam molestie sapien, non aliquet massa pede eu diam. Aliquam iaculis. Fusce et ipsum et nulla tristique facilisis.
13
+
14
+ ## This is an H2
15
+
16
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi commodo, ipsum sed pharetra gravida, orci magna rhoncus neque, id pulvinar odio lorem non turpis. Nullam sit amet enim. Suspendisse id velit vitae ligula volutpat condimentum. Aliquam erat volutpat. Sed quis velit. Nulla facilisi. Nulla libero.
17
+
18
+ ### This is an H3
19
+
20
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi commodo, ipsum sed pharetra gravida, orci magna rhoncus neque, id pulvinar odio lorem non turpis. Nullam sit amet enim. Suspendisse id velit vitae ligula volutpat condimentum. Aliquam erat volutpat. Sed quis velit. Nulla facilisi. Nulla libero.
21
+
22
+ #### This is an H4
23
+
24
+ Quisque facilisis erat a dui. Nam malesuada ornare dolor. Cras gravida, diam sit amet rhoncus ornare, erat elit consectetuer erat, id egestas pede nibh eget odio. Proin tincidunt, velit vel porta elementum, magna diam molestie sapien, non aliquet massa pede eu diam. Aliquam iaculis.
25
+
26
+ ## Quoting
27
+
28
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
29
+
30
+ >Creativity is allowing yourself to make mistakes. Design is knowing which ones to keep. - Scott Adams
31
+
32
+ Morbi commodo, ipsum sed pharetra gravida, orci magna rhoncus neque, id pulvinar odio lorem non turpis. Nullam sit amet enim. Suspendisse id velit vitae ligula volutpat condimentum. Aliquam erat volutpat. Sed quis velit. Nulla facilisi. Nulla libero.
33
+
34
+ <hr />
35
+
36
+ ## Unordered Lists
37
+
38
+ + Donec non tortor in arcu mollis feugiat
39
+ + Lorem ipsum dolor sit amet, consectetuer adipiscing elit
40
+ + Donec id eros eget quam aliquam gravida
41
+ + Vivamus convallis urna id felis
42
+ + Nulla porta tempus sapien
43
+
44
+ ## Ordered Lists
45
+
46
+ 1. Donec non tortor in arcu mollis feugiat
47
+ 2. Lorem ipsum dolor sit amet, consectetuer adipiscing elit
48
+ 3. Donec id eros eget quam aliquam gravida
49
+ 4. Vivamus convallis urna id felis
50
+ 5. Nulla porta tempus sapien
51
+
52
+ ## Video Embeds
53
+
54
+ <iframe src="https://player.vimeo.com/video/335879257" width="640" height="338" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe>
55
+
56
+ ## Code Blocks
57
+
58
+ Blocks of code are either fenced by `lines with three back-ticks`, or are indented with four spaces.
59
+
60
+ ```
61
+ <!-- Some example CSS code -->
62
+ body {
63
+ color:red;
64
+ }
65
+ ```
66
+
67
+ ```javascript
68
+ window.$guidesify = {
69
+ coverpage: true,
70
+
71
+ // Custom file name
72
+ coverpage: 'cover.md',
73
+
74
+ // mutiple covers
75
+ coverpage: ['/', '/zh-cn/'],
76
+
77
+ // mutiple covers and custom file name
78
+ coverpage: {
79
+ '/': 'cover.md',
80
+ '/zh-cn/': 'cover.md'
81
+ }
82
+ };
83
+ ```
84
+
85
+ ## Tables
86
+
87
+ <div class="responsive-table">
88
+ <table>
89
+ <caption>Table with thead, tfoot, and tbody</caption>
90
+ <thead>
91
+ <tr>
92
+ <th>Header content 1</th>
93
+ <th>Header content 2</th>
94
+ </tr>
95
+ </thead>
96
+ <tbody>
97
+ <tr>
98
+ <td>Body content 1</td>
99
+ <td>Body content 2</td>
100
+ </tr>
101
+ </tbody>
102
+ <tfoot>
103
+ <tr>
104
+ <td>Footer content 1</td>
105
+ <td>Footer content 2</td>
106
+ </tr>
107
+ </tfoot>
108
+ </table>
109
+ </div>
110
+
111
+ <div class="alert note">
112
+ <strong>Note:</strong>
113
+ Both of the features you used above are parts of the Document Object Model (DOM) API, which allows you to manipulate documents.
114
+ </div>
115
+
116
+ <div class="alert danger"><strong>Important:</strong> In this article, try entering the example code lines into your JavaScript console to see what happens. For more details on JavaScript consoles, see Discover browser developer tools.</div>
117
+
118
+ <div class="alert info"><strong>Info:</strong> In this article, try entering the example code lines into your JavaScript console to see what happens. For more details on JavaScript consoles, see Discover browser developer tools.</div>
119
+
120
+
121
+ {% capture example_content %}
122
+ ```ruby
123
+ token = LedgerSync::Ledgers::NetSuite::Token.new(
124
+ method: method,
125
+ consumer_key: consumer_key,
126
+ consumer_secret: consumer_secret,
127
+ realm: realm,
128
+ token_id: token_id,
129
+ token_secret: token_secret,
130
+ url: url
131
+ )
132
+
133
+ puts token.signature_data_string
134
+ ```
135
+ {% endcapture %}
136
+
137
+ {% include example.md content=example_content %}
@@ -11,7 +11,8 @@ Gem::Specification.new do |spec|
11
11
  # spec.required_rubygems_version = Gem::Requirement.new('>= 0') if spec.respond_to? :required_rubygems_version=
12
12
  spec.authors = ['Ryan Jackson']
13
13
  spec.date = '2019-05-21'
14
- spec.description = 'LedgerSync is a simple library that allows you to sync common objects to popular accounting software like QuickBooks Online, Xero, NetSuite, etc.'
14
+ spec.description = 'LedgerSync is a simple library that allows you to sync common objects to popular accounting '\
15
+ 'software like QuickBooks Online, Xero, NetSuite, etc.'
15
16
  spec.email = ['ryanwjackson@gmail.com']
16
17
  spec.homepage = 'https://github.com/LedgerSync/ledger_sync'
17
18
  spec.licenses = ['MIT']
@@ -32,6 +33,11 @@ Gem::Specification.new do |spec|
32
33
  spec.add_development_dependency('bundler', '~> 1.16')
33
34
  spec.add_development_dependency('byebug', '>= 0')
34
35
  spec.add_development_dependency('factory_bot')
36
+ spec.add_development_dependency('jekyll', '~> 3.8.4')
37
+ spec.add_development_dependency('jekyll-menus', '~> 0.6.0')
38
+ spec.add_development_dependency('jekyll-paginate', '~> 1.1')
39
+ spec.add_development_dependency('jekyll-paginate-v2', '~> 1.9')
40
+ spec.add_development_dependency('overcommit')
35
41
  spec.add_development_dependency('rake', '~> 13.0')
36
42
  spec.add_development_dependency('rspec', '~> 3.2')
37
43
  spec.add_development_dependency('rubocop', '>= 0')
@@ -52,6 +58,6 @@ Gem::Specification.new do |spec|
52
58
  spec.add_runtime_dependency('oauth2', '>= 0')
53
59
  spec.add_runtime_dependency('pd_ruby', '>= 0')
54
60
  spec.add_runtime_dependency('resonad', '>= 0')
55
- spec.add_runtime_dependency('simply_serializable', '>= 1.3.0')
61
+ spec.add_runtime_dependency('simply_serializable', '>= 1.5.1')
56
62
  spec.add_runtime_dependency('stripe')
57
63
  end
@@ -35,34 +35,44 @@ Gem.find_files('ledger_sync/error/**/*.rb').each { |path| require path }
35
35
 
36
36
  # Support Classes
37
37
  require 'ledger_sync/util/resonad'
38
+ require 'ledger_sync/util/url_helpers'
38
39
  require 'ledger_sync/util/signer'
39
40
  require 'ledger_sync/util/hash_helpers'
40
41
  require 'ledger_sync/util/read_only_object'
41
42
  require 'ledger_sync/util/resources_builder'
42
- require 'ledger_sync/adaptor_configuration'
43
- require 'ledger_sync/adaptor_configuration_store'
43
+ require 'ledger_sync/ledger_configuration'
44
+ require 'ledger_sync/ledger_configuration_store'
44
45
  require 'ledger_sync/util/performer'
45
46
  require 'ledger_sync/util/validator'
46
47
  require 'ledger_sync/util/string_helpers'
48
+ require 'ledger_sync/util/mixins/delegate_iterable_methods_mixin'
49
+ require 'ledger_sync/util/mixins/resource_registerable_mixin'
50
+ require 'ledger_sync/util/mixins/dupable_mixin'
47
51
  require 'ledger_sync/result'
48
-
49
- # Adaptors
50
- Gem.find_files('ledger_sync/adaptors/mixins/**/*.rb').each { |path| require path }
51
- require 'ledger_sync/adaptors/adaptor'
52
- require 'ledger_sync/adaptors/searcher'
53
- require 'ledger_sync/adaptors/ledger_serializer'
54
- require 'ledger_sync/adaptors/operation'
55
- require 'ledger_sync/adaptors/contract'
56
- require 'ledger_sync/adaptors/response'
57
- require 'ledger_sync/adaptors/request'
58
-
59
- # Resources (resources are registerd below)
52
+ require 'ledger_sync/operation'
53
+ require 'ledger_sync/resource_adaptor'
54
+
55
+ Gem.find_files('ledger_sync/type/**/*.rb').each { |path| require path }
56
+ Gem.find_files('ledger_sync/serialization/type/**/*.rb').each { |path| require path }
57
+ require 'ledger_sync/serializer'
58
+ require 'ledger_sync/deserializer'
59
+
60
+ # Ledgers
61
+ Gem.find_files('ledger_sync/ledgers/mixins/**/*.rb').each { |path| require path }
62
+ require 'ledger_sync/ledgers/client'
63
+ require 'ledger_sync/ledgers/dashboard_url_helper'
64
+ require 'ledger_sync/ledgers/searcher'
65
+ require 'ledger_sync/ledgers/operation'
66
+ require 'ledger_sync/ledgers/contract'
67
+ require 'ledger_sync/ledgers/response'
68
+ require 'ledger_sync/ledgers/request'
69
+
70
+ # Resources (resources are registered below)
60
71
  require 'ledger_sync/resource' # Template class
61
- Gem.find_files('ledger_sync/resources/**/*.rb').each { |path| require path }
62
-
63
- Gem.find_files('ledger_sync/adaptors/quickbooks_online/resources/**/*.rb').each { |path| require path }
64
72
 
65
73
  module LedgerSync
74
+ include Util::Mixins::ResourceRegisterableMixin
75
+
66
76
  @log_level = nil
67
77
  @logger = nil
68
78
 
@@ -72,7 +82,7 @@ module LedgerSync
72
82
  LEVEL_INFO = Logger::INFO
73
83
 
74
84
  class << self
75
- attr_accessor :adaptors, :resources
85
+ attr_accessor :ledgers
76
86
  end
77
87
 
78
88
  def self.log_level
@@ -80,7 +90,9 @@ module LedgerSync
80
90
  end
81
91
 
82
92
  def self.log_level=(val)
83
- raise ArgumentError, 'log_level should only be set to `nil`, `debug` or `info`' if !val.nil? && ![LEVEL_DEBUG, LEVEL_ERROR, LEVEL_INFO].include?(val)
93
+ if !val.nil? && ![LEVEL_DEBUG, LEVEL_ERROR, LEVEL_INFO].include?(val)
94
+ raise ArgumentError, 'log_level should only be set to `nil`, `debug` or `info`'
95
+ end
84
96
 
85
97
  @log_level = val
86
98
  end
@@ -93,58 +105,31 @@ module LedgerSync
93
105
  @logger = val
94
106
  end
95
107
 
96
- def self.register_adaptor(adaptor_key, module_string: nil)
97
- adaptor_root_path = "ledger_sync/adaptors/#{adaptor_key}"
98
- require "#{adaptor_root_path}/adaptor"
99
- self.adaptors ||= LedgerSync::AdaptorConfigurationStore.new
100
- adaptor_config = LedgerSync::AdaptorConfiguration.new(adaptor_key, module_string: module_string)
101
- yield(adaptor_config)
102
- self.adaptors.register_adaptor(adaptor_config: adaptor_config)
103
-
104
- adaptor_files = Gem.find_files("#{adaptor_root_path}/**/*.rb")
108
+ def self.register_ledger(ledger_key, module_string: nil)
109
+ ledger_root_path = "ledger_sync/ledgers/#{ledger_key}"
110
+ require "#{ledger_root_path}/client"
111
+ self.ledgers ||= LedgerSync::LedgerConfigurationStore.new
112
+ ledger_config = LedgerSync::LedgerConfiguration.new(ledger_key, module_string: module_string)
113
+ yield(ledger_config)
114
+ self.ledgers.register_ledger(ledger_config: ledger_config)
115
+
116
+ client_files = Gem.find_files("#{ledger_root_path}/resource.rb")
117
+ client_files |= Gem.find_files("#{ledger_root_path}/resources/**/*.rb")
118
+ client_files |= Gem.find_files("#{ledger_root_path}/serialization/**/*.rb")
105
119
  # Sort the files to include BFS-style as most dependencies are in parent folders
106
- adaptor_files.sort { |a, b| a.count('/') <=> b.count('/') }.each do |path|
120
+ client_files |= Gem.find_files("#{ledger_root_path}/**/*.rb").sort { |a, b| a.count('/') <=> b.count('/') }
121
+
122
+ client_files.each do |path|
107
123
  next if path.include?('config.rb')
108
124
 
109
125
  require path
110
126
  end
111
127
  end
112
128
 
113
- def self.register_resource(resource:)
114
- self.resources ||= {}
115
- raise "Resource key #{resource.resource_type} already exists." if resources.key?(resource.resource_type)
116
-
117
- self.resources[resource.resource_type] = resource
118
- end
119
-
120
129
  def self.root
121
130
  File.dirname __dir__
122
131
  end
123
132
  end
124
133
 
125
- # Load Adaptors
126
- Gem.find_files('ledger_sync/adaptors/**/config.rb').each { |path| require path }
127
-
128
- # Register Resources
129
- LedgerSync.register_resource(resource: LedgerSync::Account)
130
- LedgerSync.register_resource(resource: LedgerSync::Bill)
131
- LedgerSync.register_resource(resource: LedgerSync::BillLineItem)
132
- LedgerSync.register_resource(resource: LedgerSync::Currency)
133
- LedgerSync.register_resource(resource: LedgerSync::Customer)
134
- LedgerSync.register_resource(resource: LedgerSync::Department)
135
- LedgerSync.register_resource(resource: LedgerSync::Deposit)
136
- LedgerSync.register_resource(resource: LedgerSync::DepositLineItem)
137
- LedgerSync.register_resource(resource: LedgerSync::Expense)
138
- LedgerSync.register_resource(resource: LedgerSync::ExpenseLineItem)
139
- LedgerSync.register_resource(resource: LedgerSync::Invoice)
140
- LedgerSync.register_resource(resource: LedgerSync::InvoiceSalesLineItem)
141
- LedgerSync.register_resource(resource: LedgerSync::Item)
142
- LedgerSync.register_resource(resource: LedgerSync::JournalEntry)
143
- LedgerSync.register_resource(resource: LedgerSync::JournalEntryLineItem)
144
- LedgerSync.register_resource(resource: LedgerSync::LedgerClass)
145
- LedgerSync.register_resource(resource: LedgerSync::Payment)
146
- LedgerSync.register_resource(resource: LedgerSync::PaymentLineItem)
147
- LedgerSync.register_resource(resource: LedgerSync::Transfer)
148
- LedgerSync.register_resource(resource: LedgerSync::Vendor)
149
-
150
- LedgerSync.register_resource(resource: LedgerSync::Adaptors::QuickBooksOnline::Preferences)
134
+ # Load Ledgers
135
+ Gem.find_files('ledger_sync/ledgers/**/config.rb').each { |path| require path }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module LedgerSync
2
4
  module Validatable
3
5
  def valid?
@@ -6,10 +6,10 @@ class Resonad
6
6
  include SimplySerializable::Mixin
7
7
 
8
8
  class Success < Resonad
9
- serialize only: %i[value]
9
+ simply_serialize only: %i[value]
10
10
  end
11
11
 
12
12
  class Failure < Resonad
13
- serialize only: %i[error]
13
+ simply_serialize only: %i[error]
14
14
  end
15
15
  end
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'serialization/mixin'
4
+ require_relative 'serialization/deserializer_attribute_set'
5
+ require_relative 'serialization/deserializer_attribute'
6
+
7
+ module LedgerSync
8
+ class Deserializer
9
+ include Serialization::Mixin
10
+
11
+ class Delegator
12
+ def deserialize(args = {})
13
+ deserializer_for(args).new.deserialize(args)
14
+ end
15
+
16
+ private
17
+
18
+ def deserializer_for(_args = {})
19
+ raise NotImplementedError
20
+ end
21
+ end
22
+
23
+ def attribute_value_from_ledger(hash:, deserializer_attribute:, resource:)
24
+ deserializer_attribute.value_from_hash(
25
+ hash: hash,
26
+ resource: resource
27
+ )
28
+ end
29
+
30
+ def deserialize(args = {})
31
+ hash = args.fetch(:hash)
32
+ resource = args.fetch(:resource)
33
+
34
+ deserialize_into = resource.dup # Do not overwrite values in the resource
35
+ hash = Util::HashHelpers.deep_stringify_keys(hash)
36
+
37
+ self.class.attributes.each_value do |deserializer_attribute|
38
+ value = attribute_value_from_ledger(
39
+ hash: hash,
40
+ deserializer_attribute: deserializer_attribute,
41
+ resource: deserialize_into
42
+ )
43
+
44
+ deserialize_into.assign_attribute(
45
+ deserializer_attribute.resource_attribute_dot_parts.first,
46
+ value
47
+ )
48
+ end
49
+
50
+ deserialize_into
51
+ end
52
+
53
+ def self.attribute(resource_attribute, args = {}, &block)
54
+ if args.key?(:resource_attribute)
55
+ raise 'You cannot provide resource_attribute in args. Pass the value as the first argument.'
56
+ end
57
+
58
+ _attribute(
59
+ args.merge(
60
+ block: (block if block_given?),
61
+ resource_attribute: resource_attribute
62
+ )
63
+ )
64
+ end
65
+
66
+ def self.attribute_class
67
+ Serialization::DeserializerAttribute
68
+ end
69
+
70
+ def self.attributes
71
+ @attributes ||= Serialization::DeserializerAttributeSet.new(serializer_class: self)
72
+ end
73
+
74
+ def self.references_one(resource_attribute, args = {}, &block)
75
+ attribute(
76
+ resource_attribute,
77
+ {
78
+ type: Serialization::Type::DeserializerReferencesOneType.new(
79
+ deserializer: deserializer_from(resource_attribute, args)
80
+ )
81
+ }.merge(args),
82
+ &block
83
+ )
84
+ end
85
+
86
+ def self.references_many(resource_attribute, args = {}, &block)
87
+ attribute(
88
+ resource_attribute,
89
+ {
90
+ type: Serialization::Type::DeserializerReferencesManyType.new(
91
+ deserializer: deserializer_from(resource_attribute, args)
92
+ )
93
+ }.merge(args),
94
+ &block
95
+ )
96
+ end
97
+
98
+ def self.deserializer_from(resource_attribute, args = {})
99
+ if args.key?(:deserializer)
100
+ args.fetch(:deserializer)
101
+ else
102
+ resource_key = inferred_resource_class.resource_attributes[resource_attribute].type.resource_class.resource_type
103
+ require "ledger_sync/ledgers/#{inferred_client_class.root_key}/#{resource_key}/deserializer"
104
+ inferred_client_class.resources[resource_key]::Deserializer
105
+ end
106
+ end
107
+ end
108
+ end