taxtank-core 0.0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (476) hide show
  1. package/.browserslistrc +16 -0
  2. package/karma.conf.js +44 -0
  3. package/ng-package.json +12 -0
  4. package/package.json +13 -12
  5. package/src/lib/collections/abstract.collection.ts +83 -0
  6. package/src/lib/collections/bank-account.collection.ts +171 -0
  7. package/src/lib/collections/bank-transaction.collection.ts +153 -0
  8. package/src/lib/collections/client-movement.collection.ts +42 -0
  9. package/src/lib/collections/client-portfolio-report.collection.ts +47 -0
  10. package/src/lib/collections/client.collection.ts +5 -0
  11. package/src/lib/collections/collection-dictionary.ts +112 -0
  12. package/src/lib/collections/depreciation-forecast.collection.ts +25 -0
  13. package/src/lib/collections/depreciation.collection.ts +113 -0
  14. package/src/lib/collections/employee.collection.ts +14 -0
  15. package/src/lib/collections/income-source.collection.ts +44 -0
  16. package/src/lib/collections/loan.collection.ts +22 -0
  17. package/src/lib/collections/logbook.collection.ts +129 -0
  18. package/src/lib/collections/message-document.collection.ts +16 -0
  19. package/src/lib/collections/message.collection.ts +27 -0
  20. package/src/lib/collections/property.collection.ts +88 -0
  21. package/src/lib/collections/service-price.collection.ts +13 -0
  22. package/src/lib/collections/service-subscription.collection.ts +20 -0
  23. package/src/lib/collections/tax-return-category-item.collection.ts +148 -0
  24. package/src/lib/collections/tax-review.collection.ts +64 -0
  25. package/src/lib/collections/transaction-allocation.collection.ts +54 -0
  26. package/src/lib/collections/transaction.collection.ts +170 -0
  27. package/src/lib/collections/user-event-setting.collection.ts +70 -0
  28. package/src/lib/db/Enums/address-type.enum.ts +4 -0
  29. package/src/lib/db/Enums/bank-account-status.enum.ts +4 -0
  30. package/src/lib/db/Enums/bank-account-type.enum.ts +10 -0
  31. package/src/lib/db/Enums/bank-connection-status.enum.ts +5 -0
  32. package/src/lib/db/Enums/bank-transaction-type.enum.ts +4 -0
  33. package/src/lib/db/Enums/chart-accounts-category.enum.ts +13 -0
  34. package/src/lib/db/Enums/chart-accounts-etp.enum.ts +7 -0
  35. package/src/lib/db/Enums/chart-accounts-heading-tax-deductible.enum.ts +6 -0
  36. package/src/lib/db/Enums/chart-accounts-heading-taxable.enum.ts +6 -0
  37. package/src/lib/db/Enums/chart-accounts-heading-vehicle-list.enum.ts +4 -0
  38. package/src/lib/db/Enums/chart-accounts-list.enum.ts +19 -0
  39. package/src/lib/db/Enums/chart-accounts-metadata-list.enum.ts +14 -0
  40. package/src/lib/db/Enums/chart-accounts-metadata-type.enum.ts +4 -0
  41. package/src/lib/db/Enums/chart-accounts-type.enum.ts +4 -0
  42. package/src/lib/db/Enums/chat-status.enum.ts +4 -0
  43. package/src/lib/db/Enums/client-details-medicare-exemption.enum.ts +5 -0
  44. package/src/lib/db/Enums/client-details-work-depreciation-calculation.enum.ts +4 -0
  45. package/src/lib/db/Enums/client-details-working-holiday-maker.enum.ts +5 -0
  46. package/src/lib/db/Enums/client-invite-status.enum.ts +4 -0
  47. package/src/lib/db/Enums/client-invite-type.enum.ts +4 -0
  48. package/src/lib/db/Enums/depreciation-calculation-percent.enum.ts +7 -0
  49. package/src/lib/db/Enums/depreciation-calculation.enum.ts +7 -0
  50. package/src/lib/db/Enums/depreciation-type.enum.ts +6 -0
  51. package/src/lib/db/Enums/depreciation-write-off-amount.enum.ts +4 -0
  52. package/src/lib/db/Enums/firm-type.enum.ts +4 -0
  53. package/src/lib/db/Enums/income-source-type-list-other.enum.ts +6 -0
  54. package/src/lib/db/Enums/income-source-type-list-salary.enum.ts +3 -0
  55. package/src/lib/db/Enums/income-source-type-list-work.enum.ts +8 -0
  56. package/src/lib/db/Enums/income-source-type.enum.ts +5 -0
  57. package/src/lib/db/Enums/invite-status.enum.ts +5 -0
  58. package/src/lib/db/Enums/loan-bank-type.enum.ts +10 -0
  59. package/src/lib/db/Enums/loan-frequency.enum.ts +6 -0
  60. package/src/lib/db/Enums/loan-interest-type.enum.ts +4 -0
  61. package/src/lib/db/Enums/loan-payout-type.enum.ts +4 -0
  62. package/src/lib/db/Enums/loan-repayment-frequency.enum.ts +5 -0
  63. package/src/lib/db/Enums/loan-repayment-type.enum.ts +4 -0
  64. package/src/lib/db/Enums/loan-type.enum.ts +12 -0
  65. package/src/lib/db/Enums/loan-vehicle-type.enum.ts +5 -0
  66. package/src/lib/db/Enums/phone-type.enum.ts +4 -0
  67. package/src/lib/db/Enums/property-depreciation-calculation.enum.ts +4 -0
  68. package/src/lib/db/Enums/property-owner-access.enum.ts +4 -0
  69. package/src/lib/db/Enums/property-owner-status.enum.ts +5 -0
  70. package/src/lib/db/Enums/registration-invite-status.enum.ts +4 -0
  71. package/src/lib/db/Enums/salary-forecast-frequency.enum.ts +6 -0
  72. package/src/lib/db/Enums/service-notification-status.enum.ts +5 -0
  73. package/src/lib/db/Enums/service-notification-type.enum.ts +4 -0
  74. package/src/lib/db/Enums/service-payment-status.enum.ts +4 -0
  75. package/src/lib/db/Enums/service-price-recurring-interval.enum.ts +6 -0
  76. package/src/lib/db/Enums/service-price-type.enum.ts +4 -0
  77. package/src/lib/db/Enums/service-subscription-status.enum.ts +8 -0
  78. package/src/lib/db/Enums/spare-document-spare-type.enum.ts +4 -0
  79. package/src/lib/db/Enums/tank-type.enum.ts +5 -0
  80. package/src/lib/db/Enums/tax-calculation-medicare-exemption.enum.ts +4 -0
  81. package/src/lib/db/Enums/tax-calculation-type.enum.ts +12 -0
  82. package/src/lib/db/Enums/tax-return-category-list.enum.ts +26 -0
  83. package/src/lib/db/Enums/tax-return-category-section.enum.ts +6 -0
  84. package/src/lib/db/Enums/tax-review-status.enum.ts +11 -0
  85. package/src/lib/db/Enums/tax-summary-list.enum.ts +15 -0
  86. package/src/lib/db/Enums/tax-summary-section.enum.ts +6 -0
  87. package/src/lib/db/Enums/tax-summary-tax-summary.enum.ts +15 -0
  88. package/src/lib/db/Enums/ticket-feedback.enum.ts +4 -0
  89. package/src/lib/db/Enums/ticket-status.enum.ts +7 -0
  90. package/src/lib/db/Enums/ticket-types.enum.ts +3 -0
  91. package/src/lib/db/Enums/transaction-operation.enum.ts +5 -0
  92. package/src/lib/db/Enums/transaction-source.enum.ts +4 -0
  93. package/src/lib/db/Enums/transaction-type.enum.ts +4 -0
  94. package/src/lib/db/Enums/user-event-status.enum.ts +6 -0
  95. package/src/lib/db/Enums/user-event-type-frequency.enum.ts +6 -0
  96. package/src/lib/db/Enums/user-event-type-reminder-type.enum.ts +6 -0
  97. package/src/lib/db/Enums/user-event-type-reminder.enum.ts +5 -0
  98. package/src/lib/db/Enums/user-event-type-type.enum.ts +33 -0
  99. package/src/lib/db/Enums/user-medicare-exemption.enum.ts +5 -0
  100. package/src/lib/db/Enums/user-roles.enum.ts +13 -0
  101. package/src/lib/db/Enums/user-status.enum.ts +6 -0
  102. package/src/lib/db/Enums/user-title.enum.ts +7 -0
  103. package/src/lib/db/Enums/user-work-depreciation-calculation.enum.ts +4 -0
  104. package/src/lib/db/Enums/user-working-holiday-maker.enum.ts +5 -0
  105. package/src/lib/db/Enums/vehicle-claim-method.enum.ts +4 -0
  106. package/src/lib/db/Enums/vehicle-logbook-purpose.enum.ts +4 -0
  107. package/src/lib/db/Models/address.ts +20 -0
  108. package/src/lib/db/Models/bank-account-balance.ts +13 -0
  109. package/src/lib/db/Models/bank-account-property.ts +9 -0
  110. package/src/lib/db/Models/bank-account.ts +34 -0
  111. package/src/lib/db/Models/bank-connection.ts +15 -0
  112. package/src/lib/db/Models/bank-provider-account.ts +13 -0
  113. package/src/lib/db/Models/bank-transaction-import.ts +12 -0
  114. package/src/lib/db/Models/bank-transaction-rule.ts +26 -0
  115. package/src/lib/db/Models/bank-transaction.ts +17 -0
  116. package/src/lib/db/Models/bank.ts +12 -0
  117. package/src/lib/db/Models/basiq-job.ts +9 -0
  118. package/src/lib/db/Models/borrowing-expense-loan.ts +15 -0
  119. package/src/lib/db/Models/borrowing-expense.ts +7 -0
  120. package/src/lib/db/Models/capital-cost-property.ts +14 -0
  121. package/src/lib/db/Models/capital-cost.ts +4 -0
  122. package/src/lib/db/Models/chart-accounts-depreciation.ts +11 -0
  123. package/src/lib/db/Models/chart-accounts-heading.ts +7 -0
  124. package/src/lib/db/Models/chart-accounts-metadata.ts +12 -0
  125. package/src/lib/db/Models/chart-accounts-value.ts +13 -0
  126. package/src/lib/db/Models/chart-accounts.ts +24 -0
  127. package/src/lib/db/Models/chat.ts +18 -0
  128. package/src/lib/db/Models/client-details.ts +30 -0
  129. package/src/lib/db/Models/client-invite.ts +17 -0
  130. package/src/lib/db/Models/client-movement.ts +13 -0
  131. package/src/lib/db/Models/country.ts +5 -0
  132. package/src/lib/db/Models/depreciation-capital-project.ts +14 -0
  133. package/src/lib/db/Models/depreciation-forecast.ts +19 -0
  134. package/src/lib/db/Models/depreciation-receipt.ts +12 -0
  135. package/src/lib/db/Models/depreciation.ts +43 -0
  136. package/src/lib/db/Models/document-base.ts +10 -0
  137. package/src/lib/db/Models/document-folder.ts +10 -0
  138. package/src/lib/db/Models/document.ts +12 -0
  139. package/src/lib/db/Models/employee-details.ts +8 -0
  140. package/src/lib/db/Models/employee-invite.ts +10 -0
  141. package/src/lib/db/Models/financial-data-system.ts +10 -0
  142. package/src/lib/db/Models/firm-invite.ts +15 -0
  143. package/src/lib/db/Models/firm.ts +29 -0
  144. package/src/lib/db/Models/income-source-forecast.ts +13 -0
  145. package/src/lib/db/Models/income-source-type.ts +9 -0
  146. package/src/lib/db/Models/income-source.ts +21 -0
  147. package/src/lib/db/Models/loan-payout.ts +13 -0
  148. package/src/lib/db/Models/loan.ts +34 -0
  149. package/src/lib/db/Models/message-document.ts +16 -0
  150. package/src/lib/db/Models/message.ts +16 -0
  151. package/src/lib/db/Models/occupation.ts +5 -0
  152. package/src/lib/db/Models/phone.ts +13 -0
  153. package/src/lib/db/Models/property-capital-cost.ts +14 -0
  154. package/src/lib/db/Models/property-category-movement.ts +18 -0
  155. package/src/lib/db/Models/property-category.ts +14 -0
  156. package/src/lib/db/Models/property-document.ts +14 -0
  157. package/src/lib/db/Models/property-forecast.ts +15 -0
  158. package/src/lib/db/Models/property-owner.ts +21 -0
  159. package/src/lib/db/Models/property-sold.ts +13 -0
  160. package/src/lib/db/Models/property-subscription.ts +10 -0
  161. package/src/lib/db/Models/property-valuation.ts +13 -0
  162. package/src/lib/db/Models/property.ts +42 -0
  163. package/src/lib/db/Models/registration-invite.ts +13 -0
  164. package/src/lib/db/Models/salary-forecast.ts +16 -0
  165. package/src/lib/db/Models/service-notification.ts +14 -0
  166. package/src/lib/db/Models/service-payment.ts +12 -0
  167. package/src/lib/db/Models/service-price.ts +16 -0
  168. package/src/lib/db/Models/service-product.ts +13 -0
  169. package/src/lib/db/Models/service-subscription-item.ts +10 -0
  170. package/src/lib/db/Models/service-subscription.ts +15 -0
  171. package/src/lib/db/Models/spare-document-category.ts +6 -0
  172. package/src/lib/db/Models/spare-document.ts +16 -0
  173. package/src/lib/db/Models/tax-calculation.ts +19 -0
  174. package/src/lib/db/Models/tax-return-category.ts +13 -0
  175. package/src/lib/db/Models/tax-return-item.ts +16 -0
  176. package/src/lib/db/Models/tax-return.ts +9 -0
  177. package/src/lib/db/Models/tax-review.ts +14 -0
  178. package/src/lib/db/Models/ticket.ts +20 -0
  179. package/src/lib/db/Models/transaction-allocation.ts +9 -0
  180. package/src/lib/db/Models/transaction-base.ts +33 -0
  181. package/src/lib/db/Models/transaction-metadata.ts +12 -0
  182. package/src/lib/db/Models/transaction-receipt.ts +12 -0
  183. package/src/lib/db/Models/transaction.ts +44 -0
  184. package/src/lib/db/Models/user-event-setting.ts +11 -0
  185. package/src/lib/db/Models/user-event-type.ts +16 -0
  186. package/src/lib/db/Models/user-event.ts +14 -0
  187. package/src/lib/db/Models/user.ts +52 -0
  188. package/src/lib/db/Models/vehicle-claim.ts +12 -0
  189. package/src/lib/db/Models/vehicle-logbook.ts +17 -0
  190. package/src/lib/db/Models/vehicle.ts +9 -0
  191. package/src/lib/functions/array/index.ts +3 -0
  192. package/src/lib/functions/array/replace.ts +5 -0
  193. package/src/lib/functions/array/sort-deep.ts +19 -0
  194. package/src/lib/functions/array/sort.ts +8 -0
  195. package/src/lib/functions/clone-deep.ts +4 -0
  196. package/src/lib/functions/create-date.ts +7 -0
  197. package/src/lib/functions/enum-to-list.ts +16 -0
  198. package/src/lib/functions/get-doc-icon.ts +21 -0
  199. package/src/lib/functions/mat-options-functions.ts +11 -0
  200. package/src/lib/functions/mat-sort-options.ts +9 -0
  201. package/src/lib/functions/round-to.ts +9 -0
  202. package/src/lib/functions/tax-review-filter-predicate.ts +11 -0
  203. package/src/lib/interfaces/asset-entity-type.enum.ts +10 -0
  204. package/src/lib/interfaces/asset-type.enum.ts +9 -0
  205. package/src/lib/interfaces/asset.interface.ts +18 -0
  206. package/src/lib/interfaces/chart-data.interface.ts +11 -0
  207. package/src/lib/interfaces/chart-serie.interface.ts +8 -0
  208. package/src/lib/interfaces/document.interface.ts +20 -0
  209. package/src/lib/interfaces/documentable.interface.ts +9 -0
  210. package/src/lib/interfaces/event-listener.interface.ts +9 -0
  211. package/src/lib/interfaces/income-source-forecast.interface.ts +7 -0
  212. package/src/lib/interfaces/option.interface.ts +4 -0
  213. package/src/lib/interfaces/photoable.ts +14 -0
  214. package/src/lib/interfaces/receipt.interface.ts +13 -0
  215. package/src/lib/interfaces/salary-forecast.interface.ts +17 -0
  216. package/src/lib/interfaces/tank.interface.ts +9 -0
  217. package/src/lib/models/address/address.ts +24 -0
  218. package/src/lib/models/address/country.ts +17 -0
  219. package/src/lib/models/bank/bank-account-chart-data.ts +42 -0
  220. package/src/lib/models/bank/bank-account-property.ts +8 -0
  221. package/src/lib/models/bank/bank-account-types.const.ts +15 -0
  222. package/src/lib/models/bank/bank-account.ts +136 -0
  223. package/src/lib/models/bank/bank-connection.ts +12 -0
  224. package/src/lib/models/bank/bank-transaction-chart-data.ts +132 -0
  225. package/src/lib/models/bank/bank-transaction-summary-fields.enum.ts +4 -0
  226. package/src/lib/models/bank/bank-transaction.ts +74 -0
  227. package/src/lib/models/bank/bank.ts +21 -0
  228. package/src/lib/models/bank/basiq-job.ts +4 -0
  229. package/src/lib/models/bank/basiq-token.ts +16 -0
  230. package/src/lib/models/bank/type-loan.const.ts +7 -0
  231. package/src/lib/models/borrowing-expense/borrowing-expense-loan.ts +4 -0
  232. package/src/lib/models/borrowing-expense/borrowing-expense.ts +4 -0
  233. package/src/lib/models/chart/chart-data.ts +13 -0
  234. package/src/lib/models/chart/chart-serie.ts +8 -0
  235. package/src/lib/models/chart-accounts/chart-accounts-categories.const.ts +85 -0
  236. package/src/lib/models/chart-accounts/chart-accounts-depreciation.ts +14 -0
  237. package/src/lib/models/chart-accounts/chart-accounts-heading.ts +6 -0
  238. package/src/lib/models/chart-accounts/chart-accounts-metadata.ts +15 -0
  239. package/src/lib/models/chart-accounts/chart-accounts-tax-labels.enum.ts +5 -0
  240. package/src/lib/models/chart-accounts/chart-accounts.ts +137 -0
  241. package/src/lib/models/chat/chat-view-type.enum.ts +4 -0
  242. package/src/lib/models/chat/chat.ts +23 -0
  243. package/src/lib/models/chat/message-document.ts +18 -0
  244. package/src/lib/models/chat/message.ts +40 -0
  245. package/src/lib/models/client/client-details.ts +4 -0
  246. package/src/lib/models/client/client-invite.ts +70 -0
  247. package/src/lib/models/client/client-movement.ts +25 -0
  248. package/src/lib/models/client/client-portfolio-chart-data.ts +65 -0
  249. package/src/lib/models/client/client-portfolio-report.ts +10 -0
  250. package/src/lib/models/depreciation/depreciation-capital-project.ts +10 -0
  251. package/src/lib/models/depreciation/depreciation-forecast.ts +31 -0
  252. package/src/lib/models/depreciation/depreciation-group-item.ts +20 -0
  253. package/src/lib/models/depreciation/depreciation-group.enum.ts +7 -0
  254. package/src/lib/models/depreciation/depreciation-group.ts +25 -0
  255. package/src/lib/models/depreciation/depreciation-groups.const.ts +35 -0
  256. package/src/lib/models/depreciation/depreciation-receipt.ts +9 -0
  257. package/src/lib/models/depreciation/depreciation.ts +174 -0
  258. package/src/lib/models/document/document-api-url-prefix.enum.ts +7 -0
  259. package/src/lib/models/document/document-file-types.const.ts +22 -0
  260. package/src/lib/models/document/document-folder.ts +11 -0
  261. package/src/lib/models/document/document.ts +29 -0
  262. package/src/lib/models/employee/employee-details.ts +8 -0
  263. package/src/lib/models/employee/employee-invite.ts +12 -0
  264. package/src/lib/models/endpoint/endpoint.ts +35 -0
  265. package/src/lib/models/endpoint/endpoints.const.ts +157 -0
  266. package/src/lib/models/event/app-event-type.enum.ts +37 -0
  267. package/src/lib/models/event/app-event.ts +9 -0
  268. package/src/lib/models/file/icons-file.enum.ts +5 -0
  269. package/src/lib/models/financial-year/financial-year.ts +57 -0
  270. package/src/lib/models/financial-year/month-name-short.enum.ts +19 -0
  271. package/src/lib/models/financial-year/month-number.enum.ts +19 -0
  272. package/src/lib/models/financial-year/months.const.ts +1 -0
  273. package/src/lib/models/firm/firm.ts +31 -0
  274. package/src/lib/models/income-position/income-position.ts +13 -0
  275. package/src/lib/models/income-source/income-source-chart-data.ts +57 -0
  276. package/src/lib/models/income-source/income-source-forecast.ts +35 -0
  277. package/src/lib/models/income-source/income-source-type.ts +30 -0
  278. package/src/lib/models/income-source/income-source.ts +57 -0
  279. package/src/lib/models/income-source/salary-forecast.ts +23 -0
  280. package/src/lib/models/loan/loan-max-number-of-payments.enum.ts +8 -0
  281. package/src/lib/models/loan/loan-payment.ts +17 -0
  282. package/src/lib/models/loan/loan-payout.ts +13 -0
  283. package/src/lib/models/loan/loan.ts +38 -0
  284. package/src/lib/models/logbook/default-vehicle-expense.ts +20 -0
  285. package/src/lib/models/logbook/logbook-period.ts +12 -0
  286. package/src/lib/models/logbook/logbook-purpose-options.const.ts +6 -0
  287. package/src/lib/models/logbook/vehicle-claim.ts +27 -0
  288. package/src/lib/models/logbook/vehicle-logbook.ts +16 -0
  289. package/src/lib/models/logbook/vehicle.ts +46 -0
  290. package/src/lib/models/notification/notification-event-types.const.ts +43 -0
  291. package/src/lib/models/notification/notification.ts +66 -0
  292. package/src/lib/models/phone/phone.ts +10 -0
  293. package/src/lib/models/property/calculation-form-item.ts +24 -0
  294. package/src/lib/models/property/calculation-form-type.enum.ts +7 -0
  295. package/src/lib/models/property/capital-costs-itmes.const.ts +57 -0
  296. package/src/lib/models/property/corelogic-suggestion.ts +18 -0
  297. package/src/lib/models/property/ownership-filter-options.enum.ts +8 -0
  298. package/src/lib/models/property/property-capital-cost.ts +4 -0
  299. package/src/lib/models/property/property-category-movement.ts +18 -0
  300. package/src/lib/models/property/property-category.ts +9 -0
  301. package/src/lib/models/property/property-document.ts +21 -0
  302. package/src/lib/models/property/property-equity-chart-data.ts +188 -0
  303. package/src/lib/models/property/property-equity-chart-item.ts +35 -0
  304. package/src/lib/models/property/property-equity-chart-type.enum.ts +4 -0
  305. package/src/lib/models/property/property-forecast.ts +55 -0
  306. package/src/lib/models/property/property-owner.ts +50 -0
  307. package/src/lib/models/property/property-sold.ts +10 -0
  308. package/src/lib/models/property/property-subscription.ts +11 -0
  309. package/src/lib/models/property/property-valuation.ts +24 -0
  310. package/src/lib/models/property/property.ts +157 -0
  311. package/src/lib/models/registration-invite/registration-invite.ts +12 -0
  312. package/src/lib/models/service-subscription/module-url-list.const.ts +11 -0
  313. package/src/lib/models/service-subscription/service-payment.ts +8 -0
  314. package/src/lib/models/service-subscription/service-price.ts +8 -0
  315. package/src/lib/models/service-subscription/service-product.ts +11 -0
  316. package/src/lib/models/service-subscription/service-subscription-item.ts +12 -0
  317. package/src/lib/models/service-subscription/service-subscription.ts +151 -0
  318. package/src/lib/models/service-subscription/subscription-description.const.ts +8 -0
  319. package/src/lib/models/service-subscription/subscription-title.const.ts +8 -0
  320. package/src/lib/models/service-subscription/subscription-type.enum.ts +6 -0
  321. package/src/lib/models/tax-review/tax-review.ts +96 -0
  322. package/src/lib/models/tax-summary/tax-return-category-item-details.ts +14 -0
  323. package/src/lib/models/tax-summary/tax-return-category-item.ts +22 -0
  324. package/src/lib/models/tax-summary/tax-summary-section.ts +32 -0
  325. package/src/lib/models/tax-summary/tax-summary-type.enum.ts +7 -0
  326. package/src/lib/models/tax-summary/tax-summary.ts +79 -0
  327. package/src/lib/models/transaction/income-amount-type.enum.ts +7 -0
  328. package/src/lib/models/transaction/transaction-allocation.ts +20 -0
  329. package/src/lib/models/transaction/transaction-metadata.ts +8 -0
  330. package/src/lib/models/transaction/transaction-receipt.ts +9 -0
  331. package/src/lib/models/transaction/transaction.ts +241 -0
  332. package/src/lib/models/user/my-account-history-initiated-by.enum.ts +4 -0
  333. package/src/lib/models/user/my-account-history-status.enum.ts +4 -0
  334. package/src/lib/models/user/my-account-history-type.enum.ts +5 -0
  335. package/src/lib/models/user/my-account-history.ts +12 -0
  336. package/src/lib/models/user/occupation.ts +4 -0
  337. package/src/lib/models/user/user-roles.const.ts +13 -0
  338. package/src/lib/models/user/user-to-register.ts +7 -0
  339. package/src/lib/models/user/user-work-position.const.ts +7 -0
  340. package/src/lib/models/user/user.ts +160 -0
  341. package/src/lib/models/user-event/user-event-category.enum.ts +9 -0
  342. package/src/lib/models/user-event/user-event-category.ts +9 -0
  343. package/src/lib/models/user-event/user-event-setting-field.enum.ts +8 -0
  344. package/src/lib/models/user-event/user-event-setting.ts +11 -0
  345. package/src/lib/models/user-event/user-event-type.ts +22 -0
  346. package/src/lib/services/address/address.service.spec.ts +12 -0
  347. package/src/lib/services/address/address.service.ts +36 -0
  348. package/src/lib/services/asset/assets.service.spec.ts +12 -0
  349. package/src/lib/services/asset/assets.service.ts +51 -0
  350. package/src/lib/services/auth/auth.service.ts +48 -0
  351. package/src/lib/services/auth/jwt.service.ts +37 -0
  352. package/src/lib/services/bank/bank-account-calculation.service.spec.ts +16 -0
  353. package/src/lib/services/bank/bank-account-calculation.service.ts +38 -0
  354. package/src/lib/services/bank/bank-account.service.spec.ts +12 -0
  355. package/src/lib/services/bank/bank-account.service.ts +120 -0
  356. package/src/lib/services/bank/bank-connection.service.spec.ts +12 -0
  357. package/src/lib/services/bank/bank-connection.service.ts +42 -0
  358. package/src/lib/services/bank/bank-transaction-calculation.service.spec.ts +16 -0
  359. package/src/lib/services/bank/bank-transaction-calculation.service.ts +71 -0
  360. package/src/lib/services/bank/bank-transaction.service.spec.ts +12 -0
  361. package/src/lib/services/bank/bank-transaction.service.ts +97 -0
  362. package/src/lib/services/bank/bank.service.spec.ts +12 -0
  363. package/src/lib/services/bank/bank.service.ts +16 -0
  364. package/src/lib/services/bank/basiq.service.spec.ts +12 -0
  365. package/src/lib/services/bank/basiq.service.ts +103 -0
  366. package/src/lib/services/base-rest.service.spec.ts +13 -0
  367. package/src/lib/services/base-rest.service.ts +229 -0
  368. package/src/lib/services/borrowing-expense/borrowing-expense.service.spec.ts +12 -0
  369. package/src/lib/services/borrowing-expense/borrowing-expense.service.ts +82 -0
  370. package/src/lib/services/chart-accounts/chart-accounts-depreciations.service.spec.ts +16 -0
  371. package/src/lib/services/chart-accounts/chart-accounts-depreciations.service.ts +34 -0
  372. package/src/lib/services/chart-accounts/chart-accounts.service.spec.ts +12 -0
  373. package/src/lib/services/chart-accounts/chart-accounts.service.ts +101 -0
  374. package/src/lib/services/chat/chat.service.spec.ts +16 -0
  375. package/src/lib/services/chat/chat.service.ts +79 -0
  376. package/src/lib/services/chat/message-document.service.spec.ts +16 -0
  377. package/src/lib/services/chat/message-document.service.ts +133 -0
  378. package/src/lib/services/chat/message.service.spec.ts +16 -0
  379. package/src/lib/services/chat/message.service.ts +61 -0
  380. package/src/lib/services/client/client-invite.service.spec.ts +16 -0
  381. package/src/lib/services/client/client-invite.service.ts +111 -0
  382. package/src/lib/services/client/client-movement.service.spec.ts +16 -0
  383. package/src/lib/services/client/client-movement.service.ts +114 -0
  384. package/src/lib/services/client/client-portfolio-report.service.spec.ts +16 -0
  385. package/src/lib/services/client/client-portfolio-report.service.ts +34 -0
  386. package/src/lib/services/depreciation/capital-project.service.spec.ts +16 -0
  387. package/src/lib/services/depreciation/capital-project.service.ts +69 -0
  388. package/src/lib/services/depreciation/depreciation.service.spec.ts +12 -0
  389. package/src/lib/services/depreciation/depreciation.service.ts +171 -0
  390. package/src/lib/services/document/document-folder.service.spec.ts +16 -0
  391. package/src/lib/services/document/document-folder.service.ts +95 -0
  392. package/src/lib/services/employee/employee-invite.service.spec.ts +16 -0
  393. package/src/lib/services/employee/employee-invite.service.ts +53 -0
  394. package/src/lib/services/employee/employee.service.spec.ts +16 -0
  395. package/src/lib/services/employee/employee.service.ts +35 -0
  396. package/src/lib/services/event/event-dispatcher.service.spec.ts +16 -0
  397. package/src/lib/services/event/event-dispatcher.service.ts +29 -0
  398. package/src/lib/services/event/sse.service.spec.ts +16 -0
  399. package/src/lib/services/event/sse.service.ts +42 -0
  400. package/src/lib/services/firm/firm.service.spec.ts +16 -0
  401. package/src/lib/services/firm/firm.service.ts +93 -0
  402. package/src/lib/services/header-title/header-title.service.spec.ts +12 -0
  403. package/src/lib/services/header-title/header-title.service.ts +31 -0
  404. package/src/lib/services/income-source/income-source-forecast.service.spec.ts +16 -0
  405. package/src/lib/services/income-source/income-source-forecast.service.ts +91 -0
  406. package/src/lib/services/income-source/income-source.service.spec.ts +12 -0
  407. package/src/lib/services/income-source/income-source.service.ts +127 -0
  408. package/src/lib/services/income-source/salary-forecast.service.spec.ts +16 -0
  409. package/src/lib/services/income-source/salary-forecast.service.ts +92 -0
  410. package/src/lib/services/intercom/intercom.service.spec.ts +16 -0
  411. package/src/lib/services/intercom/intercom.service.ts +37 -0
  412. package/src/lib/services/loan/loan.service.spec.ts +12 -0
  413. package/src/lib/services/loan/loan.service.ts +166 -0
  414. package/src/lib/services/notification/notification.service.spec.ts +12 -0
  415. package/src/lib/services/notification/notification.service.ts +60 -0
  416. package/src/lib/services/preloader/preloader.service.spec.ts +16 -0
  417. package/src/lib/services/preloader/preloader.service.ts +28 -0
  418. package/src/lib/services/property/corelogic.service.spec.ts +12 -0
  419. package/src/lib/services/property/corelogic.service.ts +47 -0
  420. package/src/lib/services/property/property-calculation.service.spec.ts +16 -0
  421. package/src/lib/services/property/property-calculation.service.ts +166 -0
  422. package/src/lib/services/property/property-capital-cost.service.ts +42 -0
  423. package/src/lib/services/property/property-category.service.spec.ts +16 -0
  424. package/src/lib/services/property/property-category.service.ts +15 -0
  425. package/src/lib/services/property/property-document.service.spec.ts +16 -0
  426. package/src/lib/services/property/property-document.service.ts +74 -0
  427. package/src/lib/services/property/property-owner.service.spec.ts +12 -0
  428. package/src/lib/services/property/property-owner.service.ts +134 -0
  429. package/src/lib/services/property/property-sold.service.spec.ts +16 -0
  430. package/src/lib/services/property/property-sold.service.ts +15 -0
  431. package/src/lib/services/property/property.service.spec.ts +12 -0
  432. package/src/lib/services/property/property.service.ts +136 -0
  433. package/src/lib/services/subscription/subscription.service.spec.ts +12 -0
  434. package/src/lib/services/subscription/subscription.service.ts +153 -0
  435. package/src/lib/services/tax-review/tax-review-history.service.spec.ts +16 -0
  436. package/src/lib/services/tax-review/tax-review-history.service.ts +35 -0
  437. package/src/lib/services/tax-review/tax-review.service.spec.ts +16 -0
  438. package/src/lib/services/tax-review/tax-review.service.ts +114 -0
  439. package/src/lib/services/tax-summary/tax-summary.service.ts +70 -0
  440. package/src/lib/services/transaction/transaction-allocation.service.spec.ts +12 -0
  441. package/src/lib/services/transaction/transaction-allocation.service.ts +92 -0
  442. package/src/lib/services/transaction/transaction-calculation.service.spec.ts +16 -0
  443. package/src/lib/services/transaction/transaction-calculation.service.ts +50 -0
  444. package/src/lib/services/transaction/transaction.service.spec.ts +12 -0
  445. package/src/lib/services/transaction/transaction.service.ts +374 -0
  446. package/src/lib/services/user/occupation.service.spec.ts +12 -0
  447. package/src/lib/services/user/occupation.service.ts +42 -0
  448. package/src/lib/services/user/user-switcher.service.ts +34 -0
  449. package/src/lib/services/user/user.service.spec.ts +12 -0
  450. package/src/lib/services/user/user.service.ts +140 -0
  451. package/src/lib/services/user-event/user-event-setting.service.spec.ts +16 -0
  452. package/src/lib/services/user-event/user-event-setting.service.ts +60 -0
  453. package/src/lib/services/user-event/user-event-type.service.spec.ts +16 -0
  454. package/src/lib/services/user-event/user-event-type.service.ts +24 -0
  455. package/src/lib/services/work/work-tank.service.spec.ts +12 -0
  456. package/src/lib/services/work/work-tank.service.ts +277 -0
  457. package/src/lib/tt-core.module.ts +22 -0
  458. package/src/lib/tt-core.service.spec.ts +16 -0
  459. package/src/lib/tt-core.service.ts +17 -0
  460. package/src/public-api.ts +425 -0
  461. package/src/test.ts +27 -0
  462. package/tsconfig.lib.json +15 -0
  463. package/tsconfig.lib.prod.json +10 -0
  464. package/tsconfig.spec.json +17 -0
  465. package/bundles/taxtank-core.umd.js +0 -97
  466. package/bundles/taxtank-core.umd.js.map +0 -1
  467. package/esm2015/lib/tt-core.module.js +0 -33
  468. package/esm2015/lib/tt-core.service.js +0 -23
  469. package/esm2015/public-api.js +0 -6
  470. package/esm2015/taxtank-core.js +0 -5
  471. package/fesm2015/taxtank-core.js +0 -64
  472. package/fesm2015/taxtank-core.js.map +0 -1
  473. package/lib/tt-core.module.d.ts +0 -9
  474. package/lib/tt-core.service.d.ts +0 -8
  475. package/public-api.d.ts +0 -2
  476. package/taxtank-core.d.ts +0 -5
@@ -0,0 +1,16 @@
1
+ # This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
2
+ # For additional information regarding the format and rule options, please see:
3
+ # https://github.com/browserslist/browserslist#queries
4
+
5
+ # For the full list of supported browsers by the Angular framework, please see:
6
+ # https://angular.io/guide/browser-support
7
+
8
+ # You can see what browsers were selected by your queries by running:
9
+ # npx browserslist
10
+
11
+ last 1 Chrome version
12
+ last 1 Firefox version
13
+ last 2 Edge major versions
14
+ last 2 Safari major versions
15
+ last 2 iOS major versions
16
+ Firefox ESR
package/karma.conf.js ADDED
@@ -0,0 +1,44 @@
1
+ // Karma configuration file, see link for more information
2
+ // https://karma-runner.github.io/1.0/config/configuration-file.html
3
+
4
+ module.exports = function (config) {
5
+ config.set({
6
+ basePath: '',
7
+ frameworks: ['jasmine', '@angular-devkit/build-angular'],
8
+ plugins: [
9
+ require('karma-jasmine'),
10
+ require('karma-chrome-launcher'),
11
+ require('karma-jasmine-html-reporter'),
12
+ require('karma-coverage'),
13
+ require('@angular-devkit/build-angular/plugins/karma')
14
+ ],
15
+ client: {
16
+ jasmine: {
17
+ // you can add configuration options for Jasmine here
18
+ // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
19
+ // for example, you can disable the random execution with `random: false`
20
+ // or set a specific seed with `seed: 4321`
21
+ },
22
+ clearContext: false // leave Jasmine Spec Runner output visible in browser
23
+ },
24
+ jasmineHtmlReporter: {
25
+ suppressAll: true // removes the duplicated traces
26
+ },
27
+ coverageReporter: {
28
+ dir: require('path').join(__dirname, '../../coverage/tt-core'),
29
+ subdir: '.',
30
+ reporters: [
31
+ { type: 'html' },
32
+ { type: 'text-summary' }
33
+ ]
34
+ },
35
+ reporters: ['progress', 'kjhtml'],
36
+ port: 9876,
37
+ colors: true,
38
+ logLevel: config.LOG_INFO,
39
+ autoWatch: true,
40
+ browsers: ['Chrome'],
41
+ singleRun: false,
42
+ restartOnFileChange: true
43
+ });
44
+ };
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3
+ "dest": "../../dist/tt-core",
4
+ "lib": {
5
+ "entryFile": "src/public-api.ts"
6
+ },
7
+ "allowedNonPeerDependencies": [
8
+ "@auth0/angular-jwt",
9
+ "@stripe/stripe-js",
10
+ "event-source-polyfill"
11
+ ]
12
+ }
package/package.json CHANGED
@@ -1,19 +1,20 @@
1
1
  {
2
2
  "name": "taxtank-core",
3
- "version": "0.0.1",
3
+ "version": "0.1.1",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^12.2.3",
7
- "@angular/core": "^12.2.3"
7
+ "@angular/core": "^12.2.3",
8
+ "@angular/router": "^12.2.3",
9
+ "class-transformer": "^0.4.0",
10
+ "moment": "^2.29.1",
11
+ "moment-range": "^4.0.2",
12
+ "lodash": "^4.17.21"
8
13
  },
9
14
  "dependencies": {
10
- "tslib": "^2.0.0"
11
- },
12
- "main": "bundles/taxtank-core.umd.js",
13
- "module": "fesm2015/taxtank-core.js",
14
- "es2015": "fesm2015/taxtank-core.js",
15
- "esm2015": "esm2015/taxtank-core.js",
16
- "fesm2015": "fesm2015/taxtank-core.js",
17
- "typings": "taxtank-core.d.ts",
18
- "sideEffects": false
19
- }
15
+ "tslib": "^2.3.1",
16
+ "@auth0/angular-jwt": "^5.0.2",
17
+ "@stripe/stripe-js": "^1.11.0",
18
+ "event-source-polyfill": "^1.0.22"
19
+ }
20
+ }
@@ -0,0 +1,83 @@
1
+ import { CollectionDictionary } from './collection-dictionary';
2
+ import first from 'lodash/first';
3
+ import last from 'lodash/last';
4
+
5
+ /**
6
+ * collection abstract class. Contains common properties and methods for all collections
7
+ */
8
+ export abstract class AbstractCollection<Model extends object> implements Iterable<Model> {
9
+ // list of collection's items
10
+ items: Model[];
11
+
12
+ constructor(
13
+ items: Model[] = []
14
+ ) {
15
+ this.items = items;
16
+ }
17
+
18
+ groupBy(prop: string): CollectionDictionary<AbstractCollection<Model>> {
19
+ return new CollectionDictionary(this, prop);
20
+ }
21
+
22
+ /**
23
+ * Iterator that allow to iterate collection items
24
+ */
25
+ [Symbol.iterator](): Iterator<Model> {
26
+ // .values() returns Iterator instance for array
27
+ return this.items.values();
28
+ }
29
+
30
+ /**
31
+ * get collection length
32
+ */
33
+ get length(): number {
34
+ return this.items.length;
35
+ }
36
+
37
+ /**
38
+ * method returns amount of fields from passed items
39
+ * @param field Name of field for calculation
40
+ * @param items (optional) Array of items need to be calculated. All collection's items by default
41
+ */
42
+ protected getSummary(field: string, items: Model[] = this.toArray()): number {
43
+ return items.reduce((sum: number, item: Model) => sum += item[field], 0);
44
+ }
45
+
46
+ /**
47
+ * Get list of items ids
48
+ */
49
+ getIds(): number[] {
50
+ return this.items.map((item: Model): number => item['id']);
51
+ }
52
+
53
+ /**
54
+ * Get single item by id
55
+ */
56
+ getById(id: number): Model {
57
+ return this.items.find((item: Model): boolean => item['id'] === id);
58
+ }
59
+
60
+ getByIds(ids: number[]): Model[] {
61
+ return this.items.filter((item: Model): boolean => ids.includes(item['id']));
62
+ }
63
+
64
+ /**
65
+ * Get total sum of items by field
66
+ * @param field Name of the field for sum
67
+ */
68
+ sumBy(field: string): number {
69
+ return +this.items.reduce((sum: number, item: Model): number => sum + Number(item[field]), 0).toFixed(2);
70
+ }
71
+
72
+ toArray(): Model[] {
73
+ return [...this.items];
74
+ }
75
+
76
+ get first(): Model {
77
+ return first(this.items);
78
+ }
79
+
80
+ get last(): Model {
81
+ return last(this.items);
82
+ }
83
+ }
@@ -0,0 +1,171 @@
1
+ import { AbstractCollection } from './abstract.collection';
2
+ import { BankAccountTypeEnum } from '../db/Enums/bank-account-type.enum';
3
+ import { TankTypeEnum } from '../db/Enums/tank-type.enum';
4
+ import { BankAccount } from '../models/bank/bank-account';
5
+ import { BankAccountProperty } from '../models/bank/bank-account-property';
6
+ import { Property } from '../models/property/property';
7
+ import flatten from 'lodash/flatten';
8
+ import uniqBy from 'lodash/uniqBy';
9
+ import concat from 'lodash/concat';
10
+ import { TYPE_LOAN } from '../models/bank/type-loan.const';
11
+
12
+ /**
13
+ * Collection of bank accounts.
14
+ */
15
+ export class BankAccountCollection extends AbstractCollection<BankAccount> {
16
+ /**
17
+ * get list of bank accounts with passed types
18
+ */
19
+ getByType(types: BankAccountTypeEnum | BankAccountTypeEnum[], isExclude: boolean = false): BankAccount[] {
20
+ // get types always as array (if only one passed)
21
+ const typesArray: BankAccountTypeEnum[] = concat(types);
22
+ return this.items.filter((bankAccount: BankAccount) => {
23
+ if (isExclude) {
24
+ return !typesArray.includes(bankAccount.type);
25
+ }
26
+ return typesArray.includes(bankAccount.type);
27
+ });
28
+ }
29
+
30
+ /**
31
+ * get amount of initial loans
32
+ */
33
+ getInitialLoanAmount(): number {
34
+ return this.getByType(TYPE_LOAN)
35
+ .reduce((sum: number, bankAccount: BankAccount) => {
36
+ return sum += bankAccount.balances.length ? bankAccount.getOpeningBalance() : 0;
37
+ }, 0);
38
+ }
39
+
40
+ /**
41
+ * get amount of current loans
42
+ */
43
+ getCurrentLoanAmount(): number {
44
+ return this.getByType(TYPE_LOAN)
45
+ .reduce((sum: number, bankAccount: BankAccount) => {
46
+ return sum += bankAccount.currentBalance;
47
+ }, 0);
48
+ }
49
+
50
+ /**
51
+ * get collection filtered by property id
52
+ */
53
+ getByPropertyId(id: number): BankAccountCollection {
54
+ return new BankAccountCollection(this.items.filter((bankAccount: BankAccount) => {
55
+ return bankAccount.bankAccountProperties.find((bankAccountProperty: BankAccountProperty) => {
56
+ return bankAccountProperty.property.id === id;
57
+ });
58
+ }));
59
+ }
60
+
61
+ /**
62
+ * get collection filtered by properties ids
63
+ */
64
+ getByPropertiesIds(ids: number[]): BankAccountCollection {
65
+ return new BankAccountCollection(
66
+ this.items.filter((bankAccount: BankAccount) => {
67
+ return bankAccount.bankAccountProperties.find((bankAccountProperty: BankAccountProperty) => {
68
+ return ids.includes(bankAccountProperty.property.id);
69
+ });
70
+ })
71
+ );
72
+ }
73
+
74
+ /**
75
+ * get collection of active bank accounts
76
+ */
77
+ getActiveBankAccounts(): BankAccountCollection {
78
+ return new BankAccountCollection(this.items.filter((bankAccount: BankAccount) => {
79
+ return bankAccount.isActive();
80
+ }));
81
+ }
82
+
83
+ /**
84
+ * get reduction of loan (reduction of principle) percentage
85
+ */
86
+ getPrincipleReductionPercent(): number {
87
+ const initialLoans: number = this.getInitialLoanAmount();
88
+ const currentLoans: number = this.getCurrentLoanAmount();
89
+
90
+ if (!initialLoans) {
91
+ return 0;
92
+ }
93
+
94
+ return (initialLoans - currentLoans) / initialLoans * 100;
95
+ }
96
+
97
+ /**
98
+ * Get collection of loan bank accounts
99
+ */
100
+ getLoanAccounts(): BankAccountCollection {
101
+ return new BankAccountCollection(this.getByType(TYPE_LOAN));
102
+ }
103
+
104
+ getSavingsAccounts(): BankAccountCollection {
105
+ return new BankAccountCollection(this.getByType(TYPE_LOAN, true));
106
+ }
107
+
108
+ getOpeningBalance(): number {
109
+ return this.items.reduce((sum: number, bankAccount: BankAccount): number => sum + bankAccount.getOpeningBalance(), 0);
110
+ }
111
+
112
+ get currentBalance(): number {
113
+ return this.sumBy('currentBalance');
114
+ }
115
+
116
+ /**
117
+ * Get Collection of bank accounts with property tank type
118
+ */
119
+ getPropertyBankAccounts(): BankAccountCollection {
120
+ return new BankAccountCollection(
121
+ this.items.filter((bankAccount: BankAccount): boolean => bankAccount.isPropertyTank())
122
+ );
123
+ }
124
+
125
+ /**
126
+ * Get Collection of bank accounts with work tank type
127
+ */
128
+ getWorkBankAccounts(): BankAccountCollection {
129
+ return new BankAccountCollection(
130
+ this.items.filter((bankAccount: BankAccount): boolean => bankAccount.isWorkTank())
131
+ );
132
+ }
133
+
134
+ /**
135
+ * Get Collection of bank accounts by tank type
136
+ */
137
+ getByTankType(tankType: TankTypeEnum): BankAccountCollection {
138
+ return new BankAccountCollection(
139
+ this.items.filter((bankAccount: BankAccount): boolean => bankAccount.tankType === tankType)
140
+ );
141
+ }
142
+
143
+ /**
144
+ * Get list of all bank account properties
145
+ */
146
+ getBankAccountPropertiesList(): BankAccountProperty[] {
147
+ return flatten(
148
+ this.items.map((bankAccount: BankAccount): BankAccountProperty[] => {
149
+ return bankAccount.bankAccountProperties;
150
+ })
151
+ );
152
+ }
153
+
154
+ /**
155
+ * Get lis of unique properties from all bank accounts properties
156
+ */
157
+ getProperties(): Property[] {
158
+ return uniqBy(
159
+ this.getBankAccountPropertiesList().map((bankAccountProperty: BankAccountProperty) => {
160
+ return bankAccountProperty.property;
161
+ }),
162
+ 'id'
163
+ );
164
+ }
165
+
166
+ getPropertyBalanceAmount(propertyId: number): number {
167
+ return this.items.reduce((sum: number, bankAccount: BankAccount): number => {
168
+ return sum + bankAccount.getPropertyBalanceAmount(propertyId);
169
+ }, 0);
170
+ }
171
+ }
@@ -0,0 +1,153 @@
1
+ import { TransactionOperationEnum } from '../db/Enums/transaction-operation.enum';
2
+ import { BankTransaction } from '../models/bank/bank-transaction';
3
+ import { MonthNumberEnum } from '../models/financial-year/month-number.enum';
4
+ import { IncomeSource } from '../models/income-source/income-source';
5
+ import { BankAccount } from '../models/bank/bank-account';
6
+ import { AbstractCollection } from './abstract.collection';
7
+ import { CollectionDictionary } from './collection-dictionary';
8
+ import { TransactionAllocationCollection } from './transaction-allocation.collection';
9
+
10
+ /**
11
+ * Maximal delay between transfer transactions
12
+ */
13
+ const TRANSACTION_TRANSFER_DELAY: number = 96 * 3600 * 1000;
14
+
15
+ /**
16
+ * Collection of bank transactions.
17
+ * IMPORTANT: Create this collection based on bank transactions from TransactionAllocationService
18
+ * @TODO find way to accept interface with allocation instead of bankTransaction to prevent wrong usage
19
+ * because all amounts calculates with allocated amounts but not from bank transactions amounts.
20
+ */
21
+ export class BankTransactionCollection extends AbstractCollection<BankTransaction> {
22
+ getAmount(): number {
23
+ return this.sumBy('amount');
24
+ }
25
+
26
+ /**
27
+ * Difference between total bank transactions amount and sum of allocations for passed bank transactions
28
+ */
29
+ getUnallocatedAmount(allocations: TransactionAllocationCollection) {
30
+ return +(this.getAmount() - allocations.getByBankTransactionsIds(this.getIds()).amount).toFixed(2);
31
+ }
32
+
33
+ /**
34
+ * get date of the last transaction
35
+ */
36
+ getLastTransactionDate(): Date {
37
+ return new Date(Math.max.apply(Math, this.items.map((bankTransaction: BankTransaction) => bankTransaction.date)));
38
+ }
39
+
40
+ /**
41
+ * get list of credit transactions
42
+ */
43
+ get creditTransactions(): BankTransactionCollection {
44
+ return new BankTransactionCollection(
45
+ this.items.filter((bankTransaction: BankTransaction) => bankTransaction.isCredit())
46
+ );
47
+ }
48
+
49
+ /**
50
+ * get list of debit transactions
51
+ */
52
+ get debitTransactions(): BankTransactionCollection {
53
+ return new BankTransactionCollection(
54
+ this.items.filter((bankTransaction: BankTransaction) => bankTransaction.isDebit())
55
+ );
56
+ }
57
+
58
+ /**
59
+ * get difference between debit and credit transactions amounts
60
+ */
61
+ get balanceAmount(): number {
62
+ return this.items.reduce((sum: number, bankTransaction: BankTransaction) => sum + bankTransaction.balanceAmount, 0);
63
+ }
64
+
65
+ /**
66
+ * get list of transactions for passed month
67
+ * @param monthIndex Month number from 0 to 11
68
+ */
69
+ getTransactionsByMonth(monthIndex: MonthNumberEnum): BankTransactionCollection {
70
+ return new BankTransactionCollection(
71
+ this.items.filter((bankTransaction: BankTransaction) => bankTransaction.date.getMonth() === monthIndex)
72
+ );
73
+ }
74
+
75
+ /**
76
+ * get list of transactions by provided bank accounts
77
+ * @param bankAccounts by which transactions should be returned
78
+ */
79
+ getByBankAccounts(bankAccounts: BankAccount[]): BankTransaction[] {
80
+ const bankAccountIds: number[] = bankAccounts.map((bankAccount: BankAccount) => bankAccount.id);
81
+ return this.items.filter((bankTransaction: BankTransaction) => bankAccountIds.includes(bankTransaction.bankAccount.id));
82
+ }
83
+
84
+ /**
85
+ * get list of transactions by provided ids of bank accounts
86
+ * @param ids of bank accounts
87
+ */
88
+ getByBankAccountsIds(ids: number[]): BankTransactionCollection {
89
+ return new BankTransactionCollection(
90
+ this.items.filter((bankTransaction: BankTransaction) => ids.includes(bankTransaction.bankAccount.id))
91
+ );
92
+ }
93
+
94
+ /**
95
+ * Find Bank Transaction available for transfer
96
+ */
97
+ findTransfer(bankTransaction: BankTransaction): BankTransaction {
98
+ return this.items.find((item: BankTransaction): boolean => {
99
+ return item.amount + bankTransaction.amount === 0 &&
100
+ Math.abs(bankTransaction.date.getTime() - item.date.getTime()) < TRANSACTION_TRANSFER_DELAY;
101
+ });
102
+ }
103
+
104
+ /**
105
+ * Group bank transactions by transaction id.
106
+ * Each group is bank transaction collection and contains bank transactions related to transactions via allocations
107
+ */
108
+ groupByTransaction(allocations: TransactionAllocationCollection): CollectionDictionary<BankTransactionCollection> {
109
+ // Group allocations by transaction id
110
+ const allocationsByTransactions = new CollectionDictionary(allocations, 'transaction');
111
+ // Init an empty dictionary we will fill below
112
+ const bankTransactionsByTransactions: CollectionDictionary<BankTransactionCollection> = new CollectionDictionary(new BankTransactionCollection([]));
113
+
114
+ // Fill dictionary with the same keys as at allocationsByTransactions
115
+ allocationsByTransactions.keys.forEach((key: string): void => {
116
+ bankTransactionsByTransactions.add(key, this.getByAllocations(allocationsByTransactions.get(key)));
117
+ });
118
+
119
+ return bankTransactionsByTransactions;
120
+ }
121
+
122
+ /**
123
+ * Get collection of bank transactions related with passed allocations
124
+ */
125
+ getByAllocations(allocations: TransactionAllocationCollection): BankTransactionCollection {
126
+ return new BankTransactionCollection(
127
+ this.items.filter((bankTransaction: BankTransaction): boolean => allocations.hasBankTransaction(bankTransaction))
128
+ );
129
+ }
130
+
131
+ /**
132
+ * Set allocate operation for bank transactions with amounts equal to salary
133
+ */
134
+ preselectAllocateOperationForSalary(salaryIncomeSources: IncomeSource[]): void {
135
+ // incomeSource.salaryForecasts[0] because each income source has only one forecast for current fin year
136
+ const salaryAmounts: number[] = salaryIncomeSources.map((incomeSource: IncomeSource): number => incomeSource.salaryForecasts[0]?.netPay || 0);
137
+
138
+ this.items.forEach((bankTransaction: BankTransaction): void => {
139
+ if (salaryAmounts.includes(bankTransaction.amount)) {
140
+ bankTransaction.operation = TransactionOperationEnum.ALLOCATE;
141
+ }
142
+ });
143
+ }
144
+
145
+ /**
146
+ * Get collection of unallocated bankTransactions
147
+ */
148
+ getUnallocatedBankTransactions(allocations: TransactionAllocationCollection): BankTransactionCollection {
149
+ return new BankTransactionCollection(
150
+ this.items.filter((bankTransaction: BankTransaction): boolean => !bankTransaction.isAllocated(allocations))
151
+ );
152
+ }
153
+ }
@@ -0,0 +1,42 @@
1
+ import { AbstractCollection } from './abstract.collection';
2
+ import { ClientMovement } from '../models/client/client-movement';
3
+ import { EmployeeCollection } from './employee.collection';
4
+ import { ClientCollection } from './client.collection';
5
+ import { FirmTypeEnum } from '../db/Enums/firm-type.enum';
6
+
7
+ /**
8
+ * Collection of tax review
9
+ */
10
+ export class ClientMovementCollection extends AbstractCollection<ClientMovement> {
11
+ get active(): ClientMovementCollection {
12
+ return new ClientMovementCollection(this.items.filter((clientMovement: ClientMovement) => !clientMovement.dateTo));
13
+ }
14
+
15
+ get employees(): EmployeeCollection {
16
+ return new EmployeeCollection(this.items.map((clientMovement: ClientMovement) => clientMovement.employee));
17
+ }
18
+
19
+ get clients(): ClientCollection {
20
+ return new EmployeeCollection(this.items.map((clientMovement: ClientMovement) => clientMovement.client));
21
+ }
22
+
23
+ get accountant(): ClientMovement {
24
+ return this.items.filter((clientMovement: ClientMovement) => clientMovement.firm.type === FirmTypeEnum.ACCOUNTANT)[0] ?? null;
25
+ }
26
+
27
+ get advisors(): ClientMovementCollection {
28
+ return new ClientMovementCollection(
29
+ this.items.filter((clientMovement: ClientMovement) => clientMovement.firm.type === FirmTypeEnum.ADVISOR)
30
+ );
31
+ }
32
+
33
+ getByEmployeeId(id: number): ClientMovementCollection {
34
+ return new ClientMovementCollection(this.items.filter((clientMovement: ClientMovement) => clientMovement.employee.id === id));
35
+ }
36
+
37
+ getByFirmType(firmType: FirmTypeEnum): ClientMovementCollection {
38
+ return new ClientMovementCollection(
39
+ this.items.filter((clientMovement: ClientMovement) => clientMovement.firm.type === firmType)
40
+ );
41
+ }
42
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Collection of employee clients tax summary information
3
+ */
4
+ import { AbstractCollection } from './abstract.collection';
5
+ import { ClientPortfolioReport } from '../models/client/client-portfolio-report';
6
+
7
+ export class ClientPortfolioReportCollection extends AbstractCollection<ClientPortfolioReport> {
8
+ get marketValue(): number {
9
+ return this.sumBy('marketValue');
10
+ }
11
+
12
+ get loanBalance(): number {
13
+ return this.sumBy('loanBalance');
14
+ }
15
+
16
+ get equityPosition(): number {
17
+ return this.sumBy('equityPosition');
18
+ }
19
+
20
+ /**
21
+ * Get average market value if there are more than 1 item in the collection
22
+ */
23
+ get averageMarketValue(): number {
24
+ return this.items.length > 1 ? this.marketValue / this.items.length : null;
25
+ }
26
+
27
+ /**
28
+ * Get average loan balance if there are more than 1 item in the collection
29
+ */
30
+ get averageLoanBalance(): number {
31
+ return this.items.length > 1 ? this.loanBalance / this.items.length : null;
32
+ }
33
+
34
+ /**
35
+ * Get average equity position if there are more than 1 item in the collection
36
+ */
37
+ get averageEquityPosition(): number {
38
+ return this.items.length > 1 ? this.equityPosition / this.items.length : null;
39
+ }
40
+
41
+ /**
42
+ * Return report by provided category name
43
+ */
44
+ getByCategoryName(name: string): ClientPortfolioReport {
45
+ return this.items.find((item: ClientPortfolioReport): boolean => item.category === name);
46
+ }
47
+ }
@@ -0,0 +1,5 @@
1
+ import { AbstractCollection } from './abstract.collection';
2
+ import { User } from '../models/user/user';
3
+
4
+ export class ClientCollection extends AbstractCollection<User> {
5
+ }