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,55 @@
1
+ import { PropertyForecast as PropertyForecastBase } from '../../db/Models/property-forecast';
2
+ import { FinancialYear } from '../financial-year/financial-year';
3
+ import { Transform } from 'class-transformer';
4
+
5
+ export class PropertyForecast extends PropertyForecastBase {
6
+ @Transform(({ value }) => +value)
7
+ income: number;
8
+
9
+ @Transform(({ value }) => -Math.abs(+value))
10
+ expense: number;
11
+
12
+ @Transform(({ value }) => -Math.abs(+value))
13
+ interest: number;
14
+
15
+ @Transform(({ value }) => -Math.abs(+value))
16
+ depreciation: number;
17
+
18
+ @Transform(({ value }) => +value)
19
+ loanBalance: number;
20
+
21
+ @Transform(({ value }) => +value)
22
+ marketValue: number;
23
+
24
+ /**
25
+ * Get cash position
26
+ * Cash Position = Income - Expense - Interest
27
+ */
28
+ get cashPosition(): number {
29
+ return this.income + this.expense + this.interest;
30
+ }
31
+
32
+
33
+ /**
34
+ * Get tax position
35
+ * Tax Position = Income - Expense - Interest - Depreciation
36
+ */
37
+ get taxPosition(): number {
38
+ return this.cashPosition + this.depreciation;
39
+ }
40
+
41
+ /**
42
+ * Get rental return percent
43
+ * Rental Return = Income / Market Value
44
+ */
45
+ get rentalReturn(): number {
46
+ return this.income / this.marketValue;
47
+ }
48
+
49
+ /**
50
+ * Check if forecast is for real current fin year (not selected in the sidebar)
51
+ */
52
+ isCurrentYear(): boolean {
53
+ return this.financialYear === new FinancialYear(new Date()).year;
54
+ }
55
+ }
@@ -0,0 +1,50 @@
1
+ import { PropertyOwner as PropertyOwnerBase } from '../../db/Models/property-owner';
2
+ import { PropertyOwnerStatusEnum } from '../../db/Enums/property-owner-status.enum';
3
+ import { Transform, Type } from 'class-transformer';
4
+ import { User } from '../user/user';
5
+ import { RegistrationInvite } from '../registration-invite/registration-invite';
6
+ import { Property } from './property';
7
+
8
+ export class PropertyOwner extends PropertyOwnerBase {
9
+ @Type(() => Date)
10
+ fromDate: Date;
11
+
12
+ @Type(() => Date)
13
+ toDate: Date;
14
+
15
+ @Type(() => User)
16
+ user: User;
17
+
18
+ @Type(() => RegistrationInvite)
19
+ invite: RegistrationInvite;
20
+
21
+ @Type(() => Property)
22
+ property: Property;
23
+
24
+ @Transform(({obj}) => obj.user ? obj.user.email : obj.invite.email)
25
+ email: string;
26
+
27
+ isAccepted(): boolean {
28
+ return this.status === PropertyOwnerStatusEnum.APPROVED;
29
+ }
30
+
31
+ isPending(): boolean {
32
+ return this.status === PropertyOwnerStatusEnum.PENDING;
33
+ }
34
+
35
+ isRejected(): boolean {
36
+ return this.status === PropertyOwnerStatusEnum.REJECTED;
37
+ }
38
+
39
+ get statusName(): string {
40
+ return PropertyOwnerStatusEnum[this.status]?.toLowerCase();
41
+ }
42
+
43
+ /**
44
+ * Return full user name if user is already registered.
45
+ * Otherwise - return first name from invitation
46
+ */
47
+ get fullName(): string {
48
+ return this.user ? this.user.fullName : `${this.invite.firstName}`;
49
+ }
50
+ }
@@ -0,0 +1,10 @@
1
+ import { PropertySold as PropertySoldBase } from '../../db/Models/property-sold';
2
+ import { Type } from 'class-transformer';
3
+
4
+ export class PropertySold extends PropertySoldBase {
5
+ @Type(() => Date)
6
+ date: Date;
7
+
8
+ @Type(() => Date)
9
+ contractDate: Date;
10
+ }
@@ -0,0 +1,11 @@
1
+ import { PropertySubscription as PropertySubscriptionBase } from '../../db/Models/property-subscription';
2
+ import { Type } from 'class-transformer';
3
+ import { User } from '../user/user';
4
+
5
+ export class PropertySubscription extends PropertySubscriptionBase {
6
+ @Type(() => Date)
7
+ createdAt: Date;
8
+
9
+ @Type(() => User)
10
+ user: User;
11
+ }
@@ -0,0 +1,24 @@
1
+ import { PropertyValuation as PropertyValuationBase } from '../../db/Models/property-valuation';
2
+ import { Exclude, Type } from 'class-transformer';
3
+ import { PropertyDocument } from './property-document';
4
+ import { FinancialYear } from '../financial-year/financial-year';
5
+
6
+ export class PropertyValuation extends PropertyValuationBase {
7
+ @Type(() => Date)
8
+ date: Date;
9
+
10
+ @Type(() => PropertyDocument)
11
+ document: PropertyDocument;
12
+
13
+ // could be File when just added new image
14
+ @Exclude()
15
+ documentFile: File;
16
+
17
+ get financialYear(): number {
18
+ return new FinancialYear(this.date).year;
19
+ }
20
+
21
+ isCurrentYear(): boolean {
22
+ return this.financialYear === new FinancialYear(new Date()).year;
23
+ }
24
+ }
@@ -0,0 +1,157 @@
1
+ import { Property as PropertyBase } from '../../db/Models/property';
2
+ import { CapitalCostProperty } from '../../db/Models/capital-cost-property';
3
+ import { Documentable } from '../../interfaces/documentable.interface';
4
+ import { IDocument } from '../../interfaces/document.interface';
5
+ import { PropertyOwner } from '../../db/Models/property-owner';
6
+ import { PropertySubscription } from './property-subscription';
7
+ import { Exclude, Type } from 'class-transformer';
8
+ import { Photoable } from '../../interfaces/photoable';
9
+ import { Address } from '../address/address';
10
+ import { PropertyCategory } from './property-category';
11
+ import { PropertyValuation } from './property-valuation';
12
+ import { PropertyForecast } from './property-forecast';
13
+ import { PropertyCategoryMovement } from './property-category-movement';
14
+ import { User } from '../user/user';
15
+ import { FinancialYear } from '../financial-year/financial-year';
16
+
17
+ export class Property extends PropertyBase implements Photoable, Documentable {
18
+ @Type(() => Date)
19
+ purchaseDate: Date;
20
+
21
+ @Type(() => Date)
22
+ settlementDate: Date;
23
+
24
+ @Type(() => Address)
25
+ address: Address;
26
+
27
+ @Type(() => PropertyCategory)
28
+ category: PropertyCategory;
29
+
30
+ @Type(() => PropertyValuation)
31
+ valuations: PropertyValuation[];
32
+
33
+ @Type(() => PropertyForecast)
34
+ forecasts: PropertyForecast[];
35
+
36
+ @Type(() => PropertyCategoryMovement)
37
+ categoryMovements: PropertyCategoryMovement[];
38
+
39
+ @Type(() => User)
40
+ user: User;
41
+
42
+ @Type(() => PropertySubscription)
43
+ subscriptions: PropertySubscription[];
44
+
45
+ // could be File when just added new image
46
+ @Exclude()
47
+ documentFile: File;
48
+
49
+ // @TODO refactor with spare tank
50
+ documents: IDocument[];
51
+
52
+ get name(): string {
53
+ return this.address.name;
54
+ }
55
+
56
+ get isActive(): boolean {
57
+ return !!this.subscriptions?.length;
58
+ }
59
+
60
+ isOwn(): boolean {
61
+ return this.user.id === +localStorage.getItem('userId');
62
+ }
63
+
64
+ /**
65
+ * Get initials of property. Required by Photoable interface
66
+ */
67
+ getInitials(): string {
68
+ return this.name.split(' ')[1].slice(0, 2);
69
+ }
70
+
71
+ /**
72
+ * Get property photo. Required by Photoable interface
73
+ */
74
+ getPhoto(): string {
75
+ return this.photo;
76
+ }
77
+
78
+ get capitalCostsTotalAmount(): number {
79
+ return this.capitalCosts.reduce((sum: number, capitalCost: CapitalCostProperty): number => sum + capitalCost.amount, 0);
80
+ }
81
+
82
+ get currentYearValuations(): PropertyValuation[] {
83
+ return this.valuations.filter((valuation: PropertyValuation): boolean => valuation.isCurrentYear());
84
+ }
85
+
86
+ get marketValue(): number {
87
+ return this.actualValuation?.marketValue || 0;
88
+ }
89
+
90
+ get currentYearForecast(): PropertyForecast {
91
+ return this.forecasts.find((forecast: PropertyForecast): boolean => forecast.isCurrentYear());
92
+ }
93
+
94
+ get forecastedRentalReturn(): number {
95
+ return this.currentYearForecast?.rentalReturn || 0;
96
+ }
97
+
98
+ get forecastedTaxPosition(): number {
99
+ return this.currentYearForecast?.taxPosition || 0;
100
+ }
101
+
102
+ get firstForecastYear(): number {
103
+ return this.forecasts.reduce((min: number, forecast: PropertyForecast): number => {
104
+ return min > forecast.financialYear ? forecast.financialYear : min;
105
+ }, new FinancialYear().year);
106
+ }
107
+
108
+ get marketValueGrowth(): number {
109
+ return (this.marketValue - this.purchasePrice) / this.marketValue;
110
+ }
111
+
112
+ get myShare(): PropertyOwner {
113
+ return this.owners.find((owner: PropertyOwner): boolean => owner.user.id === +localStorage.getItem('userId'));
114
+ }
115
+
116
+ /**
117
+ * exact claim percent includes ownership
118
+ */
119
+ get ownershipClaimPercent(): number {
120
+ return this.ownershipPercent * this.claimPercent / 100;
121
+ }
122
+
123
+ get actualValuation(): PropertyValuation {
124
+ return this.valuations.reduce((maxDateValuation: PropertyValuation, valuation: PropertyValuation) => {
125
+ return maxDateValuation.date > valuation.date ? maxDateValuation : valuation;
126
+ }, this.valuations[0]);
127
+ }
128
+
129
+ get ownershipPercent(): number {
130
+ return this.myShare.ownershipPercent;
131
+ }
132
+
133
+ get previousCategory(): PropertyCategory {
134
+ let previousCategory: PropertyCategory;
135
+
136
+ const movementsCount: number = this.categoryMovements.length;
137
+
138
+ if (movementsCount > 1) {
139
+ previousCategory = this.categoryMovements[movementsCount - 2].propertyCategory;
140
+ }
141
+
142
+ return previousCategory;
143
+ }
144
+
145
+ getCurrentSubscription(): PropertySubscription {
146
+ // always return first element because subscriptions array contains only one element
147
+ return this.subscriptions[0];
148
+ }
149
+
150
+ getForecastByYear(year: number): PropertyForecast {
151
+ return this.forecasts.find((forecast: PropertyForecast): boolean => forecast.financialYear === year);
152
+ }
153
+
154
+ get isShared(): boolean {
155
+ return this.owners.length > 1;
156
+ }
157
+ }
@@ -0,0 +1,12 @@
1
+ import { RegistrationInvite as RegistrationInviteBase } from '../../db/Models/registration-invite';
2
+ import { Photoable } from '../../interfaces/photoable';
3
+
4
+ export class RegistrationInvite extends RegistrationInviteBase implements Photoable {
5
+ getInitials(): string {
6
+ return `${this.firstName[0].toUpperCase()}${this.firstName[1]}`;
7
+ }
8
+
9
+ getPhoto(): string {
10
+ return null;
11
+ }
12
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Constant with list of URLs
3
+ */
4
+ export const MODULE_URL_LIST: { [key: string]: string } = {
5
+ dashboard: '/client/dashboard',
6
+ propertyTank: '/client/property-tank',
7
+ workTank: '/client/work-tank',
8
+ spareTank: '/client/spare-tank',
9
+ taxSummary: '/client/tax-summary',
10
+ myAccount: '/client/my-account/subscription'
11
+ };
@@ -0,0 +1,8 @@
1
+ import { ServicePayment as BaseServicePayment } from '../../db/Models/service-payment';
2
+ import { ServiceSubscription } from './service-subscription';
3
+ import { Type } from 'class-transformer';
4
+
5
+ export class ServicePayment extends BaseServicePayment {
6
+ @Type(() => ServiceSubscription)
7
+ subscription: ServiceSubscription;
8
+ }
@@ -0,0 +1,8 @@
1
+ import { ServicePrice as BaseServicePrice } from '../../db/Models/service-price';
2
+ import { ServiceProduct } from './service-product';
3
+ import { Type } from 'class-transformer';
4
+
5
+ export class ServicePrice extends BaseServicePrice {
6
+ @Type(() => ServiceProduct)
7
+ product: ServiceProduct;
8
+ }
@@ -0,0 +1,11 @@
1
+ import { ServiceProduct as BaseServiceProduct } from '../../db/Models/service-product';
2
+
3
+ export class ServiceProduct extends BaseServiceProduct {
4
+ isProperty(): boolean {
5
+ return this.title === 'Property';
6
+ }
7
+
8
+ isWork(): boolean {
9
+ return this.title === 'Work Tank';
10
+ }
11
+ }
@@ -0,0 +1,12 @@
1
+ import { ServiceSubscriptionItem as ServiceSubscriptionItemBase } from '../../db/Models/service-subscription-item';
2
+ import { ServicePrice } from './service-price';
3
+ import { Type } from 'class-transformer';
4
+
5
+ export class ServiceSubscriptionItem extends ServiceSubscriptionItemBase {
6
+ @Type(() => ServicePrice)
7
+ price: ServicePrice;
8
+
9
+ get total(): number {
10
+ return this.price.amount * this.quantity;
11
+ }
12
+ }
@@ -0,0 +1,151 @@
1
+ import { ServiceSubscription as ServiceSubscriptionBase } from '../../db/Models/service-subscription';
2
+ import { ServiceSubscriptionItem } from './service-subscription-item';
3
+ import { SubscriptionTypeEnum } from './subscription-type.enum';
4
+ import { SUBSCRIPTION_TITLE } from './subscription-title.const';
5
+ import { SUBSCRIPTION_DESCRIPTION } from './subscription-description.const';
6
+ import { UserRolesEnum } from '../../db/Enums/user-roles.enum';
7
+ import { Type } from 'class-transformer';
8
+
9
+ const PROPERTY_INVESTOR_MAX_PROPERTIES = 2;
10
+
11
+ export class ServiceSubscription extends ServiceSubscriptionBase {
12
+ @Type(() => Date)
13
+ startDate: Date;
14
+
15
+ @Type(() => Date)
16
+ endDate: Date;
17
+
18
+ @Type(() => ServiceSubscriptionItem)
19
+ items: ServiceSubscriptionItem[];
20
+
21
+ // Number of days after which the trial time will be expired
22
+ lastTrialDays: number = 4;
23
+
24
+ get isTrial(): boolean {
25
+ return !this.stripeId;
26
+ }
27
+
28
+ get price(): number {
29
+ return this.items.reduce((sum: number, item: ServiceSubscriptionItem) => sum + item.total, 0);
30
+ }
31
+
32
+ get propertyQuantity(): number {
33
+ return this.propertyTankItem ? this.propertyTankItem.quantity : 0;
34
+ }
35
+
36
+ /**
37
+ * get type of subscription
38
+ */
39
+ get type(): SubscriptionTypeEnum {
40
+ const workTankProduct: ServiceSubscriptionItem = this.items.find((item: ServiceSubscriptionItem): boolean => {
41
+ return item.price.product.isWork();
42
+ });
43
+
44
+ if (!this.workTankItem || !this.isActive) {
45
+ return SubscriptionTypeEnum.WITHOUT_SUBSCRIPTION;
46
+ }
47
+
48
+ if (this.items.length === 1 && !!workTankProduct) {
49
+ return SubscriptionTypeEnum.INDIVIDUAL;
50
+ }
51
+
52
+ const propertyTankProduct: ServiceSubscriptionItem = this.items.find((item: ServiceSubscriptionItem): boolean => {
53
+ return item.price.product.isProperty();
54
+ });
55
+
56
+ if (!!this.propertyTankItem && propertyTankProduct.quantity === PROPERTY_INVESTOR_MAX_PROPERTIES) {
57
+ return SubscriptionTypeEnum.INVESTOR;
58
+ }
59
+
60
+ return SubscriptionTypeEnum.INVESTOR_PLUS;
61
+ }
62
+
63
+ /**
64
+ * get title of subscription
65
+ */
66
+ get title(): string {
67
+ return SUBSCRIPTION_TITLE[this.type];
68
+ }
69
+
70
+ /**
71
+ * get description of subscription
72
+ */
73
+ get description(): string {
74
+ return SUBSCRIPTION_DESCRIPTION[this.type];
75
+ }
76
+
77
+ get workTankItem(): ServiceSubscriptionItem {
78
+ return this.items.find((item: ServiceSubscriptionItem): boolean => item.price.product.isWork());
79
+ }
80
+
81
+ get propertyTankItem(): ServiceSubscriptionItem {
82
+ return this.items.find((item: ServiceSubscriptionItem): boolean => item.price.product.isProperty());
83
+ }
84
+
85
+ /**
86
+ * This check on getIsActive need for firm. Accountant has a endDate, but user has not endDate
87
+ * and for user we add check for endDate
88
+ */
89
+ get isActive(): boolean {
90
+ return this.endDate ? new Date(this.endDate).getTime() > new Date().getTime() : true;
91
+ }
92
+
93
+ get daysRemain(): number {
94
+ const daysRemains: number = Math.round(
95
+ (new Date(this.endDate).getTime() - new Date().getTime()) / (1000 * 3600 * 24)
96
+ );
97
+
98
+ return daysRemains > 0 ? daysRemains : 0;
99
+ }
100
+
101
+ getTitle(): string {
102
+ return this.isTrial ? 'Trial period' : this.title;
103
+ }
104
+
105
+ /**
106
+ * Check if subscription is Individual
107
+ * Subscription is individual when user have only one product and only work tank
108
+ */
109
+ isIndividual(): boolean {
110
+ return this.type === SubscriptionTypeEnum.INDIVIDUAL;
111
+ }
112
+
113
+ /**
114
+ * Check if subscription is Investor
115
+ * Subscription is investor when user have property tank product and max count of properties is 2
116
+ */
117
+ isInvestor(): boolean {
118
+ return this.type === SubscriptionTypeEnum.INVESTOR;
119
+ }
120
+
121
+ /**
122
+ * Check if subscription is Investor Plus
123
+ * Subscription is investor when user have property tank product and max count of properties more than 2
124
+ */
125
+ isInvestorPlus(): boolean {
126
+ return this.type === SubscriptionTypeEnum.INVESTOR_PLUS;
127
+ }
128
+
129
+ /**
130
+ * Check if trial expired
131
+ */
132
+ isTrialExpired(): boolean {
133
+ return this.daysRemain && this.daysRemain <= 0;
134
+ }
135
+
136
+ isTrialExpiring(): boolean {
137
+ return this.daysRemain > 0 && this.daysRemain <= this.lastTrialDays;
138
+ }
139
+
140
+ hasPropertyTank(): boolean {
141
+ return !!this.items.find((subscriptionItem: ServiceSubscriptionItem) => {
142
+ return subscriptionItem.price.product.role.includes(UserRolesEnum.PROPERTY_TANK);
143
+ });
144
+ }
145
+
146
+ hasWorkTank() {
147
+ return !!this.items.find((subscriptionItem: ServiceSubscriptionItem) => {
148
+ return subscriptionItem.price.product.role.includes(UserRolesEnum.WORK_TANK);
149
+ });
150
+ }
151
+ }
@@ -0,0 +1,8 @@
1
+ import { SubscriptionTypeEnum } from './subscription-type.enum';
2
+
3
+ export const SUBSCRIPTION_DESCRIPTION: {[key: number]: string} = {
4
+ [SubscriptionTypeEnum.WITHOUT_SUBSCRIPTION]: 'Without subscription',
5
+ [SubscriptionTypeEnum.INDIVIDUAL]: 'Manage income and expenses via live bank feeds. Keep receipts safe, maximise deductions & minimise tax.',
6
+ [SubscriptionTypeEnum.INVESTOR]: 'Property made easy with smart tax tools and real-time information to help control how much tax you pay.',
7
+ [SubscriptionTypeEnum.INVESTOR_PLUS]: 'Add your whole portfolio, including investment properties, home and properties in trusts. For 3+ properties an extra $6 will be charged per property.'
8
+ };
@@ -0,0 +1,8 @@
1
+ import { SubscriptionTypeEnum } from './subscription-type.enum';
2
+
3
+ export const SUBSCRIPTION_TITLE: {[key: number]: string} = {
4
+ [SubscriptionTypeEnum.WITHOUT_SUBSCRIPTION]: 'Without subscription',
5
+ [SubscriptionTypeEnum.INDIVIDUAL]: 'Individual',
6
+ [SubscriptionTypeEnum.INVESTOR]: 'Investor',
7
+ [SubscriptionTypeEnum.INVESTOR_PLUS]: 'Investor plus'
8
+ };
@@ -0,0 +1,6 @@
1
+ export enum SubscriptionTypeEnum {
2
+ WITHOUT_SUBSCRIPTION = 0,
3
+ INDIVIDUAL = 1,
4
+ INVESTOR = 2,
5
+ INVESTOR_PLUS = 3
6
+ }
@@ -0,0 +1,96 @@
1
+ import { TaxReview as TaxReviewBase } from '../../db/Models/tax-review';
2
+ import { TaxReviewStatusEnum } from '../../db/Enums/tax-review-status.enum';
3
+ import { User } from '../user/user';
4
+ import { Type } from 'class-transformer';
5
+
6
+ export class TaxReview extends TaxReviewBase {
7
+ @Type(() => User)
8
+ client: User;
9
+
10
+ @Type(() => User)
11
+ employee: User;
12
+ status: TaxReviewStatusEnum;
13
+
14
+ /**
15
+ * if tax review status is 'Cancelled'
16
+ */
17
+ isCancelled(): boolean {
18
+ return this.status === TaxReviewStatusEnum.CANCELLED;
19
+ }
20
+
21
+ /**
22
+ * if tax review status is 'New'
23
+ */
24
+ isNew(): boolean {
25
+ return this.status === TaxReviewStatusEnum.NEW;
26
+ }
27
+
28
+ /**
29
+ * if tax review status is 'In progress'
30
+ */
31
+ isInProgress(): boolean {
32
+ return this.status === TaxReviewStatusEnum.IN_PROGRESS;
33
+ }
34
+
35
+ /**
36
+ * if tax review status is 'Waiting for client'
37
+ */
38
+ isWaitingForClient(): boolean {
39
+ return this.status === TaxReviewStatusEnum.WAITING_FOR_CLIENT;
40
+ }
41
+
42
+ /**
43
+ * if tax review status is 'Waiting for approval'
44
+ */
45
+ isWaitingForApproval(): boolean {
46
+ return this.status === TaxReviewStatusEnum.WAITING_FOR_APPROVAL;
47
+ }
48
+
49
+ /**
50
+ * if tax review status is 'Approved'
51
+ */
52
+ isApproved(): boolean {
53
+ return this.status === TaxReviewStatusEnum.APPROVED;
54
+ }
55
+
56
+ /**
57
+ * if tax review status is 'Completed'
58
+ */
59
+ isCompleted(): boolean {
60
+ return this.status === TaxReviewStatusEnum.COMPLETED;
61
+ }
62
+
63
+ /**
64
+ * if tax review status is 'Sent'
65
+ */
66
+ isSent(): boolean {
67
+ return this.status === TaxReviewStatusEnum.SENT;
68
+ }
69
+
70
+ /**
71
+ * if tax review status is 'Amend'
72
+ */
73
+ isAmend(): boolean {
74
+ return this.status === TaxReviewStatusEnum.AMEND;
75
+ }
76
+
77
+ /**
78
+ * If tax review is inactive
79
+ */
80
+ isInactive(): boolean {
81
+ return this.isCancelled() || this.isCompleted();
82
+ }
83
+
84
+ /**
85
+ * If tax review is active
86
+ */
87
+ isActive(): boolean {
88
+ return this.isNew() ||
89
+ this.isInProgress() ||
90
+ this.isWaitingForClient() ||
91
+ this.isWaitingForApproval() ||
92
+ this.isApproved() ||
93
+ this.isSent() ||
94
+ this.isAmend();
95
+ }
96
+ }
@@ -0,0 +1,14 @@
1
+ import { TaxReturnCategorySectionEnum } from '../../db/Enums/tax-return-category-section.enum';
2
+
3
+ /**
4
+ * Used in tax summary reports to show specific details relating to an amount in the report.
5
+ * See structure in TaxReturnCategoryItem class.
6
+ * Example an amount of $550 for property income could be comprised of 2 different property amounts of $300 and $250.
7
+ * This is useful in providing drill-down information for the tax summary report.
8
+ */
9
+ export class TaxReturnCategoryItemDetails {
10
+ amount: number;
11
+ name: string;
12
+ type: number;
13
+ section: TaxReturnCategorySectionEnum;
14
+ }