ledger_sync 1.3.2 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (988) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +13 -2
  3. data/.rubocop.yml +14 -1
  4. data/.rubocop_todo.yml +0 -3
  5. data/.travis.yml +7 -2
  6. data/Dockerfile +2 -2
  7. data/Gemfile.lock +61 -55
  8. data/LICENSE.txt +5 -21
  9. data/README.md +9 -393
  10. data/bin/quickbooks_online_oauth_server.rb +102 -0
  11. data/docs/CNAME +1 -0
  12. data/docs/assets/css/brands.min.css +5 -0
  13. data/docs/assets/css/fontawesome.min.css +5 -0
  14. data/docs/assets/css/main.css +1924 -0
  15. data/docs/assets/css/monokai.css +441 -0
  16. data/docs/assets/js/main.js +214 -0
  17. data/docs/assets/js/plugins.js +22 -0
  18. data/docs/assets/js/prism.js +9 -0
  19. data/docs/assets/webfonts/fa-brands-400.eot +0 -0
  20. data/docs/assets/webfonts/fa-brands-400.svg +3452 -0
  21. data/docs/assets/webfonts/fa-brands-400.ttf +0 -0
  22. data/docs/assets/webfonts/fa-brands-400.woff +0 -0
  23. data/docs/assets/webfonts/fa-brands-400.woff2 +0 -0
  24. data/docs/blog/index.html +282 -0
  25. data/docs/guides/architecture/clients/index.html +458 -0
  26. data/docs/guides/architecture/index.html +435 -0
  27. data/docs/guides/architecture/operations/index.html +465 -0
  28. data/docs/guides/architecture/resources/index.html +461 -0
  29. data/docs/guides/architecture/results/index.html +426 -0
  30. data/docs/guides/architecture/searchers/index.html +446 -0
  31. data/docs/guides/architecture/serialization/index.html +476 -0
  32. data/docs/guides/community/index.html +412 -0
  33. data/docs/guides/contribute/console/index.html +424 -0
  34. data/docs/guides/contribute/deployment/index.html +434 -0
  35. data/docs/guides/contribute/documentation/index.html +450 -0
  36. data/docs/guides/contribute/index.html +434 -0
  37. data/docs/guides/contribute/qa/index.html +436 -0
  38. data/docs/guides/contribute/testing/index.html +424 -0
  39. data/docs/guides/customization/custom_resources/index.html +461 -0
  40. data/docs/guides/customization/custom_serializers/index.html +460 -0
  41. data/docs/guides/customization/index.html +431 -0
  42. data/docs/guides/customization/resource_converters/index.html +491 -0
  43. data/docs/guides/getting-started/get-help/index.html +427 -0
  44. data/docs/guides/getting-started/index.html +421 -0
  45. data/docs/guides/getting-started/installation/index.html +433 -0
  46. data/docs/guides/getting-started/quick-start/index.html +531 -0
  47. data/docs/guides/index.html +428 -0
  48. data/docs/guides/ledgers/index.html +429 -0
  49. data/docs/guides/ledgers/netsuite/index.html +424 -0
  50. data/docs/guides/ledgers/netsuite_soap/index.html +424 -0
  51. data/docs/guides/ledgers/quickbooks_online/index.html +424 -0
  52. data/docs/guides/ledgers/stripe/index.html +424 -0
  53. data/docs/guides/modern-treasury/index.html +411 -0
  54. data/docs/guides/tips_and_more/index.html +471 -0
  55. data/docs/images/1.jpg +0 -0
  56. data/docs/images/10.jpg +0 -0
  57. data/docs/images/2.jpg +0 -0
  58. data/docs/images/3.jpg +0 -0
  59. data/docs/images/4.jpg +0 -0
  60. data/docs/images/5.jpg +0 -0
  61. data/docs/images/6.jpg +0 -0
  62. data/docs/images/7.jpg +0 -0
  63. data/docs/images/8.jpg +0 -0
  64. data/docs/images/9.jpg +0 -0
  65. data/docs/images/logo.svg +8 -0
  66. data/docs/index.html +379 -0
  67. data/docs/overview/index.html +409 -0
  68. data/docs/posts/introducing-docs/index.html +270 -0
  69. data/docs/posts/netsuite-authentication/index.html +624 -0
  70. data/docs/reference/architecture/clients/index.html +332 -0
  71. data/docs/reference/architecture/index.html +311 -0
  72. data/docs/reference/architecture/operations/index.html +302 -0
  73. data/docs/reference/architecture/resources/index.html +335 -0
  74. data/docs/reference/architecture/results/index.html +302 -0
  75. data/docs/reference/architecture/searchers/index.html +302 -0
  76. data/docs/reference/architecture/serialization/index.html +302 -0
  77. data/docs/reference/index.html +281 -0
  78. data/docs/reference/netsuite/authentication/index.html +392 -0
  79. data/docs/reference/netsuite/authentication/token_based_authentication/index.html +486 -0
  80. data/docs/reference/netsuite/index.html +388 -0
  81. data/docs/reference/netsuite/resources/account/index.html +484 -0
  82. data/docs/reference/netsuite/resources/check/index.html +492 -0
  83. data/docs/reference/netsuite/resources/check_line_item/index.html +460 -0
  84. data/docs/reference/netsuite/resources/currency/index.html +476 -0
  85. data/docs/reference/netsuite/resources/customer/index.html +488 -0
  86. data/docs/reference/netsuite/resources/customer_deposit/index.html +480 -0
  87. data/docs/reference/netsuite/resources/department/index.html +484 -0
  88. data/docs/reference/netsuite/resources/deposit/index.html +468 -0
  89. data/docs/reference/netsuite/resources/deposit_line_item/index.html +460 -0
  90. data/docs/reference/netsuite/resources/index.html +436 -0
  91. data/docs/reference/netsuite/resources/invoice/index.html +468 -0
  92. data/docs/reference/netsuite/resources/invoice_line_item/index.html +456 -0
  93. data/docs/reference/netsuite/resources/item/index.html +444 -0
  94. data/docs/reference/netsuite/resources/journal_entry/index.html +488 -0
  95. data/docs/reference/netsuite/resources/journal_entry_line_item/index.html +464 -0
  96. data/docs/reference/netsuite/resources/ledger_class/index.html +484 -0
  97. data/docs/reference/netsuite/resources/location/index.html +468 -0
  98. data/docs/reference/netsuite/resources/resource/index.html +440 -0
  99. data/docs/reference/netsuite/resources/subsidiary/index.html +448 -0
  100. data/docs/reference/netsuite/resources/vendor/index.html +492 -0
  101. data/docs/reference/netsuite_soap/index.html +303 -0
  102. data/docs/reference/netsuite_soap/resources/customer/index.html +364 -0
  103. data/docs/reference/netsuite_soap/resources/index.html +316 -0
  104. data/docs/reference/netsuite_soap/resources/resource/index.html +336 -0
  105. data/docs/reference/netsuite_soap/resources/subsidiary/index.html +356 -0
  106. data/docs/reference/quickbooks_online/authentication/index.html +442 -0
  107. data/docs/reference/quickbooks_online/errors/index.html +395 -0
  108. data/docs/reference/quickbooks_online/index.html +393 -0
  109. data/docs/reference/quickbooks_online/resources/account/index.html +530 -0
  110. data/docs/reference/quickbooks_online/resources/bill/index.html +534 -0
  111. data/docs/reference/quickbooks_online/resources/bill_line_item/index.html +496 -0
  112. data/docs/reference/quickbooks_online/resources/bill_payment/index.html +550 -0
  113. data/docs/reference/quickbooks_online/resources/bill_payment_line_item/index.html +488 -0
  114. data/docs/reference/quickbooks_online/resources/currency/index.html +492 -0
  115. data/docs/reference/quickbooks_online/resources/customer/index.html +514 -0
  116. data/docs/reference/quickbooks_online/resources/department/index.html +518 -0
  117. data/docs/reference/quickbooks_online/resources/deposit/index.html +526 -0
  118. data/docs/reference/quickbooks_online/resources/deposit_line_item/index.html +500 -0
  119. data/docs/reference/quickbooks_online/resources/expense/index.html +538 -0
  120. data/docs/reference/quickbooks_online/resources/expense_line_item/index.html +496 -0
  121. data/docs/reference/quickbooks_online/resources/index.html +484 -0
  122. data/docs/reference/quickbooks_online/resources/invoice/index.html +526 -0
  123. data/docs/reference/quickbooks_online/resources/invoice_sales_line_item/index.html +496 -0
  124. data/docs/reference/quickbooks_online/resources/item/index.html +484 -0
  125. data/docs/reference/quickbooks_online/resources/journal_entry/index.html +518 -0
  126. data/docs/reference/quickbooks_online/resources/journal_entry_line_item/index.html +504 -0
  127. data/docs/reference/quickbooks_online/resources/ledger_class/index.html +518 -0
  128. data/docs/reference/quickbooks_online/resources/payment/index.html +538 -0
  129. data/docs/reference/quickbooks_online/resources/payment_line_item/index.html +488 -0
  130. data/docs/reference/quickbooks_online/resources/preferences/index.html +526 -0
  131. data/docs/reference/quickbooks_online/resources/primary_email_addr/index.html +484 -0
  132. data/docs/reference/quickbooks_online/resources/primary_phone/index.html +484 -0
  133. data/docs/reference/quickbooks_online/resources/resource/index.html +480 -0
  134. data/docs/reference/quickbooks_online/resources/subsidiary/index.html +488 -0
  135. data/docs/reference/quickbooks_online/resources/transfer/index.html +522 -0
  136. data/docs/reference/quickbooks_online/resources/vendor/index.html +526 -0
  137. data/docs/reference/quickbooks_online/webhooks/index.html +427 -0
  138. data/docs/reference/stripe/index.html +293 -0
  139. data/docs/reference/stripe/resources/customer/index.html +366 -0
  140. data/docs/reference/stripe/resources/index.html +309 -0
  141. data/docs/reference/stripe/resources/resource/index.html +330 -0
  142. data/docs/style-guide/index.html +375 -0
  143. data/documentation/build.sh +8 -0
  144. data/documentation/generate.rb +32 -0
  145. data/documentation/generators/generator.rb +80 -0
  146. data/documentation/generators/guides/generator.rb +36 -0
  147. data/documentation/generators/reference/generator.rb +76 -0
  148. data/documentation/generators/reference/ledger/generator.rb +74 -0
  149. data/documentation/generators/template.rb +22 -0
  150. data/documentation/helper_methods.rb +17 -0
  151. data/documentation/site/CNAME +1 -0
  152. data/documentation/site/Gemfile +11 -0
  153. data/documentation/site/Gemfile.lock +69 -0
  154. data/documentation/site/LICENSE.md +40 -0
  155. data/documentation/site/README.md +8 -0
  156. data/documentation/site/_config.yml +119 -0
  157. data/documentation/site/_data/guides_sections.yml +10 -0
  158. data/documentation/site/_data/reference_sections.yml +5 -0
  159. data/documentation/site/_includes/action_link.html +11 -0
  160. data/documentation/site/_includes/alerts/base.html +3 -0
  161. data/documentation/site/_includes/alerts/danger.html +1 -0
  162. data/documentation/site/_includes/alerts/info.html +1 -0
  163. data/documentation/site/_includes/alerts/success.html +1 -0
  164. data/documentation/site/_includes/alerts/warning.html +1 -0
  165. data/documentation/site/_includes/cta_buttons.html +4 -0
  166. data/documentation/site/_includes/example.md +8 -0
  167. data/documentation/site/_includes/footer.html +20 -0
  168. data/documentation/site/_includes/getting_help.md +8 -0
  169. data/documentation/site/_includes/guides_menu.html +29 -0
  170. data/documentation/site/_includes/guides_submenu.html +7 -0
  171. data/documentation/site/_includes/header.html +35 -0
  172. data/documentation/site/_includes/installation_instructions.md +17 -0
  173. data/documentation/site/_includes/ledgers/Stripe_summary.md +1 -0
  174. data/documentation/site/_includes/ledgers/netsuite_soap_summary.md +1 -0
  175. data/documentation/site/_includes/ledgers/netsuite_summary.md +1 -0
  176. data/documentation/site/_includes/ledgers/netsuite_summary_shared.md +1 -0
  177. data/documentation/site/_includes/ledgers/quickbooks_online_summary.md +1 -0
  178. data/documentation/site/_includes/reference/netsuite/authentication/_token_based_authentication.md +99 -0
  179. data/documentation/site/_includes/reference/netsuite/authentication/index.md +15 -0
  180. data/documentation/site/_includes/reference/netsuite/authentication/token_based_authentication.md +6 -0
  181. data/documentation/site/_includes/reference/netsuite/index.md +25 -0
  182. data/documentation/site/_includes/reference/netsuite_soap/index.md +11 -0
  183. data/documentation/site/_includes/reference/quickbooks_online/authentication/index.md +55 -0
  184. data/documentation/site/_includes/reference/quickbooks_online/errors/index.md +9 -0
  185. data/documentation/site/_includes/reference/quickbooks_online/index.md +6 -0
  186. data/documentation/site/_includes/reference/quickbooks_online/webhooks/index.md +42 -0
  187. data/documentation/site/_includes/reference/stripe/index.md +6 -0
  188. data/documentation/site/_includes/section_content.html +34 -0
  189. data/documentation/site/_includes/section_cta.html +28 -0
  190. data/documentation/site/_includes/section_grid.html +60 -0
  191. data/documentation/site/_includes/section_guides.html +35 -0
  192. data/documentation/site/_includes/section_hero.html +28 -0
  193. data/documentation/site/_includes/submenu.html +8 -0
  194. data/documentation/site/_layouts/advanced.html +9 -0
  195. data/documentation/site/_layouts/base.html +34 -0
  196. data/documentation/site/_layouts/blog.html +51 -0
  197. data/documentation/site/_layouts/body.html +11 -0
  198. data/documentation/site/_layouts/guides.html +46 -0
  199. data/documentation/site/_layouts/page.html +26 -0
  200. data/documentation/site/_layouts/post.html +52 -0
  201. data/documentation/site/_layouts/reference.html +46 -0
  202. data/documentation/site/_layouts/reference_netsuite.html +46 -0
  203. data/documentation/site/_layouts/reference_netsuite_soap.html +46 -0
  204. data/documentation/site/_layouts/reference_quickbooks_online.html +46 -0
  205. data/documentation/site/_layouts/reference_stripe.html +46 -0
  206. data/documentation/site/_plugins/filters.rb +122 -0
  207. data/documentation/site/_plugins/hooks.rb +9 -0
  208. data/documentation/site/_posts/2020-06-01-introducing-docs.md +17 -0
  209. data/documentation/site/_posts/2020-06-10-netsuite-authentication.md +382 -0
  210. data/documentation/site/_sass/imports/_animations.scss +19 -0
  211. data/documentation/site/_sass/imports/_footer.scss +94 -0
  212. data/documentation/site/_sass/imports/_functions.scss +69 -0
  213. data/documentation/site/_sass/imports/_general.scss +687 -0
  214. data/documentation/site/_sass/imports/_guides.scss +300 -0
  215. data/documentation/site/_sass/imports/_header.scss +358 -0
  216. data/documentation/site/_sass/imports/_icons.scss +90 -0
  217. data/documentation/site/_sass/imports/_post-navigation.scss +67 -0
  218. data/documentation/site/_sass/imports/_posts-pages.scss +165 -0
  219. data/documentation/site/_sass/imports/_prism.scss +174 -0
  220. data/documentation/site/_sass/imports/_reset.scss +210 -0
  221. data/documentation/site/_sass/imports/_sections.scss +370 -0
  222. data/documentation/site/_sass/imports/_structure.scss +44 -0
  223. data/documentation/site/_templates/_layouts/reference_ledger.html.erb +46 -0
  224. data/documentation/site/_templates/guides/ledger.md.erb +9 -0
  225. data/documentation/site/_templates/reference/resources/index.md.erb +9 -0
  226. data/documentation/site/_templates/reference/resources/resource.md.erb +27 -0
  227. data/documentation/site/assets/css/brands.min.css +5 -0
  228. data/documentation/site/assets/css/fontawesome.min.css +5 -0
  229. data/documentation/site/assets/css/main.scss +45 -0
  230. data/documentation/site/assets/css/monokai.css +441 -0
  231. data/documentation/site/assets/js/main.js +214 -0
  232. data/documentation/site/assets/js/plugins.js +22 -0
  233. data/documentation/site/assets/js/prism.js +9 -0
  234. data/documentation/site/assets/webfonts/fa-brands-400.eot +0 -0
  235. data/documentation/site/assets/webfonts/fa-brands-400.svg +3452 -0
  236. data/documentation/site/assets/webfonts/fa-brands-400.ttf +0 -0
  237. data/documentation/site/assets/webfonts/fa-brands-400.woff +0 -0
  238. data/documentation/site/assets/webfonts/fa-brands-400.woff2 +0 -0
  239. data/documentation/site/blog/index.md +6 -0
  240. data/documentation/site/guides/architecture/clients.md +35 -0
  241. data/documentation/site/guides/architecture/index.md +14 -0
  242. data/documentation/site/guides/architecture/operations.md +45 -0
  243. data/documentation/site/guides/architecture/resources.md +40 -0
  244. data/documentation/site/guides/architecture/results.md +6 -0
  245. data/documentation/site/guides/architecture/searchers.md +28 -0
  246. data/documentation/site/guides/architecture/serialization.md +59 -0
  247. data/documentation/site/guides/community/index.md +8 -0
  248. data/documentation/site/guides/contribute/console.md +6 -0
  249. data/documentation/site/guides/contribute/deployment.md +17 -0
  250. data/documentation/site/guides/contribute/documentation.md +37 -0
  251. data/documentation/site/guides/contribute/index.md +18 -0
  252. data/documentation/site/guides/contribute/qa.md +16 -0
  253. data/documentation/site/guides/contribute/testing.md +6 -0
  254. data/documentation/site/guides/customization/custom_resources.md +50 -0
  255. data/documentation/site/guides/customization/custom_serializers.md +47 -0
  256. data/documentation/site/guides/customization/index.md +15 -0
  257. data/documentation/site/guides/customization/resource_converters.md +79 -0
  258. data/documentation/site/guides/getting-started/get-help.md +7 -0
  259. data/documentation/site/guides/getting-started/index.md +8 -0
  260. data/documentation/site/guides/getting-started/installation.md +7 -0
  261. data/documentation/site/guides/getting-started/quick-start.md +123 -0
  262. data/documentation/site/guides/index.md +16 -0
  263. data/documentation/site/guides/ledgers/index.md +12 -0
  264. data/documentation/site/guides/ledgers/netsuite.md +9 -0
  265. data/documentation/site/guides/ledgers/netsuite_soap.md +9 -0
  266. data/documentation/site/guides/ledgers/quickbooks_online.md +9 -0
  267. data/documentation/site/guides/ledgers/stripe.md +9 -0
  268. data/documentation/site/guides/modern-treasury/index.md +14 -0
  269. data/documentation/site/guides/tips_and_more/index.md +76 -0
  270. data/documentation/site/images/1.jpg +0 -0
  271. data/documentation/site/images/10.jpg +0 -0
  272. data/documentation/site/images/2.jpg +0 -0
  273. data/documentation/site/images/3.jpg +0 -0
  274. data/documentation/site/images/4.jpg +0 -0
  275. data/documentation/site/images/5.jpg +0 -0
  276. data/documentation/site/images/6.jpg +0 -0
  277. data/documentation/site/images/7.jpg +0 -0
  278. data/documentation/site/images/8.jpg +0 -0
  279. data/documentation/site/images/9.jpg +0 -0
  280. data/documentation/site/images/logo.svg +8 -0
  281. data/documentation/site/index.md +99 -0
  282. data/documentation/site/overview.md +21 -0
  283. data/documentation/site/reference/architecture/clients.md +33 -0
  284. data/documentation/site/reference/architecture/index.md +14 -0
  285. data/documentation/site/reference/architecture/operations.md +6 -0
  286. data/documentation/site/reference/architecture/resources.md +38 -0
  287. data/documentation/site/reference/architecture/results.md +6 -0
  288. data/documentation/site/reference/architecture/searchers.md +6 -0
  289. data/documentation/site/reference/architecture/serialization.md +6 -0
  290. data/documentation/site/reference/index.md +6 -0
  291. data/documentation/site/reference/netsuite/authentication/_token_based_authentication.md +99 -0
  292. data/documentation/site/reference/netsuite/authentication/index.md +15 -0
  293. data/documentation/site/reference/netsuite/authentication/token_based_authentication.md +6 -0
  294. data/documentation/site/reference/netsuite/index.md +25 -0
  295. data/documentation/site/reference/netsuite/resources/account.md +38 -0
  296. data/documentation/site/reference/netsuite/resources/check.md +49 -0
  297. data/documentation/site/reference/netsuite/resources/check_line_item.md +23 -0
  298. data/documentation/site/reference/netsuite/resources/currency.md +45 -0
  299. data/documentation/site/reference/netsuite/resources/customer.md +48 -0
  300. data/documentation/site/reference/netsuite/resources/customer_deposit.md +46 -0
  301. data/documentation/site/reference/netsuite/resources/department.md +47 -0
  302. data/documentation/site/reference/netsuite/resources/deposit.md +25 -0
  303. data/documentation/site/reference/netsuite/resources/deposit_line_item.md +23 -0
  304. data/documentation/site/reference/netsuite/resources/index.md +25 -0
  305. data/documentation/site/reference/netsuite/resources/invoice.md +25 -0
  306. data/documentation/site/reference/netsuite/resources/invoice_line_item.md +22 -0
  307. data/documentation/site/reference/netsuite/resources/item.md +19 -0
  308. data/documentation/site/reference/netsuite/resources/journal_entry.md +48 -0
  309. data/documentation/site/reference/netsuite/resources/journal_entry_line_item.md +24 -0
  310. data/documentation/site/reference/netsuite/resources/ledger_class.md +47 -0
  311. data/documentation/site/reference/netsuite/resources/location.md +43 -0
  312. data/documentation/site/reference/netsuite/resources/resource.md +18 -0
  313. data/documentation/site/reference/netsuite/resources/subsidiary.md +20 -0
  314. data/documentation/site/reference/netsuite/resources/vendor.md +49 -0
  315. data/documentation/site/reference/netsuite_soap/index.md +11 -0
  316. data/documentation/site/reference/netsuite_soap/resources/customer.md +34 -0
  317. data/documentation/site/reference/netsuite_soap/resources/index.md +9 -0
  318. data/documentation/site/reference/netsuite_soap/resources/resource.md +18 -0
  319. data/documentation/site/reference/netsuite_soap/resources/subsidiary.md +32 -0
  320. data/documentation/site/reference/quickbooks_online/authentication/index.md +55 -0
  321. data/documentation/site/reference/quickbooks_online/errors/index.md +9 -0
  322. data/documentation/site/reference/quickbooks_online/index.md +6 -0
  323. data/documentation/site/reference/quickbooks_online/resources/account.md +44 -0
  324. data/documentation/site/reference/quickbooks_online/resources/bill.md +45 -0
  325. data/documentation/site/reference/quickbooks_online/resources/bill_line_item.md +22 -0
  326. data/documentation/site/reference/quickbooks_online/resources/bill_payment.md +49 -0
  327. data/documentation/site/reference/quickbooks_online/resources/bill_payment_line_item.md +20 -0
  328. data/documentation/site/reference/quickbooks_online/resources/currency.md +21 -0
  329. data/documentation/site/reference/quickbooks_online/resources/customer.md +40 -0
  330. data/documentation/site/reference/quickbooks_online/resources/department.md +41 -0
  331. data/documentation/site/reference/quickbooks_online/resources/deposit.md +43 -0
  332. data/documentation/site/reference/quickbooks_online/resources/deposit_line_item.md +23 -0
  333. data/documentation/site/reference/quickbooks_online/resources/expense.md +46 -0
  334. data/documentation/site/reference/quickbooks_online/resources/expense_line_item.md +22 -0
  335. data/documentation/site/reference/quickbooks_online/resources/index.md +33 -0
  336. data/documentation/site/reference/quickbooks_online/resources/invoice.md +43 -0
  337. data/documentation/site/reference/quickbooks_online/resources/invoice_sales_line_item.md +22 -0
  338. data/documentation/site/reference/quickbooks_online/resources/item.md +19 -0
  339. data/documentation/site/reference/quickbooks_online/resources/journal_entry.md +41 -0
  340. data/documentation/site/reference/quickbooks_online/resources/journal_entry_line_item.md +24 -0
  341. data/documentation/site/reference/quickbooks_online/resources/ledger_class.md +41 -0
  342. data/documentation/site/reference/quickbooks_online/resources/payment.md +46 -0
  343. data/documentation/site/reference/quickbooks_online/resources/payment_line_item.md +20 -0
  344. data/documentation/site/reference/quickbooks_online/resources/preferences.md +34 -0
  345. data/documentation/site/reference/quickbooks_online/resources/primary_email_addr.md +19 -0
  346. data/documentation/site/reference/quickbooks_online/resources/primary_phone.md +19 -0
  347. data/documentation/site/reference/quickbooks_online/resources/resource.md +18 -0
  348. data/documentation/site/reference/quickbooks_online/resources/subsidiary.md +20 -0
  349. data/documentation/site/reference/quickbooks_online/resources/transfer.md +42 -0
  350. data/documentation/site/reference/quickbooks_online/resources/vendor.md +43 -0
  351. data/documentation/site/reference/quickbooks_online/webhooks/index.md +42 -0
  352. data/documentation/site/reference/stripe/index.md +6 -0
  353. data/documentation/site/reference/stripe/resources/customer.md +45 -0
  354. data/documentation/site/reference/stripe/resources/index.md +8 -0
  355. data/documentation/site/reference/stripe/resources/resource.md +18 -0
  356. data/documentation/site/style-guide.md +137 -0
  357. data/ledger_sync.gemspec +3 -2
  358. data/lib/ledger_sync.rb +46 -58
  359. data/lib/ledger_sync/core_ext/resonad.rb +2 -3
  360. data/lib/ledger_sync/deserializer.rb +108 -0
  361. data/lib/ledger_sync/error.rb +48 -0
  362. data/lib/ledger_sync/error/ledger_errors.rb +72 -0
  363. data/lib/ledger_sync/error/operation_errors.rb +0 -10
  364. data/lib/ledger_sync/error/resource_errors.rb +48 -19
  365. data/lib/ledger_sync/ledger_configuration.rb +61 -0
  366. data/lib/ledger_sync/ledger_configuration_store.rb +56 -0
  367. data/lib/ledger_sync/ledgers/client.rb +112 -0
  368. data/lib/ledger_sync/ledgers/contract.rb +16 -0
  369. data/lib/ledger_sync/ledgers/dashboard_url_helper.rb +23 -0
  370. data/lib/ledger_sync/ledgers/mixins/infer_client_mixin.rb +28 -0
  371. data/lib/ledger_sync/ledgers/mixins/infer_resource_class_mixin.rb +25 -0
  372. data/lib/ledger_sync/ledgers/mixins/infer_serializer_mixin.rb +52 -0
  373. data/lib/ledger_sync/ledgers/mixins/infer_validation_contract_mixin.rb +27 -0
  374. data/lib/ledger_sync/ledgers/mixins/offset_and_limit_pagination_searcher_mixin.rb +37 -0
  375. data/lib/ledger_sync/ledgers/mixins/serialization_mixin.rb +41 -0
  376. data/lib/ledger_sync/ledgers/netsuite/account/deserializer.rb +23 -0
  377. data/lib/ledger_sync/ledgers/netsuite/account/operations/create.rb +28 -0
  378. data/lib/ledger_sync/ledgers/netsuite/account/operations/find.rb +28 -0
  379. data/lib/ledger_sync/ledgers/netsuite/account/searcher.rb +12 -0
  380. data/lib/ledger_sync/ledgers/netsuite/account/searcher_deserializer.rb +29 -0
  381. data/lib/ledger_sync/ledgers/netsuite/account/serializer.rb +21 -0
  382. data/lib/ledger_sync/ledgers/netsuite/check/deserializer.rb +29 -0
  383. data/lib/ledger_sync/ledgers/netsuite/check/operations/create.rb +27 -0
  384. data/lib/ledger_sync/ledgers/netsuite/check/operations/delete.rb +27 -0
  385. data/lib/ledger_sync/ledgers/netsuite/check/operations/find.rb +27 -0
  386. data/lib/ledger_sync/ledgers/netsuite/check/operations/update.rb +27 -0
  387. data/lib/ledger_sync/ledgers/netsuite/check/searcher.rb +15 -0
  388. data/lib/ledger_sync/ledgers/netsuite/check/searcher_deserializer.rb +16 -0
  389. data/lib/ledger_sync/ledgers/netsuite/check/serializer.rb +51 -0
  390. data/lib/ledger_sync/ledgers/netsuite/check_line_item/deserializer.rb +17 -0
  391. data/lib/ledger_sync/ledgers/netsuite/check_line_item/serializer.rb +25 -0
  392. data/lib/ledger_sync/ledgers/netsuite/client.rb +184 -0
  393. data/lib/ledger_sync/ledgers/netsuite/config.rb +5 -0
  394. data/lib/ledger_sync/ledgers/netsuite/currency/deserializer.rb +23 -0
  395. data/lib/ledger_sync/ledgers/netsuite/currency/operations/create.rb +25 -0
  396. data/lib/ledger_sync/ledgers/netsuite/currency/operations/delete.rb +23 -0
  397. data/lib/ledger_sync/ledgers/netsuite/currency/operations/find.rb +23 -0
  398. data/lib/ledger_sync/ledgers/netsuite/currency/operations/update.rb +23 -0
  399. data/lib/ledger_sync/ledgers/netsuite/currency/serializer.rb +21 -0
  400. data/lib/ledger_sync/ledgers/netsuite/customer/deserializer.rb +22 -0
  401. data/lib/ledger_sync/ledgers/netsuite/customer/operations/create.rb +26 -0
  402. data/lib/ledger_sync/ledgers/netsuite/customer/operations/delete.rb +26 -0
  403. data/lib/ledger_sync/ledgers/netsuite/customer/operations/find.rb +26 -0
  404. data/lib/ledger_sync/ledgers/netsuite/customer/operations/update.rb +26 -0
  405. data/lib/ledger_sync/ledgers/netsuite/customer/searcher.rb +12 -0
  406. data/lib/ledger_sync/ledgers/netsuite/customer/searcher_deserializer.rb +18 -0
  407. data/lib/ledger_sync/ledgers/netsuite/customer/serializer.rb +29 -0
  408. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/deserializer.rb +20 -0
  409. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/operations/create.rb +24 -0
  410. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/operations/delete.rb +24 -0
  411. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/operations/find.rb +24 -0
  412. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/operations/update.rb +24 -0
  413. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/searcher.rb +12 -0
  414. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/searcher_deserializer.rb +16 -0
  415. data/lib/ledger_sync/ledgers/netsuite/customer_deposit/serializer.rb +25 -0
  416. data/lib/ledger_sync/ledgers/netsuite/dashboard_url_helper.rb +28 -0
  417. data/lib/ledger_sync/ledgers/netsuite/department/deserializer.rb +15 -0
  418. data/lib/ledger_sync/ledgers/netsuite/department/operations/create.rb +25 -0
  419. data/lib/ledger_sync/ledgers/netsuite/department/operations/delete.rb +25 -0
  420. data/lib/ledger_sync/ledgers/netsuite/department/operations/find.rb +25 -0
  421. data/lib/ledger_sync/ledgers/netsuite/department/operations/update.rb +25 -0
  422. data/lib/ledger_sync/ledgers/netsuite/department/searcher.rb +12 -0
  423. data/lib/ledger_sync/ledgers/netsuite/department/searcher_deserializer.rb +19 -0
  424. data/lib/ledger_sync/ledgers/netsuite/department/serializer.rb +13 -0
  425. data/lib/ledger_sync/ledgers/netsuite/deserializer.rb +18 -0
  426. data/lib/ledger_sync/ledgers/netsuite/error.rb +18 -0
  427. data/lib/ledger_sync/ledgers/netsuite/journal_entry/deserializer.rb +31 -0
  428. data/lib/ledger_sync/ledgers/netsuite/journal_entry/operations/create.rb +26 -0
  429. data/lib/ledger_sync/ledgers/netsuite/journal_entry/operations/delete.rb +26 -0
  430. data/lib/ledger_sync/ledgers/netsuite/journal_entry/operations/find.rb +26 -0
  431. data/lib/ledger_sync/ledgers/netsuite/journal_entry/operations/update.rb +30 -0
  432. data/lib/ledger_sync/ledgers/netsuite/journal_entry/serializer.rb +36 -0
  433. data/lib/ledger_sync/ledgers/netsuite/journal_entry_line_item/deserializer.rb +23 -0
  434. data/lib/ledger_sync/ledgers/netsuite/journal_entry_line_item/serializer.rb +21 -0
  435. data/lib/ledger_sync/ledgers/netsuite/ledger_class/deserializer.rb +15 -0
  436. data/lib/ledger_sync/ledgers/netsuite/ledger_class/operations/create.rb +25 -0
  437. data/lib/ledger_sync/ledgers/netsuite/ledger_class/operations/delete.rb +25 -0
  438. data/lib/ledger_sync/ledgers/netsuite/ledger_class/operations/find.rb +25 -0
  439. data/lib/ledger_sync/ledgers/netsuite/ledger_class/operations/update.rb +25 -0
  440. data/lib/ledger_sync/ledgers/netsuite/ledger_class/searcher.rb +12 -0
  441. data/lib/ledger_sync/ledgers/netsuite/ledger_class/searcher_deserializer.rb +19 -0
  442. data/lib/ledger_sync/ledgers/netsuite/ledger_class/serializer.rb +13 -0
  443. data/lib/ledger_sync/ledgers/netsuite/location/deserializer.rb +15 -0
  444. data/lib/ledger_sync/ledgers/netsuite/location/operations/create.rb +21 -0
  445. data/lib/ledger_sync/ledgers/netsuite/location/operations/delete.rb +21 -0
  446. data/lib/ledger_sync/ledgers/netsuite/location/operations/find.rb +21 -0
  447. data/lib/ledger_sync/ledgers/netsuite/location/operations/update.rb +21 -0
  448. data/lib/ledger_sync/ledgers/netsuite/location/searcher.rb +12 -0
  449. data/lib/ledger_sync/ledgers/netsuite/location/serializer.rb +13 -0
  450. data/lib/ledger_sync/ledgers/netsuite/operation.rb +40 -0
  451. data/lib/ledger_sync/ledgers/netsuite/operation/create.rb +58 -0
  452. data/lib/ledger_sync/ledgers/netsuite/operation/delete.rb +49 -0
  453. data/lib/ledger_sync/ledgers/netsuite/operation/find.rb +60 -0
  454. data/lib/ledger_sync/ledgers/netsuite/operation/update.rb +61 -0
  455. data/lib/ledger_sync/ledgers/netsuite/record/http_method.rb +33 -0
  456. data/lib/ledger_sync/ledgers/netsuite/record/metadata.rb +105 -0
  457. data/lib/ledger_sync/ledgers/netsuite/record/parameter.rb +20 -0
  458. data/lib/ledger_sync/ledgers/netsuite/record/property.rb +22 -0
  459. data/lib/ledger_sync/ledgers/netsuite/reference/serializer.rb +13 -0
  460. data/lib/ledger_sync/ledgers/netsuite/resource.rb +10 -0
  461. data/lib/ledger_sync/ledgers/netsuite/resources/account.rb +44 -0
  462. data/lib/ledger_sync/ledgers/netsuite/resources/check.rb +23 -0
  463. data/lib/ledger_sync/ledgers/netsuite/resources/check_line_item.rb +15 -0
  464. data/lib/ledger_sync/ledgers/netsuite/resources/currency.rb +13 -0
  465. data/lib/ledger_sync/ledgers/netsuite/resources/customer.rb +19 -0
  466. data/lib/ledger_sync/ledgers/netsuite/resources/customer_deposit.rb +15 -0
  467. data/lib/ledger_sync/ledgers/netsuite/resources/department.rb +16 -0
  468. data/lib/ledger_sync/ledgers/netsuite/resources/deposit.rb +28 -0
  469. data/lib/ledger_sync/ledgers/netsuite/resources/deposit_line_item.rb +25 -0
  470. data/lib/ledger_sync/ledgers/netsuite/resources/invoice.rb +28 -0
  471. data/lib/ledger_sync/ledgers/netsuite/resources/invoice_line_item.rb +21 -0
  472. data/lib/ledger_sync/ledgers/netsuite/resources/item.rb +11 -0
  473. data/lib/ledger_sync/ledgers/netsuite/resources/journal_entry.rb +26 -0
  474. data/lib/ledger_sync/ledgers/netsuite/resources/journal_entry_line_item.rb +24 -0
  475. data/lib/ledger_sync/ledgers/netsuite/resources/ledger_class.rb +16 -0
  476. data/lib/ledger_sync/ledgers/netsuite/resources/location.rb +11 -0
  477. data/lib/ledger_sync/ledgers/netsuite/resources/subsidiary.rb +12 -0
  478. data/lib/ledger_sync/ledgers/netsuite/resources/vendor.rb +23 -0
  479. data/lib/ledger_sync/ledgers/netsuite/searcher.rb +64 -0
  480. data/lib/ledger_sync/ledgers/netsuite/serializer.rb +13 -0
  481. data/lib/ledger_sync/ledgers/netsuite/subsidiary/deserializer.rb +17 -0
  482. data/lib/ledger_sync/ledgers/netsuite/subsidiary/searcher.rb +12 -0
  483. data/lib/ledger_sync/ledgers/netsuite/subsidiary/searcher_deserializer.rb +15 -0
  484. data/lib/ledger_sync/ledgers/netsuite/subsidiary/serializer.rb +15 -0
  485. data/lib/ledger_sync/ledgers/netsuite/token.rb +158 -0
  486. data/lib/ledger_sync/ledgers/netsuite/type/deserializer_active_type.rb +32 -0
  487. data/lib/ledger_sync/ledgers/netsuite/type/deserializer_customer_type.rb +33 -0
  488. data/lib/ledger_sync/ledgers/netsuite/type/deserializer_entity_type.rb +30 -0
  489. data/lib/ledger_sync/ledgers/netsuite/type/deserializer_subsidiary_type.rb +33 -0
  490. data/lib/ledger_sync/ledgers/netsuite/vendor/deserializer.rb +30 -0
  491. data/lib/ledger_sync/ledgers/netsuite/vendor/operations/create.rb +27 -0
  492. data/lib/ledger_sync/ledgers/netsuite/vendor/operations/delete.rb +27 -0
  493. data/lib/ledger_sync/ledgers/netsuite/vendor/operations/find.rb +27 -0
  494. data/lib/ledger_sync/ledgers/netsuite/vendor/operations/update.rb +27 -0
  495. data/lib/ledger_sync/ledgers/netsuite/vendor/searcher.rb +12 -0
  496. data/lib/ledger_sync/ledgers/netsuite/vendor/searcher_deserializer.rb +21 -0
  497. data/lib/ledger_sync/ledgers/netsuite/vendor/serializer.rb +30 -0
  498. data/lib/ledger_sync/ledgers/netsuite_soap/client.rb +92 -0
  499. data/lib/ledger_sync/ledgers/netsuite_soap/config.rb +5 -0
  500. data/lib/ledger_sync/ledgers/netsuite_soap/customer/operations/create.rb +64 -0
  501. data/lib/ledger_sync/ledgers/netsuite_soap/customer/operations/find.rb +49 -0
  502. data/lib/ledger_sync/ledgers/netsuite_soap/operation.rb +40 -0
  503. data/lib/ledger_sync/ledgers/netsuite_soap/operation/create.rb +29 -0
  504. data/lib/ledger_sync/ledgers/netsuite_soap/operation/find.rb +15 -0
  505. data/lib/ledger_sync/ledgers/netsuite_soap/resource.rb +10 -0
  506. data/lib/ledger_sync/ledgers/netsuite_soap/resources/customer.rb +29 -0
  507. data/lib/ledger_sync/ledgers/netsuite_soap/resources/subsidiary.rb +12 -0
  508. data/lib/ledger_sync/ledgers/netsuite_soap/subsidiary/operations/create.rb +42 -0
  509. data/lib/ledger_sync/ledgers/netsuite_soap/subsidiary/operations/find.rb +38 -0
  510. data/lib/ledger_sync/ledgers/operation.rb +181 -0
  511. data/lib/ledger_sync/ledgers/quickbooks_online/account/deserializer.rb +43 -0
  512. data/lib/ledger_sync/ledgers/quickbooks_online/account/operations/create.rb +26 -0
  513. data/lib/ledger_sync/ledgers/quickbooks_online/account/operations/find.rb +26 -0
  514. data/lib/ledger_sync/ledgers/quickbooks_online/account/operations/update.rb +30 -0
  515. data/lib/ledger_sync/ledgers/quickbooks_online/account/searcher.rb +15 -0
  516. data/lib/ledger_sync/ledgers/quickbooks_online/account/serializer.rb +37 -0
  517. data/lib/ledger_sync/ledgers/quickbooks_online/bill/deserializer.rb +45 -0
  518. data/lib/ledger_sync/ledgers/quickbooks_online/bill/operations/create.rb +27 -0
  519. data/lib/ledger_sync/ledgers/quickbooks_online/bill/operations/find.rb +27 -0
  520. data/lib/ledger_sync/ledgers/quickbooks_online/bill/operations/update.rb +27 -0
  521. data/lib/ledger_sync/ledgers/quickbooks_online/bill/searcher.rb +14 -0
  522. data/lib/ledger_sync/ledgers/quickbooks_online/bill/serializer.rb +44 -0
  523. data/lib/ledger_sync/ledgers/quickbooks_online/bill_line_item/deserializer.rb +25 -0
  524. data/lib/ledger_sync/ledgers/quickbooks_online/bill_line_item/serializer.rb +29 -0
  525. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment/deserializer.rb +59 -0
  526. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment/operations/create.rb +33 -0
  527. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment/operations/find.rb +33 -0
  528. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment/operations/update.rb +33 -0
  529. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment/serializer.rb +77 -0
  530. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment_line_item/deserializer.rb +18 -0
  531. data/lib/ledger_sync/ledgers/quickbooks_online/bill_payment_line_item/serializer.rb +18 -0
  532. data/lib/ledger_sync/ledgers/quickbooks_online/client.rb +258 -0
  533. data/lib/ledger_sync/ledgers/quickbooks_online/config.rb +8 -0
  534. data/lib/ledger_sync/ledgers/quickbooks_online/currency/deserializer.rb +17 -0
  535. data/lib/ledger_sync/ledgers/quickbooks_online/currency/serializer.rb +16 -0
  536. data/lib/ledger_sync/ledgers/quickbooks_online/customer/deserializer.rb +19 -0
  537. data/lib/ledger_sync/ledgers/quickbooks_online/customer/operations/create.rb +26 -0
  538. data/lib/ledger_sync/ledgers/quickbooks_online/customer/operations/find.rb +26 -0
  539. data/lib/ledger_sync/ledgers/quickbooks_online/customer/operations/update.rb +26 -0
  540. data/lib/ledger_sync/ledgers/quickbooks_online/customer/searcher.rb +13 -0
  541. data/lib/ledger_sync/ledgers/quickbooks_online/customer/serializer.rb +19 -0
  542. data/lib/ledger_sync/ledgers/quickbooks_online/dashboard_url_helper.rb +34 -0
  543. data/lib/ledger_sync/ledgers/quickbooks_online/department/deserializer.rb +28 -0
  544. data/lib/ledger_sync/ledgers/quickbooks_online/department/operations/create.rb +23 -0
  545. data/lib/ledger_sync/ledgers/quickbooks_online/department/operations/find.rb +23 -0
  546. data/lib/ledger_sync/ledgers/quickbooks_online/department/operations/update.rb +25 -0
  547. data/lib/ledger_sync/ledgers/quickbooks_online/department/searcher.rb +17 -0
  548. data/lib/ledger_sync/ledgers/quickbooks_online/department/serializer.rb +49 -0
  549. data/lib/ledger_sync/ledgers/quickbooks_online/deposit/deserializer.rb +39 -0
  550. data/lib/ledger_sync/ledgers/quickbooks_online/deposit/operations/create.rb +25 -0
  551. data/lib/ledger_sync/ledgers/quickbooks_online/deposit/operations/find.rb +25 -0
  552. data/lib/ledger_sync/ledgers/quickbooks_online/deposit/operations/update.rb +27 -0
  553. data/lib/ledger_sync/ledgers/quickbooks_online/deposit/searcher.rb +13 -0
  554. data/lib/ledger_sync/ledgers/quickbooks_online/deposit/serializer.rb +39 -0
  555. data/lib/ledger_sync/ledgers/quickbooks_online/deposit_line_item/deserializer.rb +38 -0
  556. data/lib/ledger_sync/ledgers/quickbooks_online/deposit_line_item/serializer.rb +41 -0
  557. data/lib/ledger_sync/ledgers/quickbooks_online/deserializer.rb +98 -0
  558. data/lib/ledger_sync/ledgers/quickbooks_online/expense/deserializer.rb +58 -0
  559. data/lib/ledger_sync/ledgers/quickbooks_online/expense/operations/create.rb +28 -0
  560. data/lib/ledger_sync/ledgers/quickbooks_online/expense/operations/find.rb +28 -0
  561. data/lib/ledger_sync/ledgers/quickbooks_online/expense/operations/update.rb +28 -0
  562. data/lib/ledger_sync/ledgers/quickbooks_online/expense/searcher.rb +14 -0
  563. data/lib/ledger_sync/ledgers/quickbooks_online/expense/serializer.rb +59 -0
  564. data/lib/ledger_sync/ledgers/quickbooks_online/expense_line_item/deserializer.rb +25 -0
  565. data/lib/ledger_sync/ledgers/quickbooks_online/expense_line_item/serializer.rb +27 -0
  566. data/lib/ledger_sync/ledgers/quickbooks_online/invoice/deserializer.rb +35 -0
  567. data/lib/ledger_sync/ledgers/quickbooks_online/invoice/operations/create.rb +27 -0
  568. data/lib/ledger_sync/ledgers/quickbooks_online/invoice/operations/find.rb +25 -0
  569. data/lib/ledger_sync/ledgers/quickbooks_online/invoice/operations/update.rb +25 -0
  570. data/lib/ledger_sync/ledgers/quickbooks_online/invoice/serializer.rb +35 -0
  571. data/lib/ledger_sync/ledgers/quickbooks_online/invoice_sales_line_item/deserializer.rb +25 -0
  572. data/lib/ledger_sync/ledgers/quickbooks_online/invoice_sales_line_item/serializer.rb +29 -0
  573. data/lib/ledger_sync/ledgers/quickbooks_online/item/deserializer.rb +13 -0
  574. data/lib/ledger_sync/ledgers/quickbooks_online/item/serializer.rb +12 -0
  575. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/deserializer.rb +33 -0
  576. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/operations/create.rb +23 -0
  577. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/operations/find.rb +23 -0
  578. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/operations/update.rb +23 -0
  579. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/searcher.rb +14 -0
  580. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry/serializer.rb +33 -0
  581. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry_line_item/deserializer.rb +32 -0
  582. data/lib/ledger_sync/ledgers/quickbooks_online/journal_entry_line_item/serializer.rb +36 -0
  583. data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/deserializer.rb +29 -0
  584. data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/operations/create.rb +23 -0
  585. data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/operations/find.rb +23 -0
  586. data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/operations/update.rb +25 -0
  587. data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/searcher.rb +15 -0
  588. data/lib/ledger_sync/ledgers/quickbooks_online/ledger_class/serializer.rb +24 -0
  589. data/lib/ledger_sync/ledgers/quickbooks_online/oauth_client.rb +93 -0
  590. data/lib/ledger_sync/ledgers/quickbooks_online/operation.rb +61 -0
  591. data/lib/ledger_sync/ledgers/quickbooks_online/operation/create.rb +26 -0
  592. data/lib/ledger_sync/ledgers/quickbooks_online/operation/find.rb +25 -0
  593. data/lib/ledger_sync/ledgers/quickbooks_online/operation/full_update.rb +44 -0
  594. data/lib/ledger_sync/ledgers/quickbooks_online/operation/sparse_update.rb +29 -0
  595. data/lib/ledger_sync/ledgers/quickbooks_online/payment/deserializer.rb +48 -0
  596. data/lib/ledger_sync/ledgers/quickbooks_online/payment/operations/create.rb +30 -0
  597. data/lib/ledger_sync/ledgers/quickbooks_online/payment/operations/find.rb +28 -0
  598. data/lib/ledger_sync/ledgers/quickbooks_online/payment/operations/update.rb +28 -0
  599. data/lib/ledger_sync/ledgers/quickbooks_online/payment/serializer.rb +48 -0
  600. data/lib/ledger_sync/ledgers/quickbooks_online/payment_line_item/deserializer.rb +18 -0
  601. data/lib/ledger_sync/ledgers/quickbooks_online/payment_line_item/serializer.rb +18 -0
  602. data/lib/ledger_sync/ledgers/quickbooks_online/preferences/deserializer.rb +43 -0
  603. data/lib/ledger_sync/ledgers/quickbooks_online/preferences/operations/find.rb +30 -0
  604. data/lib/ledger_sync/ledgers/quickbooks_online/preferences/serializer.rb +43 -0
  605. data/lib/ledger_sync/ledgers/quickbooks_online/request.rb +98 -0
  606. data/lib/ledger_sync/ledgers/quickbooks_online/resource.rb +10 -0
  607. data/lib/ledger_sync/ledgers/quickbooks_online/resources/account.rb +355 -0
  608. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill.rb +31 -0
  609. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill_line_item.rb +21 -0
  610. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill_payment.rb +42 -0
  611. data/lib/ledger_sync/ledgers/quickbooks_online/resources/bill_payment_line_item.rb +19 -0
  612. data/lib/ledger_sync/ledgers/quickbooks_online/resources/currency.rb +13 -0
  613. data/lib/ledger_sync/ledgers/quickbooks_online/resources/customer.rb +19 -0
  614. data/lib/ledger_sync/ledgers/quickbooks_online/resources/department.rb +16 -0
  615. data/lib/ledger_sync/ledgers/quickbooks_online/resources/deposit.rb +28 -0
  616. data/lib/ledger_sync/ledgers/quickbooks_online/resources/deposit_line_item.rb +25 -0
  617. data/lib/ledger_sync/ledgers/quickbooks_online/resources/expense.rb +40 -0
  618. data/lib/ledger_sync/ledgers/quickbooks_online/resources/expense_line_item.rb +21 -0
  619. data/lib/ledger_sync/ledgers/quickbooks_online/resources/invoice.rb +28 -0
  620. data/lib/ledger_sync/ledgers/quickbooks_online/resources/invoice_sales_line_item.rb +21 -0
  621. data/lib/ledger_sync/ledgers/quickbooks_online/resources/item.rb +11 -0
  622. data/lib/ledger_sync/ledgers/quickbooks_online/resources/journal_entry.rb +24 -0
  623. data/lib/ledger_sync/ledgers/quickbooks_online/resources/journal_entry_line_item.rb +29 -0
  624. data/lib/ledger_sync/ledgers/quickbooks_online/resources/ledger_class.rb +16 -0
  625. data/lib/ledger_sync/ledgers/quickbooks_online/resources/payment.rb +31 -0
  626. data/lib/ledger_sync/ledgers/quickbooks_online/resources/payment_line_item.rb +19 -0
  627. data/lib/ledger_sync/ledgers/quickbooks_online/resources/preferences.rb +24 -0
  628. data/lib/ledger_sync/ledgers/quickbooks_online/resources/primary_email_addr.rb +11 -0
  629. data/lib/ledger_sync/ledgers/quickbooks_online/resources/primary_phone.rb +11 -0
  630. data/lib/ledger_sync/ledgers/quickbooks_online/resources/subsidiary.rb +12 -0
  631. data/lib/ledger_sync/ledgers/quickbooks_online/resources/transfer.rb +24 -0
  632. data/lib/ledger_sync/ledgers/quickbooks_online/resources/vendor.rb +23 -0
  633. data/lib/ledger_sync/ledgers/quickbooks_online/searcher.rb +60 -0
  634. data/lib/ledger_sync/ledgers/quickbooks_online/serialization/type/amount_float_to_integer_type.rb +21 -0
  635. data/lib/ledger_sync/ledgers/quickbooks_online/serialization/type/deserialize_transaction_reference_type.rb +30 -0
  636. data/lib/ledger_sync/ledgers/quickbooks_online/serialization/type/integer_to_amount_float_type.rb +21 -0
  637. data/lib/ledger_sync/ledgers/quickbooks_online/serialization/type/serialize_transaction_reference_type.rb +30 -0
  638. data/lib/ledger_sync/ledgers/quickbooks_online/serializer.rb +71 -0
  639. data/lib/ledger_sync/ledgers/quickbooks_online/serialziation/type/mapping_type.rb +25 -0
  640. data/lib/ledger_sync/ledgers/quickbooks_online/transfer/deserializer.rb +34 -0
  641. data/lib/ledger_sync/ledgers/quickbooks_online/transfer/operations/create.rb +24 -0
  642. data/lib/ledger_sync/ledgers/quickbooks_online/transfer/operations/find.rb +24 -0
  643. data/lib/ledger_sync/ledgers/quickbooks_online/transfer/operations/update.rb +26 -0
  644. data/lib/ledger_sync/ledgers/quickbooks_online/transfer/serializer.rb +34 -0
  645. data/lib/ledger_sync/ledgers/quickbooks_online/util/error_matcher.rb +54 -0
  646. data/lib/ledger_sync/ledgers/quickbooks_online/util/error_parser.rb +27 -0
  647. data/lib/ledger_sync/ledgers/quickbooks_online/util/ledger_error_parser.rb +103 -0
  648. data/lib/ledger_sync/ledgers/quickbooks_online/util/operation_error_parser.rb +99 -0
  649. data/lib/ledger_sync/ledgers/quickbooks_online/vendor/deserializer.rb +25 -0
  650. data/lib/ledger_sync/ledgers/quickbooks_online/vendor/operations/create.rb +27 -0
  651. data/lib/ledger_sync/ledgers/quickbooks_online/vendor/operations/find.rb +27 -0
  652. data/lib/ledger_sync/ledgers/quickbooks_online/vendor/operations/update.rb +27 -0
  653. data/lib/ledger_sync/ledgers/quickbooks_online/vendor/searcher.rb +15 -0
  654. data/lib/ledger_sync/ledgers/quickbooks_online/vendor/serializer.rb +25 -0
  655. data/lib/ledger_sync/ledgers/quickbooks_online/webhook.rb +58 -0
  656. data/lib/ledger_sync/ledgers/quickbooks_online/webhook_event.rb +79 -0
  657. data/lib/ledger_sync/ledgers/quickbooks_online/webhook_notification.rb +42 -0
  658. data/lib/ledger_sync/ledgers/request.rb +57 -0
  659. data/lib/ledger_sync/ledgers/response.rb +55 -0
  660. data/lib/ledger_sync/ledgers/searcher.rb +73 -0
  661. data/lib/ledger_sync/ledgers/stripe/client.rb +37 -0
  662. data/lib/ledger_sync/ledgers/stripe/config.rb +5 -0
  663. data/lib/ledger_sync/ledgers/stripe/customer/operations/create.rb +44 -0
  664. data/lib/ledger_sync/ledgers/stripe/customer/operations/delete.rb +35 -0
  665. data/lib/ledger_sync/ledgers/stripe/customer/operations/find.rb +44 -0
  666. data/lib/ledger_sync/ledgers/stripe/customer/operations/update.rb +43 -0
  667. data/lib/ledger_sync/ledgers/stripe/dashboard_url_helper.rb +21 -0
  668. data/lib/ledger_sync/ledgers/stripe/operation.rb +35 -0
  669. data/lib/ledger_sync/ledgers/stripe/operation/create.rb +17 -0
  670. data/lib/ledger_sync/ledgers/stripe/operation/delete.rb +17 -0
  671. data/lib/ledger_sync/ledgers/stripe/operation/find.rb +15 -0
  672. data/lib/ledger_sync/ledgers/stripe/operation/update.rb +17 -0
  673. data/lib/ledger_sync/ledgers/stripe/resource.rb +10 -0
  674. data/lib/ledger_sync/ledgers/stripe/resources/customer.rb +13 -0
  675. data/lib/ledger_sync/operation.rb +23 -0
  676. data/lib/ledger_sync/resource.rb +22 -10
  677. data/lib/ledger_sync/resource_adaptor.rb +52 -0
  678. data/lib/ledger_sync/resource_attribute.rb +31 -9
  679. data/lib/ledger_sync/resource_attribute/dirty_mixin.rb +4 -0
  680. data/lib/ledger_sync/resource_attribute/mixin.rb +14 -24
  681. data/lib/ledger_sync/resource_attribute/reference/many.rb +21 -23
  682. data/lib/ledger_sync/resource_attribute/reference/one.rb +16 -5
  683. data/lib/ledger_sync/resource_attribute_set.rb +3 -7
  684. data/lib/ledger_sync/result.rb +3 -3
  685. data/lib/ledger_sync/serialization/attribute.rb +41 -0
  686. data/lib/ledger_sync/serialization/attribute_set_mixin.rb +27 -0
  687. data/lib/ledger_sync/serialization/deserializer_attribute.rb +78 -0
  688. data/lib/ledger_sync/serialization/deserializer_attribute_set.rb +22 -0
  689. data/lib/ledger_sync/serialization/mixin.rb +70 -0
  690. data/lib/ledger_sync/serialization/serializer_attribute.rb +64 -0
  691. data/lib/ledger_sync/serialization/serializer_attribute_set.rb +22 -0
  692. data/lib/ledger_sync/serialization/type/deserializer_references_many_type.rb +26 -0
  693. data/lib/ledger_sync/serialization/type/deserializer_references_one_type.rb +12 -0
  694. data/lib/ledger_sync/serialization/type/deserializer_type.rb +29 -0
  695. data/lib/ledger_sync/serialization/type/format_date_type.rb +23 -0
  696. data/lib/ledger_sync/serialization/type/mapping_type.rb +23 -0
  697. data/lib/ledger_sync/serialization/type/parse_date_type.rb +23 -0
  698. data/lib/ledger_sync/serialization/type/serializer_references_many_type.rb +21 -0
  699. data/lib/ledger_sync/serialization/type/serializer_references_one_type.rb +12 -0
  700. data/lib/ledger_sync/serialization/type/serializer_type.rb +23 -0
  701. data/lib/ledger_sync/serializer.rb +95 -0
  702. data/lib/ledger_sync/type/boolean.rb +2 -0
  703. data/lib/ledger_sync/type/date.rb +3 -1
  704. data/lib/ledger_sync/type/float.rb +2 -0
  705. data/lib/ledger_sync/type/hash.rb +38 -0
  706. data/lib/ledger_sync/type/id.rb +8 -2
  707. data/lib/ledger_sync/type/integer.rb +2 -0
  708. data/lib/ledger_sync/type/reference_many.rb +15 -5
  709. data/lib/ledger_sync/type/reference_one.rb +9 -18
  710. data/lib/ledger_sync/type/string.rb +2 -0
  711. data/lib/ledger_sync/type/string_from_set.rb +43 -0
  712. data/lib/ledger_sync/type/value_mixin.rb +37 -7
  713. data/lib/ledger_sync/util/mixins/delegate_iterable_methods_mixin.rb +43 -0
  714. data/lib/ledger_sync/util/mixins/dupable_mixin.rb +13 -0
  715. data/lib/ledger_sync/util/mixins/resource_registerable_mixin.rb +29 -0
  716. data/lib/ledger_sync/util/read_only_object.rb +54 -0
  717. data/lib/ledger_sync/util/resource_converter.rb +113 -0
  718. data/lib/ledger_sync/util/resource_converter/attribute.rb +131 -0
  719. data/lib/ledger_sync/util/resource_converter/attribute_set.rb +42 -0
  720. data/lib/ledger_sync/util/resource_converter/type/references_many_type.rb +27 -0
  721. data/lib/ledger_sync/util/resource_converter/type/references_one_type.rb +14 -0
  722. data/lib/ledger_sync/util/resource_converter/type/resource_converter_type.rb +26 -0
  723. data/lib/ledger_sync/util/resources_builder.rb +19 -11
  724. data/lib/ledger_sync/util/string_helpers.rb +3 -3
  725. data/lib/ledger_sync/util/url_helpers.rb +38 -0
  726. data/lib/ledger_sync/util/validator.rb +3 -1
  727. data/lib/ledger_sync/version.rb +1 -1
  728. data/licenses/BSL.txt +97 -0
  729. data/licenses/documentation_site.txt +7 -0
  730. metadata +712 -263
  731. data/_config.yml +0 -1
  732. data/lib/ledger_sync/adaptor_configuration.rb +0 -61
  733. data/lib/ledger_sync/adaptor_configuration_store.rb +0 -56
  734. data/lib/ledger_sync/adaptors/adaptor.rb +0 -74
  735. data/lib/ledger_sync/adaptors/contract.rb +0 -16
  736. data/lib/ledger_sync/adaptors/ledger_serializer.rb +0 -151
  737. data/lib/ledger_sync/adaptors/ledger_serializer_attribute.rb +0 -178
  738. data/lib/ledger_sync/adaptors/ledger_serializer_attribute_set.rb +0 -58
  739. data/lib/ledger_sync/adaptors/ledger_serializer_type/mapping_type.rb +0 -41
  740. data/lib/ledger_sync/adaptors/ledger_serializer_type/references_many_type.rb +0 -24
  741. data/lib/ledger_sync/adaptors/ledger_serializer_type/references_one_type.rb +0 -22
  742. data/lib/ledger_sync/adaptors/ledger_serializer_type/value_type.rb +0 -17
  743. data/lib/ledger_sync/adaptors/mixins/infer_adaptor_class_mixin.rb +0 -24
  744. data/lib/ledger_sync/adaptors/mixins/infer_ledger_serializer_mixin.rb +0 -31
  745. data/lib/ledger_sync/adaptors/mixins/infer_resource_class_mixin.rb +0 -22
  746. data/lib/ledger_sync/adaptors/mixins/offset_and_limit_pagination_searcher_mixin.rb +0 -37
  747. data/lib/ledger_sync/adaptors/netsuite/account/ledger_deserializer.rb +0 -24
  748. data/lib/ledger_sync/adaptors/netsuite/account/ledger_serializer.rb +0 -22
  749. data/lib/ledger_sync/adaptors/netsuite/account/operations/create.rb +0 -28
  750. data/lib/ledger_sync/adaptors/netsuite/account/operations/find.rb +0 -28
  751. data/lib/ledger_sync/adaptors/netsuite/account/searcher.rb +0 -28
  752. data/lib/ledger_sync/adaptors/netsuite/adaptor.rb +0 -145
  753. data/lib/ledger_sync/adaptors/netsuite/config.rb +0 -6
  754. data/lib/ledger_sync/adaptors/netsuite/currency/deledger_serializer.rb +0 -28
  755. data/lib/ledger_sync/adaptors/netsuite/currency/ledger_serializer.rb +0 -25
  756. data/lib/ledger_sync/adaptors/netsuite/currency/operations/create.rb +0 -25
  757. data/lib/ledger_sync/adaptors/netsuite/currency/operations/delete.rb +0 -23
  758. data/lib/ledger_sync/adaptors/netsuite/currency/operations/find.rb +0 -23
  759. data/lib/ledger_sync/adaptors/netsuite/currency/operations/update.rb +0 -23
  760. data/lib/ledger_sync/adaptors/netsuite/customer/ledger_deserializer.rb +0 -27
  761. data/lib/ledger_sync/adaptors/netsuite/customer/ledger_serializer.rb +0 -38
  762. data/lib/ledger_sync/adaptors/netsuite/customer/operations/create.rb +0 -24
  763. data/lib/ledger_sync/adaptors/netsuite/customer/operations/delete.rb +0 -24
  764. data/lib/ledger_sync/adaptors/netsuite/customer/operations/find.rb +0 -24
  765. data/lib/ledger_sync/adaptors/netsuite/customer/operations/update.rb +0 -24
  766. data/lib/ledger_sync/adaptors/netsuite/ledger_serializer.rb +0 -30
  767. data/lib/ledger_sync/adaptors/netsuite/ledger_serializer_type/reference_type.rb +0 -24
  768. data/lib/ledger_sync/adaptors/netsuite/ledger_serializer_type/subsidiary_type.rb +0 -22
  769. data/lib/ledger_sync/adaptors/netsuite/operation.rb +0 -25
  770. data/lib/ledger_sync/adaptors/netsuite/operation/create.rb +0 -65
  771. data/lib/ledger_sync/adaptors/netsuite/operation/delete.rb +0 -49
  772. data/lib/ledger_sync/adaptors/netsuite/operation/find.rb +0 -56
  773. data/lib/ledger_sync/adaptors/netsuite/operation/update.rb +0 -68
  774. data/lib/ledger_sync/adaptors/netsuite/record/http_method.rb +0 -38
  775. data/lib/ledger_sync/adaptors/netsuite/record/metadata.rb +0 -75
  776. data/lib/ledger_sync/adaptors/netsuite/record/property.rb +0 -45
  777. data/lib/ledger_sync/adaptors/netsuite/searcher.rb +0 -17
  778. data/lib/ledger_sync/adaptors/netsuite/token.rb +0 -162
  779. data/lib/ledger_sync/adaptors/netsuite/vendor/ledger_deserializer.rb +0 -32
  780. data/lib/ledger_sync/adaptors/netsuite/vendor/ledger_serializer.rb +0 -35
  781. data/lib/ledger_sync/adaptors/netsuite/vendor/operations/create.rb +0 -27
  782. data/lib/ledger_sync/adaptors/netsuite/vendor/operations/delete.rb +0 -27
  783. data/lib/ledger_sync/adaptors/netsuite/vendor/operations/find.rb +0 -27
  784. data/lib/ledger_sync/adaptors/netsuite/vendor/operations/update.rb +0 -27
  785. data/lib/ledger_sync/adaptors/netsuite_soap/adaptor.rb +0 -92
  786. data/lib/ledger_sync/adaptors/netsuite_soap/config.rb +0 -5
  787. data/lib/ledger_sync/adaptors/netsuite_soap/customer/ledger_serializer.rb +0 -13
  788. data/lib/ledger_sync/adaptors/netsuite_soap/customer/operations/create.rb +0 -64
  789. data/lib/ledger_sync/adaptors/netsuite_soap/customer/operations/find.rb +0 -49
  790. data/lib/ledger_sync/adaptors/netsuite_soap/ledger_serializer.rb +0 -25
  791. data/lib/ledger_sync/adaptors/netsuite_soap/operation.rb +0 -40
  792. data/lib/ledger_sync/adaptors/netsuite_soap/operation/create.rb +0 -29
  793. data/lib/ledger_sync/adaptors/netsuite_soap/operation/find.rb +0 -15
  794. data/lib/ledger_sync/adaptors/netsuite_soap/subsidiary/operations/create.rb +0 -42
  795. data/lib/ledger_sync/adaptors/netsuite_soap/subsidiary/operations/find.rb +0 -38
  796. data/lib/ledger_sync/adaptors/operation.rb +0 -215
  797. data/lib/ledger_sync/adaptors/quickbooks_online/account/ledger_serializer.rb +0 -37
  798. data/lib/ledger_sync/adaptors/quickbooks_online/account/operations/create.rb +0 -26
  799. data/lib/ledger_sync/adaptors/quickbooks_online/account/operations/find.rb +0 -26
  800. data/lib/ledger_sync/adaptors/quickbooks_online/account/operations/update.rb +0 -30
  801. data/lib/ledger_sync/adaptors/quickbooks_online/account/searcher.rb +0 -15
  802. data/lib/ledger_sync/adaptors/quickbooks_online/adaptor.rb +0 -258
  803. data/lib/ledger_sync/adaptors/quickbooks_online/bill/ledger_serializer.rb +0 -43
  804. data/lib/ledger_sync/adaptors/quickbooks_online/bill/operations/create.rb +0 -26
  805. data/lib/ledger_sync/adaptors/quickbooks_online/bill/operations/find.rb +0 -26
  806. data/lib/ledger_sync/adaptors/quickbooks_online/bill/operations/update.rb +0 -26
  807. data/lib/ledger_sync/adaptors/quickbooks_online/bill/searcher.rb +0 -14
  808. data/lib/ledger_sync/adaptors/quickbooks_online/bill_line_item/ledger_serializer.rb +0 -27
  809. data/lib/ledger_sync/adaptors/quickbooks_online/config.rb +0 -8
  810. data/lib/ledger_sync/adaptors/quickbooks_online/currency/ledger_serializer.rb +0 -17
  811. data/lib/ledger_sync/adaptors/quickbooks_online/customer/ledger_serializer.rb +0 -23
  812. data/lib/ledger_sync/adaptors/quickbooks_online/customer/operations/create.rb +0 -22
  813. data/lib/ledger_sync/adaptors/quickbooks_online/customer/operations/find.rb +0 -22
  814. data/lib/ledger_sync/adaptors/quickbooks_online/customer/operations/update.rb +0 -24
  815. data/lib/ledger_sync/adaptors/quickbooks_online/customer/searcher.rb +0 -13
  816. data/lib/ledger_sync/adaptors/quickbooks_online/dashboard_url_helper.rb +0 -57
  817. data/lib/ledger_sync/adaptors/quickbooks_online/department/ledger_serializer.rb +0 -38
  818. data/lib/ledger_sync/adaptors/quickbooks_online/department/operations/create.rb +0 -23
  819. data/lib/ledger_sync/adaptors/quickbooks_online/department/operations/find.rb +0 -23
  820. data/lib/ledger_sync/adaptors/quickbooks_online/department/operations/update.rb +0 -25
  821. data/lib/ledger_sync/adaptors/quickbooks_online/department/searcher.rb +0 -17
  822. data/lib/ledger_sync/adaptors/quickbooks_online/deposit/ledger_serializer.rb +0 -40
  823. data/lib/ledger_sync/adaptors/quickbooks_online/deposit/operations/create.rb +0 -25
  824. data/lib/ledger_sync/adaptors/quickbooks_online/deposit/operations/find.rb +0 -25
  825. data/lib/ledger_sync/adaptors/quickbooks_online/deposit/operations/update.rb +0 -27
  826. data/lib/ledger_sync/adaptors/quickbooks_online/deposit/searcher.rb +0 -13
  827. data/lib/ledger_sync/adaptors/quickbooks_online/deposit_line_item/ledger_serializer.rb +0 -31
  828. data/lib/ledger_sync/adaptors/quickbooks_online/expense/ledger_serializer.rb +0 -49
  829. data/lib/ledger_sync/adaptors/quickbooks_online/expense/operations/create.rb +0 -27
  830. data/lib/ledger_sync/adaptors/quickbooks_online/expense/operations/find.rb +0 -27
  831. data/lib/ledger_sync/adaptors/quickbooks_online/expense/operations/update.rb +0 -27
  832. data/lib/ledger_sync/adaptors/quickbooks_online/expense/searcher.rb +0 -14
  833. data/lib/ledger_sync/adaptors/quickbooks_online/expense_line_item/ledger_serializer.rb +0 -27
  834. data/lib/ledger_sync/adaptors/quickbooks_online/invoice/ledger_serializer.rb +0 -36
  835. data/lib/ledger_sync/adaptors/quickbooks_online/invoice/operations/create.rb +0 -27
  836. data/lib/ledger_sync/adaptors/quickbooks_online/invoice/operations/find.rb +0 -25
  837. data/lib/ledger_sync/adaptors/quickbooks_online/invoice/operations/update.rb +0 -25
  838. data/lib/ledger_sync/adaptors/quickbooks_online/invoice_sales_line_item/ledger_serializer.rb +0 -30
  839. data/lib/ledger_sync/adaptors/quickbooks_online/item/ledger_serializer.rb +0 -13
  840. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/ledger_serializer.rb +0 -34
  841. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/operations/create.rb +0 -23
  842. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/operations/find.rb +0 -23
  843. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/operations/update.rb +0 -23
  844. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry/searcher.rb +0 -14
  845. data/lib/ledger_sync/adaptors/quickbooks_online/journal_entry_line_item/ledger_serializer.rb +0 -31
  846. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_class/ledger_serializer.rb +0 -25
  847. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_class/operations/create.rb +0 -23
  848. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_class/operations/find.rb +0 -23
  849. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_class/operations/update.rb +0 -25
  850. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_class/searcher.rb +0 -15
  851. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer.rb +0 -131
  852. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/account_sub_type.rb +0 -305
  853. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/account_type.rb +0 -51
  854. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/amount_type.rb +0 -23
  855. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/classification_type.rb +0 -23
  856. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/date_type.rb +0 -23
  857. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/entity_reference_type.rb +0 -49
  858. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/journal_entry_line_item_type.rb +0 -20
  859. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/payment_type.rb +0 -21
  860. data/lib/ledger_sync/adaptors/quickbooks_online/ledger_serializer_type/transaction_reference_type.rb +0 -49
  861. data/lib/ledger_sync/adaptors/quickbooks_online/oauth_client.rb +0 -93
  862. data/lib/ledger_sync/adaptors/quickbooks_online/operation.rb +0 -60
  863. data/lib/ledger_sync/adaptors/quickbooks_online/operation/create.rb +0 -26
  864. data/lib/ledger_sync/adaptors/quickbooks_online/operation/find.rb +0 -31
  865. data/lib/ledger_sync/adaptors/quickbooks_online/operation/full_update.rb +0 -45
  866. data/lib/ledger_sync/adaptors/quickbooks_online/operation/sparse_update.rb +0 -29
  867. data/lib/ledger_sync/adaptors/quickbooks_online/payment/ledger_serializer.rb +0 -50
  868. data/lib/ledger_sync/adaptors/quickbooks_online/payment/operations/create.rb +0 -30
  869. data/lib/ledger_sync/adaptors/quickbooks_online/payment/operations/find.rb +0 -28
  870. data/lib/ledger_sync/adaptors/quickbooks_online/payment/operations/update.rb +0 -28
  871. data/lib/ledger_sync/adaptors/quickbooks_online/payment_line_item/ledger_serializer.rb +0 -19
  872. data/lib/ledger_sync/adaptors/quickbooks_online/request.rb +0 -98
  873. data/lib/ledger_sync/adaptors/quickbooks_online/searcher.rb +0 -61
  874. data/lib/ledger_sync/adaptors/quickbooks_online/transfer/ledger_serializer.rb +0 -36
  875. data/lib/ledger_sync/adaptors/quickbooks_online/transfer/operations/create.rb +0 -24
  876. data/lib/ledger_sync/adaptors/quickbooks_online/transfer/operations/find.rb +0 -24
  877. data/lib/ledger_sync/adaptors/quickbooks_online/transfer/operations/update.rb +0 -26
  878. data/lib/ledger_sync/adaptors/quickbooks_online/util/adaptor_error_parser.rb +0 -103
  879. data/lib/ledger_sync/adaptors/quickbooks_online/util/error_matcher.rb +0 -54
  880. data/lib/ledger_sync/adaptors/quickbooks_online/util/error_parser.rb +0 -27
  881. data/lib/ledger_sync/adaptors/quickbooks_online/util/operation_error_parser.rb +0 -99
  882. data/lib/ledger_sync/adaptors/quickbooks_online/vendor/ledger_serializer.rb +0 -25
  883. data/lib/ledger_sync/adaptors/quickbooks_online/vendor/operations/create.rb +0 -27
  884. data/lib/ledger_sync/adaptors/quickbooks_online/vendor/operations/find.rb +0 -27
  885. data/lib/ledger_sync/adaptors/quickbooks_online/vendor/operations/update.rb +0 -27
  886. data/lib/ledger_sync/adaptors/quickbooks_online/vendor/searcher.rb +0 -15
  887. data/lib/ledger_sync/adaptors/quickbooks_online/webhook.rb +0 -58
  888. data/lib/ledger_sync/adaptors/quickbooks_online/webhook_event.rb +0 -79
  889. data/lib/ledger_sync/adaptors/quickbooks_online/webhook_notification.rb +0 -42
  890. data/lib/ledger_sync/adaptors/request.rb +0 -53
  891. data/lib/ledger_sync/adaptors/response.rb +0 -55
  892. data/lib/ledger_sync/adaptors/searcher.rb +0 -68
  893. data/lib/ledger_sync/adaptors/stripe/adaptor.rb +0 -45
  894. data/lib/ledger_sync/adaptors/stripe/config.rb +0 -6
  895. data/lib/ledger_sync/adaptors/stripe/customer/operations/create.rb +0 -44
  896. data/lib/ledger_sync/adaptors/stripe/customer/operations/delete.rb +0 -35
  897. data/lib/ledger_sync/adaptors/stripe/customer/operations/find.rb +0 -44
  898. data/lib/ledger_sync/adaptors/stripe/customer/operations/update.rb +0 -43
  899. data/lib/ledger_sync/adaptors/stripe/operation.rb +0 -35
  900. data/lib/ledger_sync/adaptors/stripe/operation/create.rb +0 -17
  901. data/lib/ledger_sync/adaptors/stripe/operation/delete.rb +0 -17
  902. data/lib/ledger_sync/adaptors/stripe/operation/find.rb +0 -15
  903. data/lib/ledger_sync/adaptors/stripe/operation/update.rb +0 -17
  904. data/lib/ledger_sync/adaptors/test/account/operations/create.rb +0 -57
  905. data/lib/ledger_sync/adaptors/test/account/operations/find.rb +0 -42
  906. data/lib/ledger_sync/adaptors/test/account/operations/invalid.rb +0 -26
  907. data/lib/ledger_sync/adaptors/test/account/operations/update.rb +0 -56
  908. data/lib/ledger_sync/adaptors/test/account/operations/valid.rb +0 -32
  909. data/lib/ledger_sync/adaptors/test/account/searcher.rb +0 -40
  910. data/lib/ledger_sync/adaptors/test/adaptor.rb +0 -47
  911. data/lib/ledger_sync/adaptors/test/config.rb +0 -6
  912. data/lib/ledger_sync/adaptors/test/customer/operations/create.rb +0 -52
  913. data/lib/ledger_sync/adaptors/test/customer/operations/find.rb +0 -38
  914. data/lib/ledger_sync/adaptors/test/customer/operations/invalid.rb +0 -22
  915. data/lib/ledger_sync/adaptors/test/customer/operations/update.rb +0 -22
  916. data/lib/ledger_sync/adaptors/test/customer/operations/valid.rb +0 -24
  917. data/lib/ledger_sync/adaptors/test/customer/searcher.rb +0 -40
  918. data/lib/ledger_sync/adaptors/test/error/adaptor_error/operations/throttle_error.rb +0 -28
  919. data/lib/ledger_sync/adaptors/test/expense/operations/create.rb +0 -29
  920. data/lib/ledger_sync/adaptors/test/expense/operations/find.rb +0 -29
  921. data/lib/ledger_sync/adaptors/test/expense/operations/update.rb +0 -27
  922. data/lib/ledger_sync/adaptors/test/ledger_serializer.rb +0 -64
  923. data/lib/ledger_sync/adaptors/test/operation/create.rb +0 -27
  924. data/lib/ledger_sync/adaptors/test/operation/find.rb +0 -29
  925. data/lib/ledger_sync/adaptors/test/operation/update.rb +0 -34
  926. data/lib/ledger_sync/adaptors/test/payment/operations/create.rb +0 -51
  927. data/lib/ledger_sync/adaptors/test/payment/operations/find.rb +0 -44
  928. data/lib/ledger_sync/adaptors/test/payment/operations/update.rb +0 -28
  929. data/lib/ledger_sync/adaptors/test/transfer/operations/create.rb +0 -24
  930. data/lib/ledger_sync/adaptors/test/transfer/operations/find.rb +0 -24
  931. data/lib/ledger_sync/adaptors/test/transfer/operations/update.rb +0 -24
  932. data/lib/ledger_sync/adaptors/test/vendor/operations/create.rb +0 -56
  933. data/lib/ledger_sync/adaptors/test/vendor/operations/find.rb +0 -43
  934. data/lib/ledger_sync/adaptors/test/vendor/operations/invalid.rb +0 -27
  935. data/lib/ledger_sync/adaptors/test/vendor/operations/update.rb +0 -27
  936. data/lib/ledger_sync/adaptors/test/vendor/operations/valid.rb +0 -33
  937. data/lib/ledger_sync/adaptors/test/vendor/searcher.rb +0 -41
  938. data/lib/ledger_sync/error/adaptor_errors.rb +0 -72
  939. data/lib/ledger_sync/resources/account.rb +0 -17
  940. data/lib/ledger_sync/resources/bill.rb +0 -25
  941. data/lib/ledger_sync/resources/bill_line_item.rb +0 -15
  942. data/lib/ledger_sync/resources/currency.rb +0 -9
  943. data/lib/ledger_sync/resources/customer.rb +0 -25
  944. data/lib/ledger_sync/resources/department.rb +0 -14
  945. data/lib/ledger_sync/resources/deposit.rb +0 -24
  946. data/lib/ledger_sync/resources/deposit_line_item.rb +0 -19
  947. data/lib/ledger_sync/resources/expense.rb +0 -31
  948. data/lib/ledger_sync/resources/expense_line_item.rb +0 -15
  949. data/lib/ledger_sync/resources/invoice.rb +0 -24
  950. data/lib/ledger_sync/resources/invoice_sales_line_item.rb +0 -17
  951. data/lib/ledger_sync/resources/item.rb +0 -5
  952. data/lib/ledger_sync/resources/journal_entry.rb +0 -20
  953. data/lib/ledger_sync/resources/journal_entry_line_item.rb +0 -16
  954. data/lib/ledger_sync/resources/ledger_class.rb +0 -14
  955. data/lib/ledger_sync/resources/payment.rb +0 -27
  956. data/lib/ledger_sync/resources/payment_line_item.rb +0 -15
  957. data/lib/ledger_sync/resources/subsidiary.rb +0 -8
  958. data/lib/ledger_sync/resources/transfer.rb +0 -20
  959. data/lib/ledger_sync/resources/vendor.rb +0 -19
  960. data/lib/ledger_sync/util/debug.rb +0 -16
  961. data/qa/env_spec.rb +0 -5
  962. data/qa/netsuite/account_spec.rb +0 -20
  963. data/qa/netsuite/currency_spec.rb +0 -16
  964. data/qa/netsuite/customer.rb +0 -76
  965. data/qa/netsuite/customer_spec.rb +0 -21
  966. data/qa/netsuite/vendor.rb +0 -76
  967. data/qa/netsuite/vendor_spec.rb +0 -23
  968. data/qa/netsuite_soap/customer_spec.rb +0 -21
  969. data/qa/netsuite_soap/subsidiary_spec.rb +0 -0
  970. data/qa/netsuite_test.rb +0 -42
  971. data/qa/qa_helper.rb +0 -58
  972. data/qa/quickbooks_online/account_spec.rb +0 -14
  973. data/qa/quickbooks_online/customer_spec.rb +0 -13
  974. data/qa/quickbooks_online/expense_spec.rb +0 -31
  975. data/qa/quickbooks_online/vendor_spec.rb +0 -13
  976. data/qa/stripe/customers_spec.rb +0 -15
  977. data/qa/support/adaptor_helpers.rb +0 -99
  978. data/qa/support/adaptor_support_setup.rb +0 -23
  979. data/qa/support/netsuite_helpers.rb +0 -33
  980. data/qa/support/netsuite_shared_examples.rb +0 -30
  981. data/qa/support/netsuite_soap_helpers.rb +0 -33
  982. data/qa/support/netsuite_soap_shared_examples.rb +0 -10
  983. data/qa/support/quickbooks_online_helpers.rb +0 -42
  984. data/qa/support/quickbooks_online_shared_examples.rb +0 -82
  985. data/qa/support/shared_examples.rb +0 -127
  986. data/qa/support/stripe_helpers.rb +0 -22
  987. data/qa/support/stripe_shared_examples.rb +0 -10
  988. data/qa/test.rb +0 -67
@@ -0,0 +1,6 @@
1
+ ---
2
+ title: Blog
3
+ subtitle: This is an optional subtitle for the blog page
4
+ image: images/5.jpg
5
+ layout: blog
6
+ ---
@@ -0,0 +1,35 @@
1
+ ---
2
+ title: Clients
3
+ weight: 1
4
+ layout: guides
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Clients handle the authentication and requests to the ledger. A ledger may have different authentication strategies,
10
+ so clients will accept different arguments. For example, QuickBooks Online utilizes Oauth 2.0 while NetSuite offers
11
+ Token Based Authentication. While similar, the required keys are different.
12
+
13
+ ## How to use
14
+
15
+ Unless you are customizing LedgerSync, you will always pass an instantiated client to an object (e.g. an operation).
16
+ The object will handle using the client as needed.
17
+
18
+ As most clients implement basic request functionality (e.g. `get`, `put`, `post`, `delete`, etc.), you can call these methods directly to perform custom requests. Refer to the specific Client definitions for what parameters are permitted.
19
+
20
+ ## Gotchas
21
+
22
+ ### Oauth 2.0
23
+
24
+ Clients store the authentication details for the ledger. Given that Oauth 2.0 tokens can refresh during a request,
25
+ these clients will handle saving credentials back to the client instance. Typically (though some clients offer
26
+ more automated solutions), you will want to save any changes back to your database. You can use
27
+ `client.ledger_attributes_to_save` to retrieve a hash of which attributes to save. Your code to do so could look like
28
+ the following:
29
+
30
+ {% highlight ruby linenos %}
31
+ # Assuming `client` is defined as an instance of a ledger Client class
32
+ client.ledger_attributes_to_save.each do |attribute_to_save, value|
33
+ # Store value
34
+ end
35
+ {% endhighlight %}
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: Architecture
3
+ excerpt: Understand the high-level architecture of LedgerSync.
4
+ layout: guides
5
+ ---
6
+
7
+ LedgerSync consists of the following high-level objects:
8
+
9
+ - [Clients](/guides/architecture/clients)
10
+ - [Resources](/guides/architecture/resources)
11
+ - [Serialization](/guides/architecture/serialization)
12
+ - [Operations](/guides/architecture/operations)
13
+ - [Searchers](/guides/architecture/searchers)
14
+ - [Results](/guides/architecture/results)
@@ -0,0 +1,45 @@
1
+ ---
2
+ title: Operations
3
+ weight: 4
4
+ layout: guides
5
+ ---
6
+
7
+ Each ledger defines operations that can be performed on specific resources (e.g. `Customer::Operations::Update`, `Payment::Operations::Create`). The operation defines two key things:
8
+
9
+ - a `Contract` class which is used to validate the resource using the `dry-validation` gem
10
+ - a `perform` instance method, which handles the actual API requests and response/error handling.
11
+
12
+ <div class="note"><strong>Note:</strong>
13
+ Ledgers may support different operations for each resource type.
14
+ </div>
15
+
16
+ ## Contracts
17
+
18
+ Contracts are dry-validation schemas, which determine if an operation can be performed. You can create custom schemas and pass them to operations. Assuming you have an `operation_class` variable and `foo` is an attribute of a `custom_resource` (see above) that is required to be a string, you can implement it with the following:
19
+
20
+ ```ruby
21
+ class CustomContract < LedgerSync::Ledgers::Contract
22
+ params do
23
+ required(:foo).filled(:string)
24
+ end
25
+ end
26
+
27
+ # A valid case
28
+ custom_resource = CustomResource.new(foo: 'asdf')
29
+ op = operation_class.new(
30
+ client: client,
31
+ resource: resource,
32
+ validation_contract: CustomContract
33
+ )
34
+ op.valid? # => true
35
+
36
+ # An invalid case
37
+ custom_resource = CustomResource.new(foo: nil)
38
+ operation_class.new(
39
+ client: client,
40
+ resource: resource,
41
+ validation_contract: CustomContract
42
+ )
43
+ op.valid? # => false
44
+
45
+ ```
@@ -0,0 +1,40 @@
1
+ ---
2
+ title: Resources
3
+ weight: 2
4
+ layout: guides
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Resources are named ruby objects (e.g. `Customer`, `Payment`, etc.) with strict attributes (e.g. `name`, `amount`, etc.). LedgerSync provides resources specific to each ledger. While it is possible to create your own resources (see Customization for more details), this section refers to provided ledger-specific resources.
10
+
11
+ The library strives to make each resource and attribute name match the ledger API. This naming convention will help you more readily match ledger documentation to LedgerSync resources.
12
+
13
+ Every resource, regardless of ledger, implements a `ledger_id` and `external_id` attribute. The `ledger_id` is the ID given by the ledger, while the `external_id` is your internal ID for the resource.
14
+
15
+ ## How to use
16
+
17
+ Resources are primary used as the inputs and outputs of operations and searchers. A resource is passed to an operation along with a client. Once the operation is successfully performed, a duplicated and updated resource is returned.
18
+
19
+ Resources have two layers of validation:
20
+
21
+ 1. The Resource
22
+ 2. Operations
23
+
24
+ When instantiating a resource, validations are performed. These validations include class checks and, if necessary, value checks (e.g. enums). When performing an operation, validations are performed based on what attributes are required for the operation to be successful. For example, the `ledger_id` should be `nil` on `create`, but it should be present on `update`.
25
+
26
+ ## Available resources
27
+
28
+ You can see all resources available for a given ledger by calling `resources` on the ledger's `Client` like so:
29
+
30
+ `LedgerSync::Ledgers::QuickBooksOnline::Client.resources`
31
+
32
+ This returns a hash of resource types to classes, where the resource types are unique (e.g. `customer`, `vendor`, etc.).
33
+
34
+ You can see all resources available in LedgerSync by calling `LedgerSync.resources`. This returns an array (note: not a hash as multiple ledgers have the same types) of resource classes that have been created inheriting the `LedgerSync::Resource` class.
35
+
36
+ ## Resource Attributes
37
+
38
+ Resources have defined attributes. Attributes are explicitly defined. An error is thrown if an unknown attribute is passed to it. You can retrieve the attributes of a resource by calling `Customer.attributes`.
39
+
40
+ A subset of these `attributes` may be a `reference`, which is simply a special type of attribute that references another resource. You can retrieve the references of a resource by calling `Customer.references`.
@@ -0,0 +1,6 @@
1
+ ---
2
+ title: Results
3
+ weight: 6
4
+ layout: guides
5
+ ---
6
+
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: Operations
3
+ weight: 5
4
+ layout: guides
5
+ ---
6
+
7
+ Searchers are used to search objects in the ledger. A searcher takes an `client`, `query` string and optional `pagination` hash. For example, to search customer's by name:
8
+
9
+ ```ruby
10
+ searcher = LedgerSync::Ledgers::QuickBooksOnline::Customer::Searcher.new(
11
+ client: client # assuming this is defined,
12
+ query: 'test'
13
+ )
14
+
15
+ result = searcher.search # returns a LedgerSync::SearchResult
16
+
17
+ if result.success?
18
+ resources = result.resources
19
+ # Do something with found resources
20
+ else # result.failure?
21
+ raise result.error
22
+ end
23
+
24
+ # Different ledgers may use different pagination strategies. In order
25
+ # to get the next and previous set of results, you can use the following:
26
+ next_searcher = searcher.next_searcher
27
+ previous_searcher = searcher.previous_searcher
28
+ ```
@@ -0,0 +1,59 @@
1
+ ---
2
+ title: Serialization
3
+ weight: 3
4
+ layout: guides
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ LedgerSync leverages serialization and deserialization to convert resources into the necessary hash formats the ledger expects. Generally, each resource will have 1 serializer and 1 deserializer.
10
+
11
+ ## Serializers
12
+
13
+ Serializers take a `Resource` and output a hash. For example:
14
+
15
+ ```ruby
16
+ customer = LedgerSync::Ledgers::NetSuite::Customer.new(
17
+ companyName: 'Test Company',
18
+ external_id: 'ext_123'
19
+ )
20
+ serializer = LedgerSync::Ledgers::NetSuite::Customer::Serializer.new
21
+ serializer.serialize(resource: customer)
22
+ # Sample output:
23
+ # {
24
+ # "companyName" => "Test Company",
25
+ # "externalId" => "ext_123",
26
+ # "email" => nil,
27
+ # "phone" => nil,
28
+ # "firstName" => nil,
29
+ # "lastName" => nil,
30
+ # "subsidiary" => nil
31
+ # }
32
+ end
33
+ ```
34
+
35
+ ## Deserializers
36
+
37
+ Deserializers take a hash and output a `Resource`. For example:
38
+
39
+ ```ruby
40
+ h = {
41
+ "companyName" => "Test Company",
42
+ "externalId" => "ext_123",
43
+ "email" => nil,
44
+ "id" => "987654321",
45
+ "phone" => nil,
46
+ "firstName" => nil,
47
+ "lastName" => nil,
48
+ "subsidiary" => nil
49
+ }
50
+
51
+ deserializer = LedgerSync::Ledgers::NetSuite::Customer::Deserializer.new
52
+ customer = deserializer.deserialize(hash: h, resource: LedgerSync::Ledgers::NetSuite::Customer.new)
53
+ customer.ledger_id # => "987654321"
54
+ customer.companyName # => "Test Company"
55
+ ```
56
+
57
+ ## How to use
58
+
59
+ Serializers and deserializers are automatically inferred by each operation based on the naming convention. It is possible to create your own serializers. Please see [Customization](/guides/customization) for more.
@@ -0,0 +1,8 @@
1
+ ---
2
+ title: Where To Get Support
3
+ excerpt: >-
4
+ Connect with the maintainers, contributers, and developers using LedgerSync.
5
+ layout: guides
6
+ ---
7
+
8
+ {% include getting_help.md page=page site=site %}
@@ -0,0 +1,6 @@
1
+ ---
2
+ title: Console
3
+ layout: guides
4
+ ---
5
+
6
+ Run `bundle console` to start and interactive console with the library already loaded. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -0,0 +1,17 @@
1
+ ---
2
+ title: Deployment
3
+ layout: guides
4
+ ---
5
+
6
+ <div class="note"><strong>Note:</strong>
7
+ Only contributors can deploy new versions of the gem to RubyGems.org.
8
+ </div>
9
+
10
+ To deploy a new version of the gem to RubyGems, you can use the `release.sh` script in the root. The script takes advantage of [the bump gem](https://github.com/gregorym/bump). So you may call the script using any of the following:
11
+
12
+ ```bash
13
+ # Version Format: MAJOR.MINOR.PATCH
14
+ ./release.sh patch # to bump X in 1.1.X
15
+ ./release.sh minor # to bump X in 1.X.1
16
+ ./release.sh major # to bump X in X.1.1
17
+ ```
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: Documentation
3
+ excerpt: >-
4
+ Learn how to document and update the documentation site.
5
+ layout: guides
6
+ ---
7
+
8
+ ## Overview
9
+
10
+ Our documentation is a static website hosted on Github pages. The docs are a mix of static and dynamically-generated
11
+ content. The final static site is generated using Jekyll.
12
+
13
+ ## Install Jekyll
14
+
15
+ To run or generate the docs site locally, you need to install Jekyll:
16
+
17
+ ```
18
+ gem install jekyll bundler
19
+ ```
20
+
21
+ ## Run Jekyll
22
+
23
+ To run Jekyll locally to view the site, run the following from the root directory:
24
+
25
+ ```
26
+ cd docs/site
27
+ bundle exec jekyll serve
28
+ ```
29
+
30
+ ## Generate dynamic pages
31
+
32
+ Some of the documentation is generated based on the code of LedgerSync (e.g. available operations, resources, etc.). To
33
+ generate these pages, run the following from the root directory:
34
+
35
+ ```
36
+ ruby docs/generate.rb
37
+ ```
@@ -0,0 +1,18 @@
1
+ ---
2
+ title: Contribute
3
+ excerpt: >-
4
+ Help expand LedgerSync coverage.
5
+ layout: guides
6
+ ---
7
+
8
+ Bug reports and pull requests are welcome on GitHub at https://github.com/LedgerSync/ledger_sync. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
9
+
10
+ ## Code of Conduct
11
+
12
+ Everyone interacting in the LedgerSync project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/LedgerSync/ledger_sync/blob/master/CODE_OF_CONDUCT.md).
13
+
14
+ ## Installing the gem
15
+
16
+ After checking out the repo, run `bin/setup` to install dependencies.
17
+
18
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org)
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: QA
3
+ layout: guides
4
+ ---
5
+
6
+ **BE SURE TO USE A TEST ENVIRONMENT ON YOUR LEDGER.**
7
+
8
+ To fully test the library against the actual ledgers, you can run `bin/qa` which will run all tests in the `qa/` directory. QA Tests are written in RSpec. Unlike tests in the `spec/` directory, QA tests allow external HTTP requests.
9
+
10
+ As these interact with real ledgers, you will need to provide secrets. You can do so in a `.env` file in the root directory. Copy the `.env.template` file to get started.
11
+
12
+ **WARNINGS:**
13
+
14
+ - **BE SURE TO USE A TEST ENVIRONMENT ON YOUR LEDGER.**
15
+ - **NEVER CHECK IN YOUR SECRETS (e.g. the `.env` file).**
16
+ - Because these tests actually create and modify resources, they attempt to do "cleanup" by deleting any newly created resources. This process could fail, and you may need to delete these resources manually.
@@ -0,0 +1,6 @@
1
+ ---
2
+ title: Testing
3
+ layout: guides
4
+ ---
5
+
6
+ Run `bundle exec rspec` to run all unit, feature, and integration tests. Unlike [QA Tests](/guides/contribute/qa), all external HTTP requests and responses are stubbed.
@@ -0,0 +1,50 @@
1
+ ---
2
+ title: Custom Resources
3
+ layout: guides
4
+ weight: 2
5
+ ---
6
+
7
+ Some ledgers (e.g. NetSuite) allow for custom attributes (or "fields"), which can vary by account and user. To allow for custom attributes, you can create new resources, ledger serializers (see below), and validation contracts (see below). Assuming your ledger supports the string attribute `foo` for customers, you could do the following:
8
+
9
+ ```ruby
10
+ class CustomCustomer < LedgerSync::Ledgers::QuickBooksOnline::Customer
11
+ attribute :foo, type: LedgerSync::Type::String
12
+ end
13
+ ```
14
+
15
+ Depending on your use of LedgerSync, you may need to define resources dynamically with different custom attributes. You could do so using something like the following:
16
+
17
+ ```ruby
18
+ custom_attributes_for_customers = [
19
+ [
20
+ [:foo, LedgerSync::Type::String]
21
+ ],
22
+ [
23
+ [:foo, LedgerSync::Type::Integer],
24
+ [:bar, LedgerSync::Type::Boolean]
25
+ ]
26
+ ]
27
+
28
+ custom_customer_classes = custom_attributes_for_customers.map do |attributes|
29
+ customer_class = Class.new(LedgerSync::Ledgers::QuickBooksOnline::Customer)
30
+ attributes.each do |name, type|
31
+ customer_class.attribute name, type: type
32
+ end
33
+ customer_class
34
+ end
35
+
36
+ customer_class_1, customer_class_2 = custom_customer_classes
37
+
38
+ # First Custom Customer Class
39
+ customer_class_1.resource_attributes.include?(:foo) # => true
40
+ customer_class_1.resource_attributes[:foo].type # => #<LedgerSync::Type::String:0x00007fe04e9529b0 @precision=nil, @scale=nil, @limit=nil>
41
+ customer_class_1.resource_attributes.include?(:bar) # => false
42
+
43
+ # Second Custom Customer Class
44
+ customer_class_2.resource_attributes.include?(:foo) # => true
45
+ customer_class_2.resource_attributes[:foo].type # => #<LedgerSync::Type::Integer:0x00007fe04e2c7898 @precision=nil, @scale=nil, @limit=nil, @range=-2147483648...2147483648>
46
+ customer_class_2.resource_attributes.include?(:bar) # => true
47
+ customer_class_2.resource_attributes[:bar].type # => #<LedgerSync::Type::Boolean:0x00007fe04e2e4f10 @precision=nil, @scale=nil, @limit=nil>
48
+ ```
49
+
50
+ You can now use these custom resources in operations that use or require custom attributes.
@@ -0,0 +1,47 @@
1
+ ---
2
+ title: Custom Serializers
3
+ layout: guides
4
+ weight: 2
5
+ ---
6
+
7
+ When you need to pass new attributes to/from a ledger, you may to to create custom serializers and deserializers.
8
+
9
+ For example, given the following:
10
+
11
+ - `CustomCustomer` is a custom resource that inherits from `LedgerSync::Ledgers::NetSuite::Customer` and defines a custom attribute string named `foo`
12
+ - the attribute `foo` is used in both the request and response bodies
13
+ - `client` defines a valid instance of the NetSuite client
14
+
15
+
16
+ ```ruby
17
+ class CustomSerializer < LedgerSync::Ledgers::NetSuite::Customer::Serializer
18
+ attribute :foo
19
+ end
20
+
21
+ class CustomDeserializer < LedgerSync::Ledgers::NetSuite::Customer::Deserializer
22
+ attribute :foo
23
+ end
24
+
25
+ # Serializing
26
+ custom_resource = CustomCustomer.new(foo: 'asdf') # See above under Resources -> Custom Attributes
27
+ serializer = CustomSerializer.new(resource: custom_resource)
28
+ serializer.serialize # => {..., "foo"=>"asdf",...}
29
+
30
+ # Deserializing
31
+ deserialized_resource = serializer.deserialize(hash: { foo: 'qwerty' }, resource: CustomCustomer.new)
32
+ deserialized_resource.foo # => 'qwerty'
33
+ custom_resource.foo # => 'asdf'
34
+
35
+ op = LedgerSync::Ledgers::NetSuite::Customer::Operations::Create.new(
36
+ client: client,
37
+ deserializer: CustomSerializer.new,
38
+ serializer: CustomSerializer.new,
39
+ resource: custom_resource
40
+ )
41
+ ```
42
+
43
+ Note that in the above example, we extend an existing customer serializer in the NetSuite ledger. In most cases, serializers have the following inheritance pattern: `LedgerSync::Ledgers::[ADAPTOR]::[RESOURCE]::Serializer < LedgerSync::Ledgers::[ADAPTOR]::Serializer < LedgerSync::Serializer`.
44
+
45
+ So in this example, it would be `LedgerSync::Ledgers::NetSuite::Customer::Serializer < LedgerSync::Ledgers::NetSuite::Serializer < LedgerSync::Serializer`. The more specific the serializer, the more helper methods are available that are ledger and/or resource specific.
46
+
47
+ Similarly, deserializers follow the same pattern.