taxtank-core 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (828) hide show
  1. package/README.md +5 -5
  2. package/bundles/taxtank-core.umd.js +11900 -11707
  3. package/bundles/taxtank-core.umd.js.map +1 -1
  4. package/esm2015/lib/collections/bank-account.collection.js +135 -135
  5. package/esm2015/lib/collections/bank-transaction.collection.js +119 -119
  6. package/esm2015/lib/collections/client-movement.collection.js +31 -31
  7. package/esm2015/lib/collections/client-portfolio-report.collection.js +40 -40
  8. package/esm2015/lib/collections/client.collection.js +4 -4
  9. package/esm2015/lib/collections/collection-dictionary.js +86 -86
  10. package/esm2015/lib/collections/collection.js +74 -74
  11. package/esm2015/lib/collections/depreciation-forecast.collection.js +19 -19
  12. package/esm2015/lib/collections/depreciation.collection.js +72 -67
  13. package/esm2015/lib/collections/employee.collection.js +12 -12
  14. package/esm2015/lib/collections/income-source.collection.js +38 -38
  15. package/esm2015/lib/collections/loan.collection.js +18 -18
  16. package/esm2015/lib/collections/logbook.collection.js +97 -97
  17. package/esm2015/lib/collections/message-document.collection.js +13 -13
  18. package/esm2015/lib/collections/message.collection.js +21 -21
  19. package/esm2015/lib/collections/property.collection.js +72 -72
  20. package/esm2015/lib/collections/service-price.collection.js +10 -10
  21. package/esm2015/lib/collections/service-subscription.collection.js +17 -17
  22. package/esm2015/lib/collections/tax-return-category-item.collection.js +141 -141
  23. package/esm2015/lib/collections/tax-review.collection.js +55 -55
  24. package/esm2015/lib/collections/transaction-allocation.collection.js +40 -40
  25. package/esm2015/lib/collections/transaction.collection.js +120 -120
  26. package/esm2015/lib/collections/user-event-setting.collection.js +10 -10
  27. package/esm2015/lib/db/Enums/address-type.enum.js +6 -6
  28. package/esm2015/lib/db/Enums/bank-account-status.enum.js +6 -6
  29. package/esm2015/lib/db/Enums/bank-account-type.enum.js +12 -12
  30. package/esm2015/lib/db/Enums/bank-connection-status.enum.js +7 -7
  31. package/esm2015/lib/db/Enums/bank-transaction-type.enum.js +6 -6
  32. package/esm2015/lib/db/Enums/chart-accounts-category.enum.js +15 -15
  33. package/esm2015/lib/db/Enums/chart-accounts-etp.enum.js +9 -9
  34. package/esm2015/lib/db/Enums/chart-accounts-heading-tax-deductible.enum.js +8 -8
  35. package/esm2015/lib/db/Enums/chart-accounts-heading-taxable.enum.js +8 -8
  36. package/esm2015/lib/db/Enums/chart-accounts-heading-vehicle-list.enum.js +6 -6
  37. package/esm2015/lib/db/Enums/chart-accounts-list.enum.js +21 -21
  38. package/esm2015/lib/db/Enums/chart-accounts-metadata-list.enum.js +16 -15
  39. package/esm2015/lib/db/Enums/chart-accounts-metadata-type.enum.js +6 -6
  40. package/esm2015/lib/db/Enums/chart-accounts-type.enum.js +6 -6
  41. package/esm2015/lib/db/Enums/chat-status.enum.js +6 -6
  42. package/esm2015/lib/db/Enums/client-details-medicare-exemption.enum.js +7 -7
  43. package/esm2015/lib/db/Enums/client-details-work-depreciation-calculation.enum.js +6 -6
  44. package/esm2015/lib/db/Enums/client-details-working-holiday-maker.enum.js +7 -7
  45. package/esm2015/lib/db/Enums/client-invite-status.enum.js +6 -6
  46. package/esm2015/lib/db/Enums/client-invite-type.enum.js +6 -6
  47. package/esm2015/lib/db/Enums/depreciation-calculation-percent.enum.js +9 -9
  48. package/esm2015/lib/db/Enums/depreciation-calculation.enum.js +9 -9
  49. package/esm2015/lib/db/Enums/depreciation-type.enum.js +8 -8
  50. package/esm2015/lib/db/Enums/depreciation-write-off-amount.enum.js +6 -6
  51. package/esm2015/lib/db/Enums/firm-type.enum.js +6 -6
  52. package/esm2015/lib/db/Enums/income-source-type-list-other.enum.js +8 -8
  53. package/esm2015/lib/db/Enums/income-source-type-list-salary.enum.js +5 -5
  54. package/esm2015/lib/db/Enums/income-source-type-list-work.enum.js +10 -10
  55. package/esm2015/lib/db/Enums/income-source-type.enum.js +8 -7
  56. package/esm2015/lib/db/Enums/invite-status.enum.js +7 -7
  57. package/esm2015/lib/db/Enums/loan-bank-type.enum.js +12 -12
  58. package/esm2015/lib/db/Enums/loan-frequency.enum.js +8 -8
  59. package/esm2015/lib/db/Enums/loan-interest-type.enum.js +6 -6
  60. package/esm2015/lib/db/Enums/loan-payout-type.enum.js +6 -6
  61. package/esm2015/lib/db/Enums/loan-repayment-frequency.enum.js +7 -7
  62. package/esm2015/lib/db/Enums/loan-repayment-type.enum.js +6 -6
  63. package/esm2015/lib/db/Enums/loan-type.enum.js +14 -14
  64. package/esm2015/lib/db/Enums/loan-vehicle-type.enum.js +7 -7
  65. package/esm2015/lib/db/Enums/phone-type.enum.js +6 -6
  66. package/esm2015/lib/db/Enums/property-depreciation-calculation.enum.js +6 -6
  67. package/esm2015/lib/db/Enums/property-owner-access.enum.js +6 -6
  68. package/esm2015/lib/db/Enums/property-owner-status.enum.js +7 -7
  69. package/esm2015/lib/db/Enums/registration-invite-status.enum.js +6 -6
  70. package/esm2015/lib/db/Enums/salary-forecast-frequency.enum.js +8 -8
  71. package/esm2015/lib/db/Enums/service-notification-status.enum.js +7 -7
  72. package/esm2015/lib/db/Enums/service-notification-type.enum.js +6 -6
  73. package/esm2015/lib/db/Enums/service-payment-status.enum.js +6 -6
  74. package/esm2015/lib/db/Enums/service-price-recurring-interval.enum.js +8 -8
  75. package/esm2015/lib/db/Enums/service-price-type.enum.js +6 -6
  76. package/esm2015/lib/db/Enums/service-subscription-status.enum.js +10 -10
  77. package/esm2015/lib/db/Enums/spare-document-spare-type.enum.js +6 -6
  78. package/esm2015/lib/db/Enums/tank-type.enum.js +7 -7
  79. package/esm2015/lib/db/Enums/tax-calculation-medicare-exemption.enum.js +6 -6
  80. package/esm2015/lib/db/Enums/tax-calculation-type.enum.js +14 -14
  81. package/esm2015/lib/db/Enums/tax-return-category-list.enum.js +28 -28
  82. package/esm2015/lib/db/Enums/tax-return-category-section.enum.js +8 -8
  83. package/esm2015/lib/db/Enums/tax-review-status.enum.js +13 -13
  84. package/esm2015/lib/db/Enums/tax-summary-list.enum.js +17 -17
  85. package/esm2015/lib/db/Enums/tax-summary-section.enum.js +8 -8
  86. package/esm2015/lib/db/Enums/tax-summary-tax-summary.enum.js +17 -17
  87. package/esm2015/lib/db/Enums/ticket-feedback.enum.js +6 -6
  88. package/esm2015/lib/db/Enums/ticket-status.enum.js +9 -9
  89. package/esm2015/lib/db/Enums/ticket-types.enum.js +5 -5
  90. package/esm2015/lib/db/Enums/transaction-operation.enum.js +7 -7
  91. package/esm2015/lib/db/Enums/transaction-source.enum.js +6 -6
  92. package/esm2015/lib/db/Enums/transaction-type.enum.js +6 -6
  93. package/esm2015/lib/db/Enums/user-event-status.enum.js +9 -9
  94. package/esm2015/lib/db/Enums/user-event-type-client-type.enum.js +29 -29
  95. package/esm2015/lib/db/Enums/user-event-type-employee-type.enum.js +17 -17
  96. package/esm2015/lib/db/Enums/user-event-type-frequency.enum.js +7 -7
  97. package/esm2015/lib/db/Enums/user-event-type-user-type.enum.js +7 -7
  98. package/esm2015/lib/db/Enums/user-medicare-exemption.enum.js +7 -7
  99. package/esm2015/lib/db/Enums/user-roles.enum.js +15 -15
  100. package/esm2015/lib/db/Enums/user-status.enum.js +8 -8
  101. package/esm2015/lib/db/Enums/user-title.enum.js +9 -9
  102. package/esm2015/lib/db/Enums/user-work-depreciation-calculation.enum.js +6 -6
  103. package/esm2015/lib/db/Enums/user-working-holiday-maker.enum.js +7 -7
  104. package/esm2015/lib/db/Enums/vehicle-claim-method.enum.js +6 -6
  105. package/esm2015/lib/db/Enums/vehicle-logbook-purpose.enum.js +6 -6
  106. package/esm2015/lib/db/Models/address.js +3 -3
  107. package/esm2015/lib/db/Models/bank-account-balance.js +3 -3
  108. package/esm2015/lib/db/Models/bank-account-property.js +3 -3
  109. package/esm2015/lib/db/Models/bank-account.js +3 -3
  110. package/esm2015/lib/db/Models/bank-connection.js +3 -3
  111. package/esm2015/lib/db/Models/bank-transaction-import.js +3 -3
  112. package/esm2015/lib/db/Models/bank-transaction.js +3 -3
  113. package/esm2015/lib/db/Models/bank.js +3 -3
  114. package/esm2015/lib/db/Models/basiq-job.js +3 -3
  115. package/esm2015/lib/db/Models/borrowing-expense-loan.js +3 -3
  116. package/esm2015/lib/db/Models/borrowing-expense.js +3 -3
  117. package/esm2015/lib/db/Models/capital-cost-property.js +3 -3
  118. package/esm2015/lib/db/Models/capital-cost.js +3 -3
  119. package/esm2015/lib/db/Models/chart-accounts-depreciation.js +3 -3
  120. package/esm2015/lib/db/Models/chart-accounts-heading.js +3 -3
  121. package/esm2015/lib/db/Models/chart-accounts-metadata.js +3 -3
  122. package/esm2015/lib/db/Models/chart-accounts-value.js +3 -3
  123. package/esm2015/lib/db/Models/chart-accounts.js +3 -3
  124. package/esm2015/lib/db/Models/chat.js +3 -3
  125. package/esm2015/lib/db/Models/client-details.js +3 -3
  126. package/esm2015/lib/db/Models/client-invite.js +3 -3
  127. package/esm2015/lib/db/Models/client-movement.js +3 -3
  128. package/esm2015/lib/db/Models/country.js +3 -3
  129. package/esm2015/lib/db/Models/depreciation-capital-project.js +3 -3
  130. package/esm2015/lib/db/Models/depreciation-forecast.js +3 -3
  131. package/esm2015/lib/db/Models/depreciation-receipt.js +3 -3
  132. package/esm2015/lib/db/Models/depreciation.js +4 -4
  133. package/esm2015/lib/db/Models/document-folder.js +3 -3
  134. package/esm2015/lib/db/Models/document.js +3 -3
  135. package/esm2015/lib/db/Models/employee-details.js +3 -3
  136. package/esm2015/lib/db/Models/employee-invite.js +3 -3
  137. package/esm2015/lib/db/Models/financial-data-system.js +3 -3
  138. package/esm2015/lib/db/Models/firm.js +3 -3
  139. package/esm2015/lib/db/Models/income-source-forecast.js +3 -3
  140. package/esm2015/lib/db/Models/income-source-type.js +3 -3
  141. package/esm2015/lib/db/Models/income-source.js +3 -3
  142. package/esm2015/lib/db/Models/loan-payout.js +3 -3
  143. package/esm2015/lib/db/Models/loan.js +3 -3
  144. package/esm2015/lib/db/Models/message-document.js +3 -3
  145. package/esm2015/lib/db/Models/message.js +3 -3
  146. package/esm2015/lib/db/Models/occupation.js +3 -3
  147. package/esm2015/lib/db/Models/phone.js +3 -3
  148. package/esm2015/lib/db/Models/property-capital-cost.js +3 -3
  149. package/esm2015/lib/db/Models/property-category-movement.js +3 -3
  150. package/esm2015/lib/db/Models/property-category.js +3 -3
  151. package/esm2015/lib/db/Models/property-document.js +3 -3
  152. package/esm2015/lib/db/Models/property-forecast.js +3 -3
  153. package/esm2015/lib/db/Models/property-owner.js +3 -3
  154. package/esm2015/lib/db/Models/property-sold.js +3 -3
  155. package/esm2015/lib/db/Models/property-subscription.js +3 -3
  156. package/esm2015/lib/db/Models/property-valuation.js +3 -3
  157. package/esm2015/lib/db/Models/property.js +3 -3
  158. package/esm2015/lib/db/Models/registration-invite.js +3 -3
  159. package/esm2015/lib/db/Models/salary-forecast.js +3 -3
  160. package/esm2015/lib/db/Models/service-notification.js +3 -3
  161. package/esm2015/lib/db/Models/service-payment.js +3 -3
  162. package/esm2015/lib/db/Models/service-price.js +3 -3
  163. package/esm2015/lib/db/Models/service-product.js +3 -3
  164. package/esm2015/lib/db/Models/service-subscription-item.js +3 -3
  165. package/esm2015/lib/db/Models/service-subscription.js +3 -3
  166. package/esm2015/lib/db/Models/sole-forecast.js +3 -0
  167. package/esm2015/lib/db/Models/tax-return-category.js +3 -3
  168. package/esm2015/lib/db/Models/tax-return-item.js +3 -3
  169. package/esm2015/lib/db/Models/tax-return.js +3 -3
  170. package/esm2015/lib/db/Models/tax-review.js +3 -3
  171. package/esm2015/lib/db/Models/ticket.js +3 -3
  172. package/esm2015/lib/db/Models/transaction-allocation.js +3 -3
  173. package/esm2015/lib/db/Models/transaction-base.js +20 -20
  174. package/esm2015/lib/db/Models/transaction-metadata.js +3 -3
  175. package/esm2015/lib/db/Models/transaction-receipt.js +3 -3
  176. package/esm2015/lib/db/Models/transaction.js +4 -4
  177. package/esm2015/lib/db/Models/user-event-setting.js +3 -3
  178. package/esm2015/lib/db/Models/user-event-type-category.js +3 -3
  179. package/esm2015/lib/db/Models/user-event-type.js +3 -3
  180. package/esm2015/lib/db/Models/user-event.js +3 -3
  181. package/esm2015/lib/db/Models/user.js +3 -3
  182. package/esm2015/lib/db/Models/vehicle-claim.js +3 -3
  183. package/esm2015/lib/db/Models/vehicle-logbook.js +3 -3
  184. package/esm2015/lib/db/Models/vehicle.js +3 -3
  185. package/esm2015/lib/functions/array/index.js +3 -3
  186. package/esm2015/lib/functions/array/replace.js +5 -5
  187. package/esm2015/lib/functions/array/sort-deep.js +21 -21
  188. package/esm2015/lib/functions/array/sort.js +12 -12
  189. package/esm2015/lib/functions/clone-deep.js +5 -5
  190. package/esm2015/lib/functions/create-date.js +8 -8
  191. package/esm2015/lib/functions/enum-to-list.js +12 -12
  192. package/esm2015/lib/functions/get-doc-icon.js +18 -18
  193. package/esm2015/lib/functions/mat-options-functions.js +9 -9
  194. package/esm2015/lib/functions/mat-sort-options.js +10 -10
  195. package/esm2015/lib/functions/round-to.js +10 -10
  196. package/esm2015/lib/functions/tax-review-filter-predicate.js +10 -10
  197. package/esm2015/lib/interceptors/corelogic-interceptor.js +43 -43
  198. package/esm2015/lib/interceptors/financial-year-interceptor.js +29 -29
  199. package/esm2015/lib/interceptors/interceptors.module.js +73 -73
  200. package/esm2015/lib/interceptors/jwt-interceptor.js +137 -137
  201. package/esm2015/lib/interceptors/preloader.interceptor.js +32 -32
  202. package/esm2015/lib/interceptors/user-switcher-interceptor.js +42 -42
  203. package/esm2015/lib/interfaces/asset-entity-type.enum.js +12 -12
  204. package/esm2015/lib/interfaces/asset-type.enum.js +10 -10
  205. package/esm2015/lib/interfaces/asset.interface.js +2 -2
  206. package/esm2015/lib/interfaces/chart-data.interface.js +1 -1
  207. package/esm2015/lib/interfaces/chart-serie.interface.js +1 -1
  208. package/esm2015/lib/interfaces/document.interface.js +2 -2
  209. package/esm2015/lib/interfaces/documentable.interface.js +2 -2
  210. package/esm2015/lib/interfaces/event-listener.interface.js +1 -1
  211. package/esm2015/lib/interfaces/income-source-forecast.interface.js +2 -2
  212. package/esm2015/lib/interfaces/option.interface.js +1 -1
  213. package/esm2015/lib/interfaces/photoable.js +1 -1
  214. package/esm2015/lib/interfaces/receipt.interface.js +2 -2
  215. package/esm2015/lib/interfaces/tank.interface.js +2 -2
  216. package/esm2015/lib/models/address/address.js +23 -23
  217. package/esm2015/lib/models/address/country.js +15 -15
  218. package/esm2015/lib/models/bank/bank-account-chart-data.js +34 -34
  219. package/esm2015/lib/models/bank/bank-account-property.js +10 -10
  220. package/esm2015/lib/models/bank/bank-account-types.const.js +15 -15
  221. package/esm2015/lib/models/bank/bank-account.js +122 -122
  222. package/esm2015/lib/models/bank/bank-connection.js +21 -21
  223. package/esm2015/lib/models/bank/bank-transaction-chart-data.js +106 -106
  224. package/esm2015/lib/models/bank/bank-transaction-summary-fields.enum.js +6 -6
  225. package/esm2015/lib/models/bank/bank-transaction.js +67 -67
  226. package/esm2015/lib/models/bank/bank.js +13 -13
  227. package/esm2015/lib/models/bank/basiq-job.js +4 -4
  228. package/esm2015/lib/models/bank/basiq-token.js +13 -13
  229. package/esm2015/lib/models/bank/type-loan.const.js +7 -7
  230. package/esm2015/lib/models/borrowing-expense/borrowing-expense-loan.js +4 -4
  231. package/esm2015/lib/models/borrowing-expense/borrowing-expense.js +4 -4
  232. package/esm2015/lib/models/chart/chart-data.js +12 -12
  233. package/esm2015/lib/models/chart/chart-serie.js +6 -6
  234. package/esm2015/lib/models/chart-accounts/chart-accounts-categories.const.js +84 -84
  235. package/esm2015/lib/models/chart-accounts/chart-accounts-depreciation.js +16 -16
  236. package/esm2015/lib/models/chart-accounts/chart-accounts-heading.js +3 -3
  237. package/esm2015/lib/models/chart-accounts/chart-accounts-metadata.js +13 -13
  238. package/esm2015/lib/models/chart-accounts/chart-accounts-tax-labels.enum.js +6 -6
  239. package/esm2015/lib/models/chart-accounts/chart-accounts.js +119 -119
  240. package/esm2015/lib/models/chat/chat-view-type.enum.js +6 -6
  241. package/esm2015/lib/models/chat/chat.js +22 -22
  242. package/esm2015/lib/models/chat/message-document.js +19 -19
  243. package/esm2015/lib/models/chat/message.js +38 -38
  244. package/esm2015/lib/models/client/client-details.js +4 -4
  245. package/esm2015/lib/models/client/client-invite.js +66 -66
  246. package/esm2015/lib/models/client/client-movement.js +26 -26
  247. package/esm2015/lib/models/client/client-portfolio-chart-data.js +57 -57
  248. package/esm2015/lib/models/client/client-portfolio-report.js +6 -6
  249. package/esm2015/lib/models/color/alphabet-colors.enum.js +29 -29
  250. package/esm2015/lib/models/data-table/data-table-column.js +13 -13
  251. package/esm2015/lib/models/data-table/data-table.js +42 -42
  252. package/esm2015/lib/models/depreciation/depreciation-capital-project.js +9 -9
  253. package/esm2015/lib/models/depreciation/depreciation-forecast.js +22 -22
  254. package/esm2015/lib/models/depreciation/depreciation-group-item.js +14 -14
  255. package/esm2015/lib/models/depreciation/depreciation-group.enum.js +9 -9
  256. package/esm2015/lib/models/depreciation/depreciation-group.js +15 -15
  257. package/esm2015/lib/models/depreciation/depreciation-groups.const.js +29 -29
  258. package/esm2015/lib/models/depreciation/depreciation-receipt.js +11 -11
  259. package/esm2015/lib/models/depreciation/depreciation.js +163 -159
  260. package/esm2015/lib/models/document/document-api-url-prefix.enum.js +9 -9
  261. package/esm2015/lib/models/document/document-file-types.const.js +23 -23
  262. package/esm2015/lib/models/document/document-folder.js +10 -10
  263. package/esm2015/lib/models/document/document.js +24 -24
  264. package/esm2015/lib/models/employee/employee-details.js +10 -10
  265. package/esm2015/lib/models/employee/employee-invite.js +13 -13
  266. package/esm2015/lib/models/endpoint/endpoint.js +22 -22
  267. package/esm2015/lib/models/endpoint/endpoints.const.js +143 -143
  268. package/esm2015/lib/models/event/app-event-type.enum.js +42 -39
  269. package/esm2015/lib/models/event/app-event.js +10 -10
  270. package/esm2015/lib/models/file/icons-file.enum.js +7 -7
  271. package/esm2015/lib/models/financial-year/financial-year.js +43 -43
  272. package/esm2015/lib/models/financial-year/month-name-short.enum.js +20 -20
  273. package/esm2015/lib/models/financial-year/month-number.enum.js +20 -20
  274. package/esm2015/lib/models/financial-year/months.const.js +2 -2
  275. package/esm2015/lib/models/firm/firm.js +29 -29
  276. package/esm2015/lib/models/income-position/income-position.js +9 -9
  277. package/esm2015/lib/models/income-source/income-source-chart-data.js +45 -45
  278. package/esm2015/lib/models/income-source/income-source-forecast.js +31 -31
  279. package/esm2015/lib/models/income-source/income-source-type.js +32 -27
  280. package/esm2015/lib/models/income-source/income-source.js +58 -51
  281. package/esm2015/lib/models/income-source/salary-forecast.js +14 -14
  282. package/esm2015/lib/models/income-source/sole-forecast.js +10 -0
  283. package/esm2015/lib/models/loan/loan-max-number-of-payments.enum.js +10 -10
  284. package/esm2015/lib/models/loan/loan-payment.js +12 -12
  285. package/esm2015/lib/models/loan/loan-payout.js +11 -11
  286. package/esm2015/lib/models/loan/loan.js +39 -39
  287. package/esm2015/lib/models/logbook/default-vehicle-expense.js +20 -20
  288. package/esm2015/lib/models/logbook/logbook-period.js +11 -11
  289. package/esm2015/lib/models/logbook/logbook-purpose-options.const.js +6 -6
  290. package/esm2015/lib/models/logbook/vehicle-claim.js +32 -32
  291. package/esm2015/lib/models/logbook/vehicle-logbook.js +16 -16
  292. package/esm2015/lib/models/logbook/vehicle.js +39 -39
  293. package/esm2015/lib/models/notification/notification.js +39 -39
  294. package/esm2015/lib/models/pdf/pdf-config.js +24 -24
  295. package/esm2015/lib/models/phone/phone.js +11 -11
  296. package/esm2015/lib/models/property/calculation-form-item.js +17 -17
  297. package/esm2015/lib/models/property/calculation-form-type.enum.js +9 -9
  298. package/esm2015/lib/models/property/capital-costs-itmes.const.js +57 -57
  299. package/esm2015/lib/models/property/corelogic-suggestion.js +6 -6
  300. package/esm2015/lib/models/property/ownership-filter-options.enum.js +10 -10
  301. package/esm2015/lib/models/property/property-capital-cost.js +4 -4
  302. package/esm2015/lib/models/property/property-category-movement.js +20 -20
  303. package/esm2015/lib/models/property/property-category.js +8 -8
  304. package/esm2015/lib/models/property/property-document.js +17 -17
  305. package/esm2015/lib/models/property/property-equity-chart-data.js +155 -155
  306. package/esm2015/lib/models/property/property-equity-chart-item.js +24 -24
  307. package/esm2015/lib/models/property/property-equity-chart-type.enum.js +6 -6
  308. package/esm2015/lib/models/property/property-forecast.js +52 -52
  309. package/esm2015/lib/models/property/property-owner.js +48 -48
  310. package/esm2015/lib/models/property/property-sold.js +12 -12
  311. package/esm2015/lib/models/property/property-subscription.js +13 -13
  312. package/esm2015/lib/models/property/property-valuation.js +23 -23
  313. package/esm2015/lib/models/property/property.js +130 -130
  314. package/esm2015/lib/models/registration-invite/registration-invite.js +10 -10
  315. package/esm2015/lib/models/service-subscription/module-url-list.const.js +12 -12
  316. package/esm2015/lib/models/service-subscription/service-payment.js +10 -10
  317. package/esm2015/lib/models/service-subscription/service-price.js +10 -10
  318. package/esm2015/lib/models/service-subscription/service-product.js +10 -10
  319. package/esm2015/lib/models/service-subscription/service-subscription-item.js +13 -13
  320. package/esm2015/lib/models/service-subscription/service-subscription.js +128 -128
  321. package/esm2015/lib/models/service-subscription/subscription-description.const.js +7 -7
  322. package/esm2015/lib/models/service-subscription/subscription-title.const.js +7 -7
  323. package/esm2015/lib/models/service-subscription/subscription-type.enum.js +7 -7
  324. package/esm2015/lib/models/tax-review/tax-review.js +86 -86
  325. package/esm2015/lib/models/tax-summary/tax-return-category-item-details.js +9 -9
  326. package/esm2015/lib/models/tax-summary/tax-return-category-item.js +15 -15
  327. package/esm2015/lib/models/tax-summary/tax-summary-section.js +30 -30
  328. package/esm2015/lib/models/tax-summary/tax-summary-type.enum.js +9 -9
  329. package/esm2015/lib/models/tax-summary/tax-summary.js +71 -71
  330. package/esm2015/lib/models/transaction/income-amount-type.enum.js +9 -9
  331. package/esm2015/lib/models/transaction/transaction-allocation.js +21 -21
  332. package/esm2015/lib/models/transaction/transaction-metadata.js +10 -10
  333. package/esm2015/lib/models/transaction/transaction-receipt.js +11 -11
  334. package/esm2015/lib/models/transaction/transaction.js +223 -220
  335. package/esm2015/lib/models/user/my-account-history-initiated-by.enum.js +6 -6
  336. package/esm2015/lib/models/user/my-account-history-status.enum.js +6 -6
  337. package/esm2015/lib/models/user/my-account-history-type.enum.js +7 -7
  338. package/esm2015/lib/models/user/my-account-history.js +3 -3
  339. package/esm2015/lib/models/user/occupation.js +4 -4
  340. package/esm2015/lib/models/user/user-roles.const.js +13 -13
  341. package/esm2015/lib/models/user/user-to-register.js +6 -6
  342. package/esm2015/lib/models/user/user-work-position.const.js +6 -6
  343. package/esm2015/lib/models/user/user.js +138 -138
  344. package/esm2015/lib/models/user-event/user-event-setting-field.enum.js +10 -10
  345. package/esm2015/lib/models/user-event/user-event-setting.js +18 -18
  346. package/esm2015/lib/models/user-event/user-event-type-category.js +4 -4
  347. package/esm2015/lib/models/user-event/user-event-type.js +19 -19
  348. package/esm2015/lib/services/address/address.service.js +39 -39
  349. package/esm2015/lib/services/asset/assets.service.js +51 -51
  350. package/esm2015/lib/services/auth/auth.service.js +46 -46
  351. package/esm2015/lib/services/auth/jwt.service.js +36 -36
  352. package/esm2015/lib/services/bank/bank-account-calculation.service.js +30 -30
  353. package/esm2015/lib/services/bank/bank-account.service.js +118 -118
  354. package/esm2015/lib/services/bank/bank-connection.service.js +52 -52
  355. package/esm2015/lib/services/bank/bank-transaction-calculation.service.js +65 -65
  356. package/esm2015/lib/services/bank/bank-transaction.service.js +89 -89
  357. package/esm2015/lib/services/bank/bank.service.js +24 -24
  358. package/esm2015/lib/services/bank/basiq.service.js +94 -94
  359. package/esm2015/lib/services/base-rest.service.js +190 -190
  360. package/esm2015/lib/services/borrowing-expense/borrowing-expense.service.js +73 -73
  361. package/esm2015/lib/services/chart-accounts/chart-accounts-depreciations.service.js +38 -38
  362. package/esm2015/lib/services/chart-accounts/chart-accounts.service.js +89 -89
  363. package/esm2015/lib/services/chat/chat.service.js +77 -77
  364. package/esm2015/lib/services/chat/message-document.service.js +118 -118
  365. package/esm2015/lib/services/chat/message.service.js +65 -65
  366. package/esm2015/lib/services/client/client-invite.service.js +102 -102
  367. package/esm2015/lib/services/client/client-movement.service.js +98 -98
  368. package/esm2015/lib/services/client/client-portfolio-report.service.js +37 -37
  369. package/esm2015/lib/services/depreciation/capital-project.service.js +62 -62
  370. package/esm2015/lib/services/depreciation/depreciation.service.js +146 -146
  371. package/esm2015/lib/services/document/document-folder.service.js +84 -84
  372. package/esm2015/lib/services/employee/employee-invite.service.js +53 -53
  373. package/esm2015/lib/services/employee/employee.service.js +39 -39
  374. package/esm2015/lib/services/event/event-dispatcher.service.js +30 -30
  375. package/esm2015/lib/services/event/sse.service.js +46 -46
  376. package/esm2015/lib/services/firm/firm.service.js +79 -79
  377. package/esm2015/lib/services/header-title/header-title.service.js +28 -28
  378. package/esm2015/lib/services/income-source/income-source-forecast.service.js +90 -90
  379. package/esm2015/lib/services/income-source/income-source.service.js +109 -109
  380. package/esm2015/lib/services/income-source/salary-forecast.service.js +90 -90
  381. package/esm2015/lib/services/income-source/sole-forecast.service.js +87 -0
  382. package/esm2015/lib/services/intercom/intercom.service.js +41 -41
  383. package/esm2015/lib/services/loan/loan.service.js +145 -145
  384. package/esm2015/lib/services/notification/notification.service.js +65 -65
  385. package/esm2015/lib/services/pdf/pdf.service.js +88 -88
  386. package/esm2015/lib/services/preloader/preloader.service.js +30 -30
  387. package/esm2015/lib/services/property/corelogic.service.js +46 -46
  388. package/esm2015/lib/services/property/equity-position-chart.service.js +45 -45
  389. package/esm2015/lib/services/property/property-calculation.service.js +121 -121
  390. package/esm2015/lib/services/property/property-capital-cost.service.js +46 -46
  391. package/esm2015/lib/services/property/property-category-movement.service.js +47 -0
  392. package/esm2015/lib/services/property/property-category.service.js +23 -23
  393. package/esm2015/lib/services/property/property-document.service.js +68 -68
  394. package/esm2015/lib/services/property/property-owner.service.js +123 -123
  395. package/esm2015/lib/services/property/property-sold.service.js +23 -23
  396. package/esm2015/lib/services/property/property.service.js +126 -115
  397. package/esm2015/lib/services/subscription/subscription.service.js +138 -138
  398. package/esm2015/lib/services/tax-review/tax-review-history.service.js +41 -41
  399. package/esm2015/lib/services/tax-review/tax-review.service.js +103 -103
  400. package/esm2015/lib/services/tax-summary/tax-summary.service.js +71 -71
  401. package/esm2015/lib/services/transaction/transaction-allocation.service.js +85 -85
  402. package/esm2015/lib/services/transaction/transaction-calculation.service.js +47 -47
  403. package/esm2015/lib/services/transaction/transaction.service.js +319 -319
  404. package/esm2015/lib/services/user/occupation.service.js +45 -45
  405. package/esm2015/lib/services/user/user-switcher.service.js +37 -37
  406. package/esm2015/lib/services/user/user.service.js +124 -124
  407. package/esm2015/lib/services/user-event/user-event-setting.service.js +59 -59
  408. package/esm2015/lib/services/user-event/user-event-type.service.js +29 -29
  409. package/esm2015/lib/services/work/work-tank.service.js +236 -236
  410. package/esm2015/lib/services/xlsx/xlsx.service.js +54 -54
  411. package/esm2015/lib/tt-core.module.js +36 -36
  412. package/esm2015/public-api.js +347 -345
  413. package/esm2015/taxtank-core.js +4 -4
  414. package/fesm2015/taxtank-core.js +9851 -9687
  415. package/fesm2015/taxtank-core.js.map +1 -1
  416. package/lib/collections/bank-account.collection.d.ts +67 -67
  417. package/lib/collections/bank-transaction.collection.d.ts +72 -72
  418. package/lib/collections/client-movement.collection.d.ts +17 -17
  419. package/lib/collections/client-portfolio-report.collection.d.ts +26 -26
  420. package/lib/collections/client.collection.d.ts +4 -4
  421. package/lib/collections/collection-dictionary.d.ts +47 -47
  422. package/lib/collections/collection.d.ts +37 -37
  423. package/lib/collections/depreciation-forecast.collection.d.ts +11 -11
  424. package/lib/collections/depreciation.collection.d.ts +28 -27
  425. package/lib/collections/employee.collection.d.ts +6 -6
  426. package/lib/collections/income-source.collection.d.ts +25 -25
  427. package/lib/collections/loan.collection.d.ts +14 -14
  428. package/lib/collections/logbook.collection.d.ts +19 -19
  429. package/lib/collections/message-document.collection.d.ts +11 -11
  430. package/lib/collections/message.collection.d.ts +14 -14
  431. package/lib/collections/property.collection.d.ts +38 -38
  432. package/lib/collections/service-price.collection.d.ts +6 -6
  433. package/lib/collections/service-subscription.collection.d.ts +8 -8
  434. package/lib/collections/tax-return-category-item.collection.d.ts +68 -68
  435. package/lib/collections/tax-review.collection.d.ts +35 -35
  436. package/lib/collections/transaction-allocation.collection.d.ts +23 -23
  437. package/lib/collections/transaction.collection.d.ts +76 -76
  438. package/lib/collections/user-event-setting.collection.d.ts +8 -8
  439. package/lib/db/Enums/address-type.enum.d.ts +4 -4
  440. package/lib/db/Enums/bank-account-status.enum.d.ts +4 -4
  441. package/lib/db/Enums/bank-account-type.enum.d.ts +10 -10
  442. package/lib/db/Enums/bank-connection-status.enum.d.ts +5 -5
  443. package/lib/db/Enums/bank-transaction-type.enum.d.ts +4 -4
  444. package/lib/db/Enums/chart-accounts-category.enum.d.ts +13 -13
  445. package/lib/db/Enums/chart-accounts-etp.enum.d.ts +7 -7
  446. package/lib/db/Enums/chart-accounts-heading-tax-deductible.enum.d.ts +6 -6
  447. package/lib/db/Enums/chart-accounts-heading-taxable.enum.d.ts +6 -6
  448. package/lib/db/Enums/chart-accounts-heading-vehicle-list.enum.d.ts +4 -4
  449. package/lib/db/Enums/chart-accounts-list.enum.d.ts +19 -19
  450. package/lib/db/Enums/chart-accounts-metadata-list.enum.d.ts +14 -13
  451. package/lib/db/Enums/chart-accounts-metadata-type.enum.d.ts +4 -4
  452. package/lib/db/Enums/chart-accounts-type.enum.d.ts +4 -4
  453. package/lib/db/Enums/chat-status.enum.d.ts +4 -4
  454. package/lib/db/Enums/client-details-medicare-exemption.enum.d.ts +5 -5
  455. package/lib/db/Enums/client-details-work-depreciation-calculation.enum.d.ts +4 -4
  456. package/lib/db/Enums/client-details-working-holiday-maker.enum.d.ts +5 -5
  457. package/lib/db/Enums/client-invite-status.enum.d.ts +4 -4
  458. package/lib/db/Enums/client-invite-type.enum.d.ts +4 -4
  459. package/lib/db/Enums/depreciation-calculation-percent.enum.d.ts +7 -7
  460. package/lib/db/Enums/depreciation-calculation.enum.d.ts +7 -7
  461. package/lib/db/Enums/depreciation-type.enum.d.ts +6 -6
  462. package/lib/db/Enums/depreciation-write-off-amount.enum.d.ts +4 -4
  463. package/lib/db/Enums/firm-type.enum.d.ts +4 -4
  464. package/lib/db/Enums/income-source-type-list-other.enum.d.ts +6 -6
  465. package/lib/db/Enums/income-source-type-list-salary.enum.d.ts +3 -3
  466. package/lib/db/Enums/income-source-type-list-work.enum.d.ts +8 -8
  467. package/lib/db/Enums/income-source-type.enum.d.ts +6 -5
  468. package/lib/db/Enums/invite-status.enum.d.ts +5 -5
  469. package/lib/db/Enums/loan-bank-type.enum.d.ts +10 -10
  470. package/lib/db/Enums/loan-frequency.enum.d.ts +6 -6
  471. package/lib/db/Enums/loan-interest-type.enum.d.ts +4 -4
  472. package/lib/db/Enums/loan-payout-type.enum.d.ts +4 -4
  473. package/lib/db/Enums/loan-repayment-frequency.enum.d.ts +5 -5
  474. package/lib/db/Enums/loan-repayment-type.enum.d.ts +4 -4
  475. package/lib/db/Enums/loan-type.enum.d.ts +12 -12
  476. package/lib/db/Enums/loan-vehicle-type.enum.d.ts +5 -5
  477. package/lib/db/Enums/phone-type.enum.d.ts +4 -4
  478. package/lib/db/Enums/property-depreciation-calculation.enum.d.ts +4 -4
  479. package/lib/db/Enums/property-owner-access.enum.d.ts +4 -4
  480. package/lib/db/Enums/property-owner-status.enum.d.ts +5 -5
  481. package/lib/db/Enums/registration-invite-status.enum.d.ts +4 -4
  482. package/lib/db/Enums/salary-forecast-frequency.enum.d.ts +6 -6
  483. package/lib/db/Enums/service-notification-status.enum.d.ts +5 -5
  484. package/lib/db/Enums/service-notification-type.enum.d.ts +4 -4
  485. package/lib/db/Enums/service-payment-status.enum.d.ts +4 -4
  486. package/lib/db/Enums/service-price-recurring-interval.enum.d.ts +6 -6
  487. package/lib/db/Enums/service-price-type.enum.d.ts +4 -4
  488. package/lib/db/Enums/service-subscription-status.enum.d.ts +8 -8
  489. package/lib/db/Enums/spare-document-spare-type.enum.d.ts +4 -4
  490. package/lib/db/Enums/tank-type.enum.d.ts +5 -5
  491. package/lib/db/Enums/tax-calculation-medicare-exemption.enum.d.ts +4 -4
  492. package/lib/db/Enums/tax-calculation-type.enum.d.ts +12 -12
  493. package/lib/db/Enums/tax-return-category-list.enum.d.ts +26 -26
  494. package/lib/db/Enums/tax-return-category-section.enum.d.ts +6 -6
  495. package/lib/db/Enums/tax-review-status.enum.d.ts +11 -11
  496. package/lib/db/Enums/tax-summary-list.enum.d.ts +15 -15
  497. package/lib/db/Enums/tax-summary-section.enum.d.ts +6 -6
  498. package/lib/db/Enums/tax-summary-tax-summary.enum.d.ts +15 -15
  499. package/lib/db/Enums/ticket-feedback.enum.d.ts +4 -4
  500. package/lib/db/Enums/ticket-status.enum.d.ts +7 -7
  501. package/lib/db/Enums/ticket-types.enum.d.ts +3 -3
  502. package/lib/db/Enums/transaction-operation.enum.d.ts +5 -5
  503. package/lib/db/Enums/transaction-source.enum.d.ts +4 -4
  504. package/lib/db/Enums/transaction-type.enum.d.ts +4 -4
  505. package/lib/db/Enums/user-event-status.enum.d.ts +7 -7
  506. package/lib/db/Enums/user-event-type-client-type.enum.d.ts +27 -27
  507. package/lib/db/Enums/user-event-type-employee-type.enum.d.ts +15 -15
  508. package/lib/db/Enums/user-event-type-frequency.enum.d.ts +5 -5
  509. package/lib/db/Enums/user-event-type-user-type.enum.d.ts +5 -5
  510. package/lib/db/Enums/user-medicare-exemption.enum.d.ts +5 -5
  511. package/lib/db/Enums/user-roles.enum.d.ts +13 -13
  512. package/lib/db/Enums/user-status.enum.d.ts +6 -6
  513. package/lib/db/Enums/user-title.enum.d.ts +7 -7
  514. package/lib/db/Enums/user-work-depreciation-calculation.enum.d.ts +4 -4
  515. package/lib/db/Enums/user-working-holiday-maker.enum.d.ts +5 -5
  516. package/lib/db/Enums/vehicle-claim-method.enum.d.ts +4 -4
  517. package/lib/db/Enums/vehicle-logbook-purpose.enum.d.ts +4 -4
  518. package/lib/db/Models/address.d.ts +19 -19
  519. package/lib/db/Models/bank-account-balance.d.ts +12 -12
  520. package/lib/db/Models/bank-account-property.d.ts +8 -8
  521. package/lib/db/Models/bank-account.d.ts +33 -33
  522. package/lib/db/Models/bank-connection.d.ts +14 -14
  523. package/lib/db/Models/bank-transaction-import.d.ts +11 -11
  524. package/lib/db/Models/bank-transaction.d.ts +16 -16
  525. package/lib/db/Models/bank.d.ts +11 -11
  526. package/lib/db/Models/basiq-job.d.ts +8 -8
  527. package/lib/db/Models/borrowing-expense-loan.d.ts +14 -14
  528. package/lib/db/Models/borrowing-expense.d.ts +7 -7
  529. package/lib/db/Models/capital-cost-property.d.ts +13 -13
  530. package/lib/db/Models/capital-cost.d.ts +4 -4
  531. package/lib/db/Models/chart-accounts-depreciation.d.ts +10 -10
  532. package/lib/db/Models/chart-accounts-heading.d.ts +6 -6
  533. package/lib/db/Models/chart-accounts-metadata.d.ts +11 -11
  534. package/lib/db/Models/chart-accounts-value.d.ts +12 -12
  535. package/lib/db/Models/chart-accounts.d.ts +23 -23
  536. package/lib/db/Models/chat.d.ts +17 -17
  537. package/lib/db/Models/client-details.d.ts +29 -29
  538. package/lib/db/Models/client-invite.d.ts +16 -16
  539. package/lib/db/Models/client-movement.d.ts +12 -12
  540. package/lib/db/Models/country.d.ts +5 -5
  541. package/lib/db/Models/depreciation-capital-project.d.ts +13 -13
  542. package/lib/db/Models/depreciation-forecast.d.ts +18 -18
  543. package/lib/db/Models/depreciation-receipt.d.ts +11 -11
  544. package/lib/db/Models/depreciation.d.ts +42 -42
  545. package/lib/db/Models/document-folder.d.ts +9 -9
  546. package/lib/db/Models/document.d.ts +11 -11
  547. package/lib/db/Models/employee-details.d.ts +7 -7
  548. package/lib/db/Models/employee-invite.d.ts +9 -9
  549. package/lib/db/Models/financial-data-system.d.ts +9 -9
  550. package/lib/db/Models/firm.d.ts +28 -28
  551. package/lib/db/Models/income-source-forecast.d.ts +12 -12
  552. package/lib/db/Models/income-source-type.d.ts +8 -8
  553. package/lib/db/Models/income-source.d.ts +22 -20
  554. package/lib/db/Models/loan-payout.d.ts +12 -12
  555. package/lib/db/Models/loan.d.ts +33 -33
  556. package/lib/db/Models/message-document.d.ts +15 -15
  557. package/lib/db/Models/message.d.ts +15 -15
  558. package/lib/db/Models/occupation.d.ts +5 -5
  559. package/lib/db/Models/phone.d.ts +12 -12
  560. package/lib/db/Models/property-capital-cost.d.ts +13 -13
  561. package/lib/db/Models/property-category-movement.d.ts +17 -17
  562. package/lib/db/Models/property-category.d.ts +13 -13
  563. package/lib/db/Models/property-document.d.ts +13 -13
  564. package/lib/db/Models/property-forecast.d.ts +14 -14
  565. package/lib/db/Models/property-owner.d.ts +20 -20
  566. package/lib/db/Models/property-sold.d.ts +12 -12
  567. package/lib/db/Models/property-subscription.d.ts +9 -9
  568. package/lib/db/Models/property-valuation.d.ts +12 -12
  569. package/lib/db/Models/property.d.ts +41 -41
  570. package/lib/db/Models/registration-invite.d.ts +12 -12
  571. package/lib/db/Models/salary-forecast.d.ts +15 -15
  572. package/lib/db/Models/service-notification.d.ts +13 -13
  573. package/lib/db/Models/service-payment.d.ts +11 -11
  574. package/lib/db/Models/service-price.d.ts +15 -15
  575. package/lib/db/Models/service-product.d.ts +12 -12
  576. package/lib/db/Models/service-subscription-item.d.ts +9 -9
  577. package/lib/db/Models/service-subscription.d.ts +14 -14
  578. package/lib/db/Models/sole-forecast.d.ts +8 -0
  579. package/lib/db/Models/tax-return-category.d.ts +12 -12
  580. package/lib/db/Models/tax-return-item.d.ts +15 -15
  581. package/lib/db/Models/tax-return.d.ts +8 -8
  582. package/lib/db/Models/tax-review.d.ts +13 -13
  583. package/lib/db/Models/ticket.d.ts +19 -19
  584. package/lib/db/Models/transaction-allocation.d.ts +8 -8
  585. package/lib/db/Models/transaction-base.d.ts +22 -22
  586. package/lib/db/Models/transaction-metadata.d.ts +11 -11
  587. package/lib/db/Models/transaction-receipt.d.ts +11 -11
  588. package/lib/db/Models/transaction.d.ts +43 -43
  589. package/lib/db/Models/user-event-setting.d.ts +10 -10
  590. package/lib/db/Models/user-event-type-category.d.ts +4 -4
  591. package/lib/db/Models/user-event-type.d.ts +17 -17
  592. package/lib/db/Models/user-event.d.ts +15 -15
  593. package/lib/db/Models/user.d.ts +51 -51
  594. package/lib/db/Models/vehicle-claim.d.ts +11 -11
  595. package/lib/db/Models/vehicle-logbook.d.ts +16 -16
  596. package/lib/db/Models/vehicle.d.ts +8 -8
  597. package/lib/functions/array/index.d.ts +3 -3
  598. package/lib/functions/array/replace.d.ts +1 -1
  599. package/lib/functions/array/sort-deep.d.ts +1 -1
  600. package/lib/functions/array/sort.d.ts +1 -1
  601. package/lib/functions/clone-deep.d.ts +1 -1
  602. package/lib/functions/create-date.d.ts +5 -5
  603. package/lib/functions/enum-to-list.d.ts +2 -2
  604. package/lib/functions/get-doc-icon.d.ts +7 -7
  605. package/lib/functions/mat-options-functions.d.ts +2 -2
  606. package/lib/functions/mat-sort-options.d.ts +7 -7
  607. package/lib/functions/round-to.d.ts +6 -6
  608. package/lib/functions/tax-review-filter-predicate.d.ts +7 -7
  609. package/lib/interceptors/corelogic-interceptor.d.ts +20 -20
  610. package/lib/interceptors/financial-year-interceptor.d.ts +12 -12
  611. package/lib/interceptors/interceptors.module.d.ts +6 -6
  612. package/lib/interceptors/jwt-interceptor.d.ts +42 -42
  613. package/lib/interceptors/preloader.interceptor.d.ts +15 -15
  614. package/lib/interceptors/user-switcher-interceptor.d.ts +19 -19
  615. package/lib/interfaces/asset-entity-type.enum.d.ts +10 -10
  616. package/lib/interfaces/asset-type.enum.d.ts +8 -8
  617. package/lib/interfaces/asset.interface.d.ts +17 -17
  618. package/lib/interfaces/chart-data.interface.d.ts +10 -10
  619. package/lib/interfaces/chart-serie.interface.d.ts +8 -8
  620. package/lib/interfaces/document.interface.d.ts +18 -18
  621. package/lib/interfaces/documentable.interface.d.ts +8 -8
  622. package/lib/interfaces/event-listener.interface.d.ts +9 -9
  623. package/lib/interfaces/income-source-forecast.interface.d.ts +9 -7
  624. package/lib/interfaces/option.interface.d.ts +4 -4
  625. package/lib/interfaces/photoable.d.ts +13 -13
  626. package/lib/interfaces/receipt.interface.d.ts +12 -12
  627. package/lib/interfaces/tank.interface.d.ts +7 -7
  628. package/lib/models/address/address.d.ts +11 -11
  629. package/lib/models/address/country.d.ts +11 -11
  630. package/lib/models/bank/bank-account-chart-data.d.ts +17 -17
  631. package/lib/models/bank/bank-account-property.d.ts +5 -5
  632. package/lib/models/bank/bank-account-types.const.d.ts +7 -7
  633. package/lib/models/bank/bank-account.d.ts +72 -72
  634. package/lib/models/bank/bank-connection.d.ts +11 -11
  635. package/lib/models/bank/bank-transaction-chart-data.d.ts +30 -30
  636. package/lib/models/bank/bank-transaction-summary-fields.enum.d.ts +4 -4
  637. package/lib/models/bank/bank-transaction.d.ts +38 -38
  638. package/lib/models/bank/bank.d.ts +6 -6
  639. package/lib/models/bank/basiq-job.d.ts +3 -3
  640. package/lib/models/bank/basiq-token.d.ts +9 -9
  641. package/lib/models/bank/type-loan.const.d.ts +2 -2
  642. package/lib/models/borrowing-expense/borrowing-expense-loan.d.ts +3 -3
  643. package/lib/models/borrowing-expense/borrowing-expense.d.ts +3 -3
  644. package/lib/models/chart/chart-data.d.ts +9 -9
  645. package/lib/models/chart/chart-serie.d.ts +8 -8
  646. package/lib/models/chart-accounts/chart-accounts-categories.const.d.ts +4 -4
  647. package/lib/models/chart-accounts/chart-accounts-depreciation.d.ts +7 -7
  648. package/lib/models/chart-accounts/chart-accounts-heading.d.ts +5 -5
  649. package/lib/models/chart-accounts/chart-accounts-metadata.d.ts +8 -8
  650. package/lib/models/chart-accounts/chart-accounts-tax-labels.enum.d.ts +5 -5
  651. package/lib/models/chart-accounts/chart-accounts.d.ts +66 -66
  652. package/lib/models/chat/chat-view-type.enum.d.ts +4 -4
  653. package/lib/models/chat/chat.d.ts +10 -10
  654. package/lib/models/chat/message-document.d.ts +11 -11
  655. package/lib/models/chat/message.d.ts +20 -20
  656. package/lib/models/client/client-details.d.ts +3 -3
  657. package/lib/models/client/client-invite.d.ts +34 -34
  658. package/lib/models/client/client-movement.d.ts +12 -12
  659. package/lib/models/client/client-portfolio-chart-data.d.ts +11 -11
  660. package/lib/models/client/client-portfolio-report.d.ts +10 -10
  661. package/lib/models/color/alphabet-colors.enum.d.ts +28 -28
  662. package/lib/models/data-table/data-table-column.d.ts +20 -20
  663. package/lib/models/data-table/data-table.d.ts +24 -24
  664. package/lib/models/depreciation/depreciation-capital-project.d.ts +5 -5
  665. package/lib/models/depreciation/depreciation-forecast.d.ts +8 -8
  666. package/lib/models/depreciation/depreciation-group-item.d.ts +10 -10
  667. package/lib/models/depreciation/depreciation-group.d.ts +11 -11
  668. package/lib/models/depreciation/depreciation-group.enum.d.ts +7 -7
  669. package/lib/models/depreciation/depreciation-groups.const.d.ts +9 -9
  670. package/lib/models/depreciation/depreciation-receipt.d.ts +8 -8
  671. package/lib/models/depreciation/depreciation.d.ts +70 -69
  672. package/lib/models/document/document-api-url-prefix.enum.d.ts +7 -7
  673. package/lib/models/document/document-file-types.const.d.ts +3 -3
  674. package/lib/models/document/document-folder.d.ts +7 -7
  675. package/lib/models/document/document.d.ts +21 -21
  676. package/lib/models/employee/employee-details.d.ts +5 -5
  677. package/lib/models/employee/employee-invite.d.ts +7 -7
  678. package/lib/models/endpoint/endpoint.d.ts +22 -22
  679. package/lib/models/endpoint/endpoints.const.d.ts +7 -7
  680. package/lib/models/event/app-event-type.enum.d.ts +40 -37
  681. package/lib/models/event/app-event.d.ts +9 -9
  682. package/lib/models/file/icons-file.enum.d.ts +5 -5
  683. package/lib/models/financial-year/financial-year.d.ts +19 -19
  684. package/lib/models/financial-year/month-name-short.enum.d.ts +19 -19
  685. package/lib/models/financial-year/month-number.enum.d.ts +19 -19
  686. package/lib/models/financial-year/months.const.d.ts +1 -1
  687. package/lib/models/firm/firm.d.ts +18 -18
  688. package/lib/models/income-position/income-position.d.ts +9 -9
  689. package/lib/models/income-source/income-source-chart-data.d.ts +14 -14
  690. package/lib/models/income-source/income-source-forecast.d.ts +21 -22
  691. package/lib/models/income-source/income-source-type.d.ts +9 -8
  692. package/lib/models/income-source/income-source.d.ts +29 -27
  693. package/lib/models/income-source/salary-forecast.d.ts +15 -16
  694. package/lib/models/income-source/sole-forecast.d.ts +10 -0
  695. package/lib/models/loan/loan-max-number-of-payments.enum.d.ts +8 -8
  696. package/lib/models/loan/loan-payment.d.ts +13 -13
  697. package/lib/models/loan/loan-payout.d.ts +9 -9
  698. package/lib/models/loan/loan.d.ts +20 -20
  699. package/lib/models/logbook/default-vehicle-expense.d.ts +5 -5
  700. package/lib/models/logbook/logbook-period.d.ts +6 -6
  701. package/lib/models/logbook/logbook-purpose-options.const.d.ts +4 -4
  702. package/lib/models/logbook/vehicle-claim.d.ts +19 -19
  703. package/lib/models/logbook/vehicle-logbook.d.ts +6 -6
  704. package/lib/models/logbook/vehicle.d.ts +12 -12
  705. package/lib/models/notification/notification.d.ts +14 -14
  706. package/lib/models/pdf/pdf-config.d.ts +8 -8
  707. package/lib/models/phone/phone.d.ts +6 -6
  708. package/lib/models/property/calculation-form-item.d.ts +15 -15
  709. package/lib/models/property/calculation-form-type.enum.d.ts +7 -7
  710. package/lib/models/property/capital-costs-itmes.const.d.ts +2 -2
  711. package/lib/models/property/corelogic-suggestion.d.ts +18 -18
  712. package/lib/models/property/ownership-filter-options.enum.d.ts +8 -8
  713. package/lib/models/property/property-capital-cost.d.ts +3 -3
  714. package/lib/models/property/property-category-movement.d.ts +9 -9
  715. package/lib/models/property/property-category.d.ts +4 -4
  716. package/lib/models/property/property-document.d.ts +14 -14
  717. package/lib/models/property/property-equity-chart-data.d.ts +62 -62
  718. package/lib/models/property/property-equity-chart-item.d.ts +19 -19
  719. package/lib/models/property/property-equity-chart-type.enum.d.ts +4 -4
  720. package/lib/models/property/property-forecast.d.ts +28 -28
  721. package/lib/models/property/property-owner.d.ts +21 -21
  722. package/lib/models/property/property-sold.d.ts +5 -5
  723. package/lib/models/property/property-subscription.d.ts +6 -6
  724. package/lib/models/property/property-valuation.d.ts +9 -9
  725. package/lib/models/property/property.d.ts +55 -55
  726. package/lib/models/registration-invite/registration-invite.d.ts +6 -6
  727. package/lib/models/service-subscription/module-url-list.const.d.ts +6 -6
  728. package/lib/models/service-subscription/service-payment.d.ts +5 -5
  729. package/lib/models/service-subscription/service-price.d.ts +5 -5
  730. package/lib/models/service-subscription/service-product.d.ts +5 -5
  731. package/lib/models/service-subscription/service-subscription-item.d.ts +6 -6
  732. package/lib/models/service-subscription/service-subscription.d.ts +55 -55
  733. package/lib/models/service-subscription/subscription-description.const.d.ts +3 -3
  734. package/lib/models/service-subscription/subscription-title.const.d.ts +3 -3
  735. package/lib/models/service-subscription/subscription-type.enum.d.ts +6 -6
  736. package/lib/models/tax-review/tax-review.d.ts +52 -52
  737. package/lib/models/tax-summary/tax-return-category-item-details.d.ts +13 -13
  738. package/lib/models/tax-summary/tax-return-category-item.d.ts +18 -18
  739. package/lib/models/tax-summary/tax-summary-section.d.ts +12 -12
  740. package/lib/models/tax-summary/tax-summary-type.enum.d.ts +7 -7
  741. package/lib/models/tax-summary/tax-summary.d.ts +44 -44
  742. package/lib/models/transaction/income-amount-type.enum.d.ts +7 -7
  743. package/lib/models/transaction/transaction-allocation.d.ts +12 -12
  744. package/lib/models/transaction/transaction-metadata.d.ts +5 -5
  745. package/lib/models/transaction/transaction-receipt.d.ts +8 -8
  746. package/lib/models/transaction/transaction.d.ts +99 -98
  747. package/lib/models/user/my-account-history-initiated-by.enum.d.ts +4 -4
  748. package/lib/models/user/my-account-history-status.enum.d.ts +4 -4
  749. package/lib/models/user/my-account-history-type.enum.d.ts +5 -5
  750. package/lib/models/user/my-account-history.d.ts +11 -11
  751. package/lib/models/user/occupation.d.ts +3 -3
  752. package/lib/models/user/user-roles.const.d.ts +4 -4
  753. package/lib/models/user/user-to-register.d.ts +7 -7
  754. package/lib/models/user/user-work-position.const.d.ts +3 -3
  755. package/lib/models/user/user.d.ts +64 -64
  756. package/lib/models/user-event/user-event-setting-field.enum.d.ts +8 -8
  757. package/lib/models/user-event/user-event-setting.d.ts +6 -6
  758. package/lib/models/user-event/user-event-type-category.d.ts +3 -3
  759. package/lib/models/user-event/user-event-type.d.ts +7 -7
  760. package/lib/services/address/address.service.d.ts +14 -14
  761. package/lib/services/asset/assets.service.d.ts +34 -34
  762. package/lib/services/auth/auth.service.d.ts +17 -17
  763. package/lib/services/auth/jwt.service.d.ts +16 -16
  764. package/lib/services/bank/bank-account-calculation.service.d.ts +19 -19
  765. package/lib/services/bank/bank-account.service.d.ts +48 -48
  766. package/lib/services/bank/bank-connection.service.d.ts +24 -24
  767. package/lib/services/bank/bank-transaction-calculation.service.d.ts +41 -41
  768. package/lib/services/bank/bank-transaction.service.d.ts +38 -38
  769. package/lib/services/bank/bank.service.d.ts +14 -14
  770. package/lib/services/bank/basiq.service.d.ts +42 -42
  771. package/lib/services/base-rest.service.d.ts +91 -91
  772. package/lib/services/borrowing-expense/borrowing-expense.service.d.ts +19 -19
  773. package/lib/services/chart-accounts/chart-accounts-depreciations.service.d.ts +19 -19
  774. package/lib/services/chart-accounts/chart-accounts.service.d.ts +37 -37
  775. package/lib/services/chat/chat.service.d.ts +31 -31
  776. package/lib/services/chat/message-document.service.d.ts +50 -50
  777. package/lib/services/chat/message.service.d.ts +31 -31
  778. package/lib/services/client/client-invite.service.d.ts +36 -36
  779. package/lib/services/client/client-movement.service.d.ts +40 -40
  780. package/lib/services/client/client-portfolio-report.service.d.ts +16 -16
  781. package/lib/services/depreciation/capital-project.service.d.ts +20 -20
  782. package/lib/services/depreciation/depreciation.service.d.ts +59 -59
  783. package/lib/services/document/document-folder.service.d.ts +40 -40
  784. package/lib/services/employee/employee-invite.service.d.ts +21 -21
  785. package/lib/services/employee/employee.service.d.ts +16 -16
  786. package/lib/services/event/event-dispatcher.service.d.ts +17 -17
  787. package/lib/services/event/sse.service.d.ts +16 -16
  788. package/lib/services/firm/firm.service.d.ts +27 -27
  789. package/lib/services/header-title/header-title.service.d.ts +11 -11
  790. package/lib/services/income-source/income-source-forecast.service.d.ts +36 -36
  791. package/lib/services/income-source/income-source.service.d.ts +48 -48
  792. package/lib/services/income-source/salary-forecast.service.d.ts +37 -37
  793. package/lib/services/income-source/sole-forecast.service.d.ts +33 -0
  794. package/lib/services/intercom/intercom.service.d.ts +21 -21
  795. package/lib/services/loan/loan.service.d.ts +63 -63
  796. package/lib/services/notification/notification.service.d.ts +31 -31
  797. package/lib/services/pdf/pdf.service.d.ts +23 -23
  798. package/lib/services/preloader/preloader.service.d.ts +12 -12
  799. package/lib/services/property/corelogic.service.d.ts +15 -15
  800. package/lib/services/property/equity-position-chart.service.d.ts +15 -15
  801. package/lib/services/property/property-calculation.service.d.ts +33 -33
  802. package/lib/services/property/property-capital-cost.service.d.ts +20 -20
  803. package/lib/services/property/property-category-movement.service.d.ts +15 -0
  804. package/lib/services/property/property-category.service.d.ts +13 -13
  805. package/lib/services/property/property-document.service.d.ts +31 -31
  806. package/lib/services/property/property-owner.service.d.ts +52 -52
  807. package/lib/services/property/property-sold.service.d.ts +13 -13
  808. package/lib/services/property/property.service.d.ts +54 -50
  809. package/lib/services/subscription/subscription.service.d.ts +47 -47
  810. package/lib/services/tax-review/tax-review-history.service.d.ts +19 -19
  811. package/lib/services/tax-review/tax-review.service.d.ts +44 -44
  812. package/lib/services/tax-summary/tax-summary.service.d.ts +31 -31
  813. package/lib/services/transaction/transaction-allocation.service.d.ts +43 -43
  814. package/lib/services/transaction/transaction-calculation.service.d.ts +29 -29
  815. package/lib/services/transaction/transaction.service.d.ts +92 -92
  816. package/lib/services/user/occupation.service.d.ts +20 -20
  817. package/lib/services/user/user-switcher.service.d.ts +20 -20
  818. package/lib/services/user/user.service.d.ts +60 -60
  819. package/lib/services/user-event/user-event-setting.service.d.ts +22 -22
  820. package/lib/services/user-event/user-event-type.service.d.ts +17 -17
  821. package/lib/services/work/work-tank.service.d.ts +93 -93
  822. package/lib/services/xlsx/xlsx.service.d.ts +11 -11
  823. package/lib/tt-core.module.d.ts +10 -10
  824. package/package.json +1 -1
  825. package/public-api.d.ts +346 -344
  826. package/taxtank-core.d.ts +5 -5
  827. package/esm2015/lib/interfaces/salary-forecast.interface.js +0 -2
  828. package/lib/interfaces/salary-forecast.interface.d.ts +0 -16
@@ -1,135 +1,135 @@
1
- import { Collection } from './collection';
2
- import flatten from 'lodash/flatten';
3
- import uniqBy from 'lodash/uniqBy';
4
- import concat from 'lodash/concat';
5
- import { TYPE_LOAN } from '../models/bank/type-loan.const';
6
- /**
7
- * Collection of bank accounts.
8
- */
9
- export class BankAccountCollection extends Collection {
10
- /**
11
- * get list of bank accounts with passed types
12
- */
13
- getByType(types, isExclude = false) {
14
- // get types always as array (if only one passed)
15
- const typesArray = concat(types);
16
- return this.items.filter((bankAccount) => {
17
- if (isExclude) {
18
- return !typesArray.includes(bankAccount.type);
19
- }
20
- return typesArray.includes(bankAccount.type);
21
- });
22
- }
23
- /**
24
- * get amount of initial loans
25
- */
26
- getInitialLoanAmount() {
27
- return this.getByType(TYPE_LOAN)
28
- .reduce((sum, bankAccount) => {
29
- return sum += bankAccount.balances.length ? bankAccount.getOpeningBalance() : 0;
30
- }, 0);
31
- }
32
- /**
33
- * get amount of current loans
34
- */
35
- getCurrentLoanAmount() {
36
- return this.getByType(TYPE_LOAN)
37
- .reduce((sum, bankAccount) => {
38
- return sum += bankAccount.currentBalance;
39
- }, 0);
40
- }
41
- /**
42
- * get collection filtered by property id
43
- */
44
- getByPropertyId(id) {
45
- return new BankAccountCollection(this.items.filter((bankAccount) => {
46
- return bankAccount.bankAccountProperties.find((bankAccountProperty) => {
47
- return bankAccountProperty.property.id === id;
48
- });
49
- }));
50
- }
51
- /**
52
- * get collection filtered by properties ids
53
- */
54
- getByPropertiesIds(ids) {
55
- return new BankAccountCollection(this.items.filter((bankAccount) => {
56
- return bankAccount.bankAccountProperties.find((bankAccountProperty) => {
57
- return ids.includes(bankAccountProperty.property.id);
58
- });
59
- }));
60
- }
61
- /**
62
- * get collection of active bank accounts
63
- */
64
- getActiveBankAccounts() {
65
- return new BankAccountCollection(this.items.filter((bankAccount) => {
66
- return bankAccount.isActive();
67
- }));
68
- }
69
- /**
70
- * get reduction of loan (reduction of principle) percentage
71
- */
72
- getPrincipleReductionPercent() {
73
- const initialLoans = this.getInitialLoanAmount();
74
- const currentLoans = this.getCurrentLoanAmount();
75
- if (!initialLoans) {
76
- return 0;
77
- }
78
- return (initialLoans - currentLoans) / initialLoans * 100;
79
- }
80
- /**
81
- * Get collection of loan bank accounts
82
- */
83
- getLoanAccounts() {
84
- return new BankAccountCollection(this.getByType(TYPE_LOAN));
85
- }
86
- getSavingsAccounts() {
87
- return new BankAccountCollection(this.getByType(TYPE_LOAN, true));
88
- }
89
- getOpeningBalance() {
90
- return this.items.reduce((sum, bankAccount) => sum + bankAccount.getOpeningBalance(), 0);
91
- }
92
- get currentBalance() {
93
- return this.sumBy('currentBalance');
94
- }
95
- /**
96
- * Get Collection of bank accounts with property tank type
97
- */
98
- getPropertyBankAccounts() {
99
- return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.isPropertyTank()));
100
- }
101
- /**
102
- * Get Collection of bank accounts with work tank type
103
- */
104
- getWorkBankAccounts() {
105
- return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.isWorkTank()));
106
- }
107
- /**
108
- * Get Collection of bank accounts by tank type
109
- */
110
- getByTankType(tankType) {
111
- return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.tankType === tankType));
112
- }
113
- /**
114
- * Get list of all bank account properties
115
- */
116
- getBankAccountPropertiesList() {
117
- return flatten(this.items.map((bankAccount) => {
118
- return bankAccount.bankAccountProperties;
119
- }));
120
- }
121
- /**
122
- * Get lis of unique properties from all bank accounts properties
123
- */
124
- getProperties() {
125
- return uniqBy(this.getBankAccountPropertiesList().map((bankAccountProperty) => {
126
- return bankAccountProperty.property;
127
- }), 'id');
128
- }
129
- getPropertyBalanceAmount(propertyId) {
130
- return this.items.reduce((sum, bankAccount) => {
131
- return sum + bankAccount.getPropertyBalanceAmount(propertyId);
132
- }, 0);
133
- }
134
- }
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1hY2NvdW50LmNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvY29sbGVjdGlvbnMvYmFuay1hY2NvdW50LmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU0xQyxPQUFPLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUzRDs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxVQUF1QjtJQUNoRTs7T0FFRztJQUNILFNBQVMsQ0FBQyxLQUFrRCxFQUFFLFlBQXFCLEtBQUs7UUFDdEYsaURBQWlEO1FBQ2pELE1BQU0sVUFBVSxHQUEwQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtZQUNwRCxJQUFJLFNBQVMsRUFBRTtnQkFDYixPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0M7WUFDRCxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7YUFDN0IsTUFBTSxDQUFDLENBQUMsR0FBVyxFQUFFLFdBQXdCLEVBQUUsRUFBRTtZQUNoRCxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQzthQUM3QixNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsV0FBd0IsRUFBRSxFQUFFO1lBQ2hELE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUM7UUFDM0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZSxDQUFDLEVBQVU7UUFDeEIsT0FBTyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBd0IsRUFBRSxFQUFFO1lBQzlFLE9BQU8sV0FBVyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLG1CQUF3QyxFQUFFLEVBQUU7Z0JBQ3pGLE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCLENBQUMsR0FBYTtRQUM5QixPQUFPLElBQUkscUJBQXFCLENBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBd0IsRUFBRSxFQUFFO1lBQzdDLE9BQU8sV0FBVyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLG1CQUF3QyxFQUFFLEVBQUU7Z0JBQ3pGLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtZQUM5RSxPQUFPLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0gsNEJBQTRCO1FBQzFCLE1BQU0sWUFBWSxHQUFXLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3pELE1BQU0sWUFBWSxHQUFXLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRXpELElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELE9BQU8sQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLEdBQUcsWUFBWSxHQUFHLEdBQUcsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsT0FBTyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBVyxFQUFFLFdBQXdCLEVBQVUsRUFBRSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4SCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILHVCQUF1QjtRQUNyQixPQUFPLElBQUkscUJBQXFCLENBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBd0IsRUFBVyxFQUFFLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQ3ZGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLHFCQUFxQixDQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQXdCLEVBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUNuRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLFFBQXNCO1FBQ2xDLE9BQU8sSUFBSSxxQkFBcUIsQ0FDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUF3QixFQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUM1RixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsNEJBQTRCO1FBQzFCLE9BQU8sT0FBTyxDQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBd0IsRUFBeUIsRUFBRTtZQUNqRSxPQUFPLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sTUFBTSxDQUNYLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLG1CQUF3QyxFQUFFLEVBQUU7WUFDbkYsT0FBTyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7UUFDdEMsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDO0lBRUQsd0JBQXdCLENBQUMsVUFBa0I7UUFDekMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVcsRUFBRSxXQUF3QixFQUFVLEVBQUU7WUFDekUsT0FBTyxHQUFHLEdBQUcsV0FBVyxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgQmFua0FjY291bnRUeXBlRW51bSB9IGZyb20gJy4uL2RiL0VudW1zL2JhbmstYWNjb3VudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgVGFua1R5cGVFbnVtIH0gZnJvbSAnLi4vZGIvRW51bXMvdGFuay10eXBlLmVudW0nO1xuaW1wb3J0IHsgQmFua0FjY291bnQgfSBmcm9tICcuLi9tb2RlbHMvYmFuay9iYW5rLWFjY291bnQnO1xuaW1wb3J0IHsgQmFua0FjY291bnRQcm9wZXJ0eSB9IGZyb20gJy4uL21vZGVscy9iYW5rL2JhbmstYWNjb3VudC1wcm9wZXJ0eSc7XG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gJy4uL21vZGVscy9wcm9wZXJ0eS9wcm9wZXJ0eSc7XG5pbXBvcnQgZmxhdHRlbiBmcm9tICdsb2Rhc2gvZmxhdHRlbic7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC91bmlxQnknO1xuaW1wb3J0IGNvbmNhdCBmcm9tICdsb2Rhc2gvY29uY2F0JztcbmltcG9ydCB7IFRZUEVfTE9BTiB9IGZyb20gJy4uL21vZGVscy9iYW5rL3R5cGUtbG9hbi5jb25zdCc7XG5cbi8qKlxuICogQ29sbGVjdGlvbiBvZiBiYW5rIGFjY291bnRzLlxuICovXG5leHBvcnQgY2xhc3MgQmFua0FjY291bnRDb2xsZWN0aW9uIGV4dGVuZHMgQ29sbGVjdGlvbjxCYW5rQWNjb3VudD4ge1xuICAvKipcbiAgICogZ2V0IGxpc3Qgb2YgYmFuayBhY2NvdW50cyB3aXRoIHBhc3NlZCB0eXBlc1xuICAgKi9cbiAgZ2V0QnlUeXBlKHR5cGVzOiBCYW5rQWNjb3VudFR5cGVFbnVtIHwgQmFua0FjY291bnRUeXBlRW51bVtdLCBpc0V4Y2x1ZGU6IGJvb2xlYW4gPSBmYWxzZSk6IEJhbmtBY2NvdW50W10ge1xuICAgIC8vIGdldCB0eXBlcyBhbHdheXMgYXMgYXJyYXkgKGlmIG9ubHkgb25lIHBhc3NlZClcbiAgICBjb25zdCB0eXBlc0FycmF5OiBCYW5rQWNjb3VudFR5cGVFbnVtW10gPSBjb25jYXQodHlwZXMpO1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XG4gICAgICBpZiAoaXNFeGNsdWRlKSB7XG4gICAgICAgIHJldHVybiAhdHlwZXNBcnJheS5pbmNsdWRlcyhiYW5rQWNjb3VudC50eXBlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0eXBlc0FycmF5LmluY2x1ZGVzKGJhbmtBY2NvdW50LnR5cGUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBhbW91bnQgb2YgaW5pdGlhbCBsb2Fuc1xuICAgKi9cbiAgZ2V0SW5pdGlhbExvYW5BbW91bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCeVR5cGUoVFlQRV9MT0FOKVxuICAgICAgLnJlZHVjZSgoc3VtOiBudW1iZXIsIGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCkgPT4ge1xuICAgICAgICByZXR1cm4gc3VtICs9IGJhbmtBY2NvdW50LmJhbGFuY2VzLmxlbmd0aCA/IGJhbmtBY2NvdW50LmdldE9wZW5pbmdCYWxhbmNlKCkgOiAwO1xuICAgICAgfSwgMCk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGFtb3VudCBvZiBjdXJyZW50IGxvYW5zXG4gICAqL1xuICBnZXRDdXJyZW50TG9hbkFtb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEJ5VHlwZShUWVBFX0xPQU4pXG4gICAgICAucmVkdWNlKChzdW06IG51bWJlciwgYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XG4gICAgICAgIHJldHVybiBzdW0gKz0gYmFua0FjY291bnQuY3VycmVudEJhbGFuY2U7XG4gICAgICB9LCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgY29sbGVjdGlvbiBmaWx0ZXJlZCBieSBwcm9wZXJ0eSBpZFxuICAgKi9cbiAgZ2V0QnlQcm9wZXJ0eUlkKGlkOiBudW1iZXIpOiBCYW5rQWNjb3VudENvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpID0+IHtcbiAgICAgIHJldHVybiBiYW5rQWNjb3VudC5iYW5rQWNjb3VudFByb3BlcnRpZXMuZmluZCgoYmFua0FjY291bnRQcm9wZXJ0eTogQmFua0FjY291bnRQcm9wZXJ0eSkgPT4ge1xuICAgICAgICByZXR1cm4gYmFua0FjY291bnRQcm9wZXJ0eS5wcm9wZXJ0eS5pZCA9PT0gaWQ7XG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGNvbGxlY3Rpb24gZmlsdGVyZWQgYnkgcHJvcGVydGllcyBpZHNcbiAgICovXG4gIGdldEJ5UHJvcGVydGllc0lkcyhpZHM6IG51bWJlcltdKTogQmFua0FjY291bnRDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbihcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGJhbmtBY2NvdW50LmJhbmtBY2NvdW50UHJvcGVydGllcy5maW5kKChiYW5rQWNjb3VudFByb3BlcnR5OiBCYW5rQWNjb3VudFByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGlkcy5pbmNsdWRlcyhiYW5rQWNjb3VudFByb3BlcnR5LnByb3BlcnR5LmlkKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGNvbGxlY3Rpb24gb2YgYWN0aXZlIGJhbmsgYWNjb3VudHNcbiAgICovXG4gIGdldEFjdGl2ZUJhbmtBY2NvdW50cygpOiBCYW5rQWNjb3VudENvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpID0+IHtcbiAgICAgIHJldHVybiBiYW5rQWNjb3VudC5pc0FjdGl2ZSgpO1xuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgcmVkdWN0aW9uIG9mIGxvYW4gKHJlZHVjdGlvbiBvZiBwcmluY2lwbGUpIHBlcmNlbnRhZ2VcbiAgICovXG4gIGdldFByaW5jaXBsZVJlZHVjdGlvblBlcmNlbnQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBpbml0aWFsTG9hbnM6IG51bWJlciA9IHRoaXMuZ2V0SW5pdGlhbExvYW5BbW91bnQoKTtcbiAgICBjb25zdCBjdXJyZW50TG9hbnM6IG51bWJlciA9IHRoaXMuZ2V0Q3VycmVudExvYW5BbW91bnQoKTtcblxuICAgIGlmICghaW5pdGlhbExvYW5zKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gKGluaXRpYWxMb2FucyAtIGN1cnJlbnRMb2FucykgLyBpbml0aWFsTG9hbnMgKiAxMDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbGxlY3Rpb24gb2YgbG9hbiBiYW5rIGFjY291bnRzXG4gICAqL1xuICBnZXRMb2FuQWNjb3VudHMoKTogQmFua0FjY291bnRDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbih0aGlzLmdldEJ5VHlwZShUWVBFX0xPQU4pKTtcbiAgfVxuXG4gIGdldFNhdmluZ3NBY2NvdW50cygpOiBCYW5rQWNjb3VudENvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKHRoaXMuZ2V0QnlUeXBlKFRZUEVfTE9BTiwgdHJ1ZSkpO1xuICB9XG5cbiAgZ2V0T3BlbmluZ0JhbGFuY2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBudW1iZXIgPT4gc3VtICsgYmFua0FjY291bnQuZ2V0T3BlbmluZ0JhbGFuY2UoKSwgMCk7XG4gIH1cblxuICBnZXQgY3VycmVudEJhbGFuY2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdW1CeSgnY3VycmVudEJhbGFuY2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgQ29sbGVjdGlvbiBvZiBiYW5rIGFjY291bnRzIHdpdGggcHJvcGVydHkgdGFuayB0eXBlXG4gICAqL1xuICBnZXRQcm9wZXJ0eUJhbmtBY2NvdW50cygpOiBCYW5rQWNjb3VudENvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCk6IGJvb2xlYW4gPT4gYmFua0FjY291bnQuaXNQcm9wZXJ0eVRhbmsoKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBDb2xsZWN0aW9uIG9mIGJhbmsgYWNjb3VudHMgd2l0aCB3b3JrIHRhbmsgdHlwZVxuICAgKi9cbiAgZ2V0V29ya0JhbmtBY2NvdW50cygpOiBCYW5rQWNjb3VudENvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCk6IGJvb2xlYW4gPT4gYmFua0FjY291bnQuaXNXb3JrVGFuaygpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IENvbGxlY3Rpb24gb2YgYmFuayBhY2NvdW50cyBieSB0YW5rIHR5cGVcbiAgICovXG4gIGdldEJ5VGFua1R5cGUodGFua1R5cGU6IFRhbmtUeXBlRW51bSk6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBCYW5rQWNjb3VudENvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KTogYm9vbGVhbiA9PiBiYW5rQWNjb3VudC50YW5rVHlwZSA9PT0gdGFua1R5cGUpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGlzdCBvZiBhbGwgYmFuayBhY2NvdW50IHByb3BlcnRpZXNcbiAgICovXG4gIGdldEJhbmtBY2NvdW50UHJvcGVydGllc0xpc3QoKTogQmFua0FjY291bnRQcm9wZXJ0eVtdIHtcbiAgICByZXR1cm4gZmxhdHRlbihcbiAgICAgIHRoaXMuaXRlbXMubWFwKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBCYW5rQWNjb3VudFByb3BlcnR5W10gPT4ge1xuICAgICAgICByZXR1cm4gYmFua0FjY291bnQuYmFua0FjY291bnRQcm9wZXJ0aWVzO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBsaXMgb2YgdW5pcXVlIHByb3BlcnRpZXMgZnJvbSBhbGwgYmFuayBhY2NvdW50cyBwcm9wZXJ0aWVzXG4gICAqL1xuICBnZXRQcm9wZXJ0aWVzKCk6IFByb3BlcnR5W10ge1xuICAgIHJldHVybiB1bmlxQnkoXG4gICAgICB0aGlzLmdldEJhbmtBY2NvdW50UHJvcGVydGllc0xpc3QoKS5tYXAoKGJhbmtBY2NvdW50UHJvcGVydHk6IEJhbmtBY2NvdW50UHJvcGVydHkpID0+IHtcbiAgICAgICAgcmV0dXJuIGJhbmtBY2NvdW50UHJvcGVydHkucHJvcGVydHk7XG4gICAgICB9KSxcbiAgICAgICdpZCdcbiAgICApO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlCYWxhbmNlQW1vdW50KHByb3BlcnR5SWQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMucmVkdWNlKChzdW06IG51bWJlciwgYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KTogbnVtYmVyID0+IHtcbiAgICAgIHJldHVybiBzdW0gKyBiYW5rQWNjb3VudC5nZXRQcm9wZXJ0eUJhbGFuY2VBbW91bnQocHJvcGVydHlJZCk7XG4gICAgfSwgMCk7XG4gIH1cbn1cbiJdfQ==
1
+ import { Collection } from './collection';
2
+ import flatten from 'lodash/flatten';
3
+ import uniqBy from 'lodash/uniqBy';
4
+ import concat from 'lodash/concat';
5
+ import { TYPE_LOAN } from '../models/bank/type-loan.const';
6
+ /**
7
+ * Collection of bank accounts.
8
+ */
9
+ export class BankAccountCollection extends Collection {
10
+ /**
11
+ * get list of bank accounts with passed types
12
+ */
13
+ getByType(types, isExclude = false) {
14
+ // get types always as array (if only one passed)
15
+ const typesArray = concat(types);
16
+ return this.items.filter((bankAccount) => {
17
+ if (isExclude) {
18
+ return !typesArray.includes(bankAccount.type);
19
+ }
20
+ return typesArray.includes(bankAccount.type);
21
+ });
22
+ }
23
+ /**
24
+ * get amount of initial loans
25
+ */
26
+ getInitialLoanAmount() {
27
+ return this.getByType(TYPE_LOAN)
28
+ .reduce((sum, bankAccount) => {
29
+ return sum += bankAccount.balances.length ? bankAccount.getOpeningBalance() : 0;
30
+ }, 0);
31
+ }
32
+ /**
33
+ * get amount of current loans
34
+ */
35
+ getCurrentLoanAmount() {
36
+ return this.getByType(TYPE_LOAN)
37
+ .reduce((sum, bankAccount) => {
38
+ return sum += bankAccount.currentBalance;
39
+ }, 0);
40
+ }
41
+ /**
42
+ * get collection filtered by property id
43
+ */
44
+ getByPropertyId(id) {
45
+ return new BankAccountCollection(this.items.filter((bankAccount) => {
46
+ return bankAccount.bankAccountProperties.find((bankAccountProperty) => {
47
+ return bankAccountProperty.property.id === id;
48
+ });
49
+ }));
50
+ }
51
+ /**
52
+ * get collection filtered by properties ids
53
+ */
54
+ getByPropertiesIds(ids) {
55
+ return new BankAccountCollection(this.items.filter((bankAccount) => {
56
+ return bankAccount.bankAccountProperties.find((bankAccountProperty) => {
57
+ return ids.includes(bankAccountProperty.property.id);
58
+ });
59
+ }));
60
+ }
61
+ /**
62
+ * get collection of active bank accounts
63
+ */
64
+ getActiveBankAccounts() {
65
+ return new BankAccountCollection(this.items.filter((bankAccount) => {
66
+ return bankAccount.isActive();
67
+ }));
68
+ }
69
+ /**
70
+ * get reduction of loan (reduction of principle) percentage
71
+ */
72
+ getPrincipleReductionPercent() {
73
+ const initialLoans = this.getInitialLoanAmount();
74
+ const currentLoans = this.getCurrentLoanAmount();
75
+ if (!initialLoans) {
76
+ return 0;
77
+ }
78
+ return (initialLoans - currentLoans) / initialLoans * 100;
79
+ }
80
+ /**
81
+ * Get collection of loan bank accounts
82
+ */
83
+ getLoanAccounts() {
84
+ return new BankAccountCollection(this.getByType(TYPE_LOAN));
85
+ }
86
+ getSavingsAccounts() {
87
+ return new BankAccountCollection(this.getByType(TYPE_LOAN, true));
88
+ }
89
+ getOpeningBalance() {
90
+ return this.items.reduce((sum, bankAccount) => sum + bankAccount.getOpeningBalance(), 0);
91
+ }
92
+ get currentBalance() {
93
+ return this.sumBy('currentBalance');
94
+ }
95
+ /**
96
+ * Get Collection of bank accounts with property tank type
97
+ */
98
+ getPropertyBankAccounts() {
99
+ return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.isPropertyTank()));
100
+ }
101
+ /**
102
+ * Get Collection of bank accounts with work tank type
103
+ */
104
+ getWorkBankAccounts() {
105
+ return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.isWorkTank()));
106
+ }
107
+ /**
108
+ * Get Collection of bank accounts by tank type
109
+ */
110
+ getByTankType(tankType) {
111
+ return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.tankType === tankType));
112
+ }
113
+ /**
114
+ * Get list of all bank account properties
115
+ */
116
+ getBankAccountPropertiesList() {
117
+ return flatten(this.items.map((bankAccount) => {
118
+ return bankAccount.bankAccountProperties;
119
+ }));
120
+ }
121
+ /**
122
+ * Get lis of unique properties from all bank accounts properties
123
+ */
124
+ getProperties() {
125
+ return uniqBy(this.getBankAccountPropertiesList().map((bankAccountProperty) => {
126
+ return bankAccountProperty.property;
127
+ }), 'id');
128
+ }
129
+ getPropertyBalanceAmount(propertyId) {
130
+ return this.items.reduce((sum, bankAccount) => {
131
+ return sum + bankAccount.getPropertyBalanceAmount(propertyId);
132
+ }, 0);
133
+ }
134
+ }
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1hY2NvdW50LmNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvY29sbGVjdGlvbnMvYmFuay1hY2NvdW50LmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU0xQyxPQUFPLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUzRDs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxVQUF1QjtJQUNoRTs7T0FFRztJQUNILFNBQVMsQ0FBQyxLQUFrRCxFQUFFLFlBQXFCLEtBQUs7UUFDdEYsaURBQWlEO1FBQ2pELE1BQU0sVUFBVSxHQUEwQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtZQUNwRCxJQUFJLFNBQVMsRUFBRTtnQkFDYixPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0M7WUFDRCxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7YUFDN0IsTUFBTSxDQUFDLENBQUMsR0FBVyxFQUFFLFdBQXdCLEVBQUUsRUFBRTtZQUNoRCxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFD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QUFDO1FBQ2hFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuL2NvbGxlY3Rpb24nO1xyXG5pbXBvcnQgeyBCYW5rQWNjb3VudFR5cGVFbnVtIH0gZnJvbSAnLi4vZGIvRW51bXMvYmFuay1hY2NvdW50LXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFRhbmtUeXBlRW51bSB9IGZyb20gJy4uL2RiL0VudW1zL3RhbmstdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgQmFua0FjY291bnQgfSBmcm9tICcuLi9tb2RlbHMvYmFuay9iYW5rLWFjY291bnQnO1xyXG5pbXBvcnQgeyBCYW5rQWNjb3VudFByb3BlcnR5IH0gZnJvbSAnLi4vbW9kZWxzL2JhbmsvYmFuay1hY2NvdW50LXByb3BlcnR5JztcclxuaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tICcuLi9tb2RlbHMvcHJvcGVydHkvcHJvcGVydHknO1xyXG5pbXBvcnQgZmxhdHRlbiBmcm9tICdsb2Rhc2gvZmxhdHRlbic7XHJcbmltcG9ydCB1bmlxQnkgZnJvbSAnbG9kYXNoL3VuaXFCeSc7XHJcbmltcG9ydCBjb25jYXQgZnJvbSAnbG9kYXNoL2NvbmNhdCc7XHJcbmltcG9ydCB7IFRZUEVfTE9BTiB9IGZyb20gJy4uL21vZGVscy9iYW5rL3R5cGUtbG9hbi5jb25zdCc7XHJcblxyXG4vKipcclxuICogQ29sbGVjdGlvbiBvZiBiYW5rIGFjY291bnRzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEJhbmtBY2NvdW50Q29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb248QmFua0FjY291bnQ+IHtcclxuICAvKipcclxuICAgKiBnZXQgbGlzdCBvZiBiYW5rIGFjY291bnRzIHdpdGggcGFzc2VkIHR5cGVzXHJcbiAgICovXHJcbiAgZ2V0QnlUeXBlKHR5cGVzOiBCYW5rQWNjb3VudFR5cGVFbnVtIHwgQmFua0FjY291bnRUeXBlRW51bVtdLCBpc0V4Y2x1ZGU6IGJvb2xlYW4gPSBmYWxzZSk6IEJhbmtBY2NvdW50W10ge1xyXG4gICAgLy8gZ2V0IHR5cGVzIGFsd2F5cyBhcyBhcnJheSAoaWYgb25seSBvbmUgcGFzc2VkKVxyXG4gICAgY29uc3QgdHlwZXNBcnJheTogQmFua0FjY291bnRUeXBlRW51bVtdID0gY29uY2F0KHR5cGVzKTtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XHJcbiAgICAgIGlmIChpc0V4Y2x1ZGUpIHtcclxuICAgICAgICByZXR1cm4gIXR5cGVzQXJyYXkuaW5jbHVkZXMoYmFua0FjY291bnQudHlwZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHR5cGVzQXJyYXkuaW5jbHVkZXMoYmFua0FjY291bnQudHlwZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGdldCBhbW91bnQgb2YgaW5pdGlhbCBsb2Fuc1xyXG4gICAqL1xyXG4gIGdldEluaXRpYWxMb2FuQW1vdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRCeVR5cGUoVFlQRV9MT0FOKVxyXG4gICAgICAucmVkdWNlKChzdW06IG51bWJlciwgYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHN1bSArPSBiYW5rQWNjb3VudC5iYWxhbmNlcy5sZW5ndGggPyBiYW5rQWNjb3VudC5nZXRPcGVuaW5nQmFsYW5jZSgpIDogMDtcclxuICAgICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZXQgYW1vdW50IG9mIGN1cnJlbnQgbG9hbnNcclxuICAgKi9cclxuICBnZXRDdXJyZW50TG9hbkFtb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QnlUeXBlKFRZUEVfTE9BTilcclxuICAgICAgLnJlZHVjZSgoc3VtOiBudW1iZXIsIGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBzdW0gKz0gYmFua0FjY291bnQuY3VycmVudEJhbGFuY2U7XHJcbiAgICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IGNvbGxlY3Rpb24gZmlsdGVyZWQgYnkgcHJvcGVydHkgaWRcclxuICAgKi9cclxuICBnZXRCeVByb3BlcnR5SWQoaWQ6IG51bWJlcik6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbih0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XHJcbiAgICAgIHJldHVybiBiYW5rQWNjb3VudC5iYW5rQWNjb3VudFByb3BlcnRpZXMuZmluZCgoYmFua0FjY291bnRQcm9wZXJ0eTogQmFua0FjY291bnRQcm9wZXJ0eSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBiYW5rQWNjb3VudFByb3BlcnR5LnByb3BlcnR5LmlkID09PSBpZDtcclxuICAgICAgfSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZXQgY29sbGVjdGlvbiBmaWx0ZXJlZCBieSBwcm9wZXJ0aWVzIGlkc1xyXG4gICAqL1xyXG4gIGdldEJ5UHJvcGVydGllc0lkcyhpZHM6IG51bWJlcltdKTogQmFua0FjY291bnRDb2xsZWN0aW9uIHtcclxuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKFxyXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGJhbmtBY2NvdW50LmJhbmtBY2NvdW50UHJvcGVydGllcy5maW5kKChiYW5rQWNjb3VudFByb3BlcnR5OiBCYW5rQWNjb3VudFByb3BlcnR5KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gaWRzLmluY2x1ZGVzKGJhbmtBY2NvdW50UHJvcGVydHkucHJvcGVydHkuaWQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGdldCBjb2xsZWN0aW9uIG9mIGFjdGl2ZSBiYW5rIGFjY291bnRzXHJcbiAgICovXHJcbiAgZ2V0QWN0aXZlQmFua0FjY291bnRzKCk6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbih0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiB7XHJcbiAgICAgIHJldHVybiBiYW5rQWNjb3VudC5pc0FjdGl2ZSgpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IHJlZHVjdGlvbiBvZiBsb2FuIChyZWR1Y3Rpb24gb2YgcHJpbmNpcGxlKSBwZXJjZW50YWdlXHJcbiAgICovXHJcbiAgZ2V0UHJpbmNpcGxlUmVkdWN0aW9uUGVyY2VudCgpOiBudW1iZXIge1xyXG4gICAgY29uc3QgaW5pdGlhbExvYW5zOiBudW1iZXIgPSB0aGlzLmdldEluaXRpYWxMb2FuQW1vdW50KCk7XHJcbiAgICBjb25zdCBjdXJyZW50TG9hbnM6IG51bWJlciA9IHRoaXMuZ2V0Q3VycmVudExvYW5BbW91bnQoKTtcclxuXHJcbiAgICBpZiAoIWluaXRpYWxMb2Fucykge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKGluaXRpYWxMb2FucyAtIGN1cnJlbnRMb2FucykgLyBpbml0aWFsTG9hbnMgKiAxMDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY29sbGVjdGlvbiBvZiBsb2FuIGJhbmsgYWNjb3VudHNcclxuICAgKi9cclxuICBnZXRMb2FuQWNjb3VudHMoKTogQmFua0FjY291bnRDb2xsZWN0aW9uIHtcclxuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKHRoaXMuZ2V0QnlUeXBlKFRZUEVfTE9BTikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2F2aW5nc0FjY291bnRzKCk6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbih0aGlzLmdldEJ5VHlwZShUWVBFX0xPQU4sIHRydWUpKTtcclxuICB9XHJcblxyXG4gIGdldE9wZW5pbmdCYWxhbmNlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBudW1iZXIgPT4gc3VtICsgYmFua0FjY291bnQuZ2V0T3BlbmluZ0JhbGFuY2UoKSwgMCk7XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudEJhbGFuY2UoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnN1bUJ5KCdjdXJyZW50QmFsYW5jZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IENvbGxlY3Rpb24gb2YgYmFuayBhY2NvdW50cyB3aXRoIHByb3BlcnR5IHRhbmsgdHlwZVxyXG4gICAqL1xyXG4gIGdldFByb3BlcnR5QmFua0FjY291bnRzKCk6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbihcclxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCk6IGJvb2xlYW4gPT4gYmFua0FjY291bnQuaXNQcm9wZXJ0eVRhbmsoKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgQ29sbGVjdGlvbiBvZiBiYW5rIGFjY291bnRzIHdpdGggd29yayB0YW5rIHR5cGVcclxuICAgKi9cclxuICBnZXRXb3JrQmFua0FjY291bnRzKCk6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbihcclxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCk6IGJvb2xlYW4gPT4gYmFua0FjY291bnQuaXNXb3JrVGFuaygpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBDb2xsZWN0aW9uIG9mIGJhbmsgYWNjb3VudHMgYnkgdGFuayB0eXBlXHJcbiAgICovXHJcbiAgZ2V0QnlUYW5rVHlwZSh0YW5rVHlwZTogVGFua1R5cGVFbnVtKTogQmFua0FjY291bnRDb2xsZWN0aW9uIHtcclxuICAgIHJldHVybiBuZXcgQmFua0FjY291bnRDb2xsZWN0aW9uKFxyXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KTogYm9vbGVhbiA9PiBiYW5rQWNjb3VudC50YW5rVHlwZSA9PT0gdGFua1R5cGUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGxpc3Qgb2YgYWxsIGJhbmsgYWNjb3VudCBwcm9wZXJ0aWVzXHJcbiAgICovXHJcbiAgZ2V0QmFua0FjY291bnRQcm9wZXJ0aWVzTGlzdCgpOiBCYW5rQWNjb3VudFByb3BlcnR5W10ge1xyXG4gICAgcmV0dXJuIGZsYXR0ZW4oXHJcbiAgICAgIHRoaXMuaXRlbXMubWFwKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBCYW5rQWNjb3VudFByb3BlcnR5W10gPT4ge1xyXG4gICAgICAgIHJldHVybiBiYW5rQWNjb3VudC5iYW5rQWNjb3VudFByb3BlcnRpZXM7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGxpcyBvZiB1bmlxdWUgcHJvcGVydGllcyBmcm9tIGFsbCBiYW5rIGFjY291bnRzIHByb3BlcnRpZXNcclxuICAgKi9cclxuICBnZXRQcm9wZXJ0aWVzKCk6IFByb3BlcnR5W10ge1xyXG4gICAgcmV0dXJuIHVuaXFCeShcclxuICAgICAgdGhpcy5nZXRCYW5rQWNjb3VudFByb3BlcnRpZXNMaXN0KCkubWFwKChiYW5rQWNjb3VudFByb3BlcnR5OiBCYW5rQWNjb3VudFByb3BlcnR5KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGJhbmtBY2NvdW50UHJvcGVydHkucHJvcGVydHk7XHJcbiAgICAgIH0pLFxyXG4gICAgICAnaWQnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvcGVydHlCYWxhbmNlQW1vdW50KHByb3BlcnR5SWQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBudW1iZXIgPT4ge1xyXG4gICAgICByZXR1cm4gc3VtICsgYmFua0FjY291bnQuZ2V0UHJvcGVydHlCYWxhbmNlQW1vdW50KHByb3BlcnR5SWQpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,119 +1,119 @@
1
- import { TransactionOperationEnum } from '../db/Enums/transaction-operation.enum';
2
- import { Collection } from './collection';
3
- import { CollectionDictionary } from './collection-dictionary';
4
- /**
5
- * Maximal delay between transfer transactions
6
- */
7
- const TRANSACTION_TRANSFER_DELAY = 96 * 3600 * 1000;
8
- /**
9
- * Collection of bank transactions.
10
- * IMPORTANT: Create this collection based on bank transactions from TransactionAllocationService
11
- * @TODO find way to accept interface with allocation instead of bankTransaction to prevent wrong usage
12
- * because all amounts calculates with allocated amounts but not from bank transactions amounts.
13
- */
14
- export class BankTransactionCollection extends Collection {
15
- getAmount() {
16
- return this.sumBy('amount');
17
- }
18
- /**
19
- * Difference between total bank transactions amount and sum of allocations for passed bank transactions
20
- */
21
- getUnallocatedAmount(allocations) {
22
- return +(this.getAmount() - allocations.getByBankTransactionsIds(this.getIds()).amount).toFixed(2);
23
- }
24
- /**
25
- * get date of the last transaction
26
- */
27
- getLastTransactionDate() {
28
- return new Date(Math.max.apply(Math, this.items.map((bankTransaction) => bankTransaction.date)));
29
- }
30
- /**
31
- * get list of credit transactions
32
- */
33
- get creditTransactions() {
34
- return new BankTransactionCollection(this.items.filter((bankTransaction) => bankTransaction.isCredit()));
35
- }
36
- /**
37
- * get list of debit transactions
38
- */
39
- get debitTransactions() {
40
- return new BankTransactionCollection(this.items.filter((bankTransaction) => bankTransaction.isDebit()));
41
- }
42
- /**
43
- * get difference between debit and credit transactions amounts
44
- */
45
- get balanceAmount() {
46
- return this.items.reduce((sum, bankTransaction) => sum + bankTransaction.balanceAmount, 0);
47
- }
48
- /**
49
- * get list of transactions for passed month
50
- * @param monthIndex Month number from 0 to 11
51
- */
52
- getTransactionsByMonth(monthIndex) {
53
- return new BankTransactionCollection(this.items.filter((bankTransaction) => bankTransaction.date.getMonth() === monthIndex));
54
- }
55
- /**
56
- * get list of transactions by provided bank accounts
57
- * @param bankAccounts by which transactions should be returned
58
- */
59
- getByBankAccounts(bankAccounts) {
60
- const bankAccountIds = bankAccounts.map((bankAccount) => bankAccount.id);
61
- return this.items.filter((bankTransaction) => bankAccountIds.includes(bankTransaction.bankAccount.id));
62
- }
63
- /**
64
- * get list of transactions by provided ids of bank accounts
65
- * @param ids of bank accounts
66
- */
67
- getByBankAccountsIds(ids) {
68
- return new BankTransactionCollection(this.items.filter((bankTransaction) => ids.includes(bankTransaction.bankAccount.id)));
69
- }
70
- /**
71
- * Find Bank Transaction available for transfer
72
- */
73
- findTransfer(bankTransaction) {
74
- return this.items.find((item) => {
75
- return item.amount + bankTransaction.amount === 0 &&
76
- Math.abs(bankTransaction.date.getTime() - item.date.getTime()) < TRANSACTION_TRANSFER_DELAY;
77
- });
78
- }
79
- /**
80
- * Group bank transactions by transaction id.
81
- * Each group is bank transaction collection and contains bank transactions related to transactions via allocations
82
- */
83
- groupByTransaction(allocations) {
84
- // Group allocations by transaction id
85
- const allocationsByTransactions = new CollectionDictionary(allocations, 'transaction');
86
- // Init an empty dictionary we will fill below
87
- const bankTransactionsByTransactions = new CollectionDictionary(new BankTransactionCollection([]));
88
- // Fill dictionary with the same keys as at allocationsByTransactions
89
- allocationsByTransactions.keys.forEach((key) => {
90
- bankTransactionsByTransactions.add(key, this.getByAllocations(allocationsByTransactions.get(key)));
91
- });
92
- return bankTransactionsByTransactions;
93
- }
94
- /**
95
- * Get collection of bank transactions related with passed allocations
96
- */
97
- getByAllocations(allocations) {
98
- return new BankTransactionCollection(this.items.filter((bankTransaction) => allocations.hasBankTransaction(bankTransaction)));
99
- }
100
- /**
101
- * Set allocate operation for bank transactions with amounts equal to salary
102
- */
103
- preselectAllocateOperationForSalary(salaryIncomeSources) {
104
- // incomeSource.salaryForecasts[0] because each income source has only one forecast for current fin year
105
- const salaryAmounts = salaryIncomeSources.map((incomeSource) => { var _a; return ((_a = incomeSource.salaryForecasts[0]) === null || _a === void 0 ? void 0 : _a.netPay) || 0; });
106
- this.items.forEach((bankTransaction) => {
107
- if (salaryAmounts.includes(bankTransaction.amount)) {
108
- bankTransaction.operation = TransactionOperationEnum.ALLOCATE;
109
- }
110
- });
111
- }
112
- /**
113
- * Get collection of unallocated bankTransactions
114
- */
115
- getUnallocatedBankTransactions(allocations) {
116
- return new BankTransactionCollection(this.items.filter((bankTransaction) => !bankTransaction.isAllocated(allocations)));
117
- }
118
- }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay10cmFuc2FjdGlvbi5jb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL2NvbGxlY3Rpb25zL2JhbmstdHJhbnNhY3Rpb24uY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUtsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRy9EOztHQUVHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBVyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUU1RDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxVQUEyQjtJQUN4RSxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLFdBQTRDO1FBQy9ELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxXQUFXLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQjtRQUNwQixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWdDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxrQkFBa0I7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Tyw4QkFBOEIsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxXQUE0QztRQUMzRCxPQUFPLElBQUkseUJBQXlCLENBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZ0MsRUFBVyxFQUFFLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQ2xILENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQ0FBbUMsQ0FBQyxtQkFBbUM7UUFDckUsd0dBQXdHO1FBQ3hHLE1BQU0sYUFBYSxHQUFhLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQTBCLEVBQVUsRUFBRSxXQUFDLE9BQUEsQ0FBQSxNQUFBLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLDBDQUFFLE1BQU0sS0FBSSxDQUFDLENBQUEsRUFBQSxDQUFDLENBQUM7UUFFOUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFnQyxFQUFRLEVBQUU7WUFDNUQsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDbEQsZUFBZSxDQUFDLFNBQVMsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLENBQUM7YUFDL0Q7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILDhCQUE4QixDQUFDLFdBQTRDO1FBQ3pFLE9BQU8sSUFBSSx5QkFBeUIsQ0FDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFnQyxFQUFXLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDNUcsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uT3BlcmF0aW9uRW51bSB9IGZyb20gJy4uL2RiL0VudW1zL3RyYW5zYWN0aW9uLW9wZXJhdGlvbi5lbnVtJztcbmltcG9ydCB7IEJhbmtUcmFuc2FjdGlvbiB9IGZyb20gJy4uL21vZGVscy9iYW5rL2JhbmstdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgTW9udGhOdW1iZXJFbnVtIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbmFuY2lhbC15ZWFyL21vbnRoLW51bWJlci5lbnVtJztcbmltcG9ydCB7IEluY29tZVNvdXJjZSB9IGZyb20gJy4uL21vZGVscy9pbmNvbWUtc291cmNlL2luY29tZS1zb3VyY2UnO1xuaW1wb3J0IHsgQmFua0FjY291bnQgfSBmcm9tICcuLi9tb2RlbHMvYmFuay9iYW5rLWFjY291bnQnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4vY29sbGVjdGlvbic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRGljdGlvbmFyeSB9IGZyb20gJy4vY29sbGVjdGlvbi1kaWN0aW9uYXJ5JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQWxsb2NhdGlvbkNvbGxlY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uLWFsbG9jYXRpb24uY29sbGVjdGlvbic7XG5cbi8qKlxuICogTWF4aW1hbCBkZWxheSBiZXR3ZWVuIHRyYW5zZmVyIHRyYW5zYWN0aW9uc1xuICovXG5jb25zdCBUUkFOU0FDVElPTl9UUkFOU0ZFUl9ERUxBWTogbnVtYmVyID0gOTYgKiAzNjAwICogMTAwMDtcblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIGJhbmsgdHJhbnNhY3Rpb25zLlxuICogSU1QT1JUQU5UOiBDcmVhdGUgdGhpcyBjb2xsZWN0aW9uIGJhc2VkIG9uIGJhbmsgdHJhbnNhY3Rpb25zIGZyb20gVHJhbnNhY3Rpb25BbGxvY2F0aW9uU2VydmljZVxuICogQFRPRE8gZmluZCB3YXkgdG8gYWNjZXB0IGludGVyZmFjZSB3aXRoIGFsbG9jYXRpb24gaW5zdGVhZCBvZiBiYW5rVHJhbnNhY3Rpb24gdG8gcHJldmVudCB3cm9uZyB1c2FnZVxuICogYmVjYXVzZSBhbGwgYW1vdW50cyBjYWxjdWxhdGVzIHdpdGggYWxsb2NhdGVkIGFtb3VudHMgYnV0IG5vdCBmcm9tIGJhbmsgdHJhbnNhY3Rpb25zIGFtb3VudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uIGV4dGVuZHMgQ29sbGVjdGlvbjxCYW5rVHJhbnNhY3Rpb24+IHtcbiAgZ2V0QW1vdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3VtQnkoJ2Ftb3VudCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpZmZlcmVuY2UgYmV0d2VlbiB0b3RhbCBiYW5rIHRyYW5zYWN0aW9ucyBhbW91bnQgYW5kIHN1bSBvZiBhbGxvY2F0aW9ucyBmb3IgcGFzc2VkIGJhbmsgdHJhbnNhY3Rpb25zXG4gICAqL1xuICBnZXRVbmFsbG9jYXRlZEFtb3VudChhbGxvY2F0aW9uczogVHJhbnNhY3Rpb25BbGxvY2F0aW9uQ29sbGVjdGlvbikge1xuICAgIHJldHVybiArKHRoaXMuZ2V0QW1vdW50KCkgLSBhbGxvY2F0aW9ucy5nZXRCeUJhbmtUcmFuc2FjdGlvbnNJZHModGhpcy5nZXRJZHMoKSkuYW1vdW50KS50b0ZpeGVkKDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBkYXRlIG9mIHRoZSBsYXN0IHRyYW5zYWN0aW9uXG4gICAqL1xuICBnZXRMYXN0VHJhbnNhY3Rpb25EYXRlKCk6IERhdGUge1xuICAgIHJldHVybiBuZXcgRGF0ZShNYXRoLm1heC5hcHBseShNYXRoLCB0aGlzLml0ZW1zLm1hcCgoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IGJhbmtUcmFuc2FjdGlvbi5kYXRlKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBsaXN0IG9mIGNyZWRpdCB0cmFuc2FjdGlvbnNcbiAgICovXG4gIGdldCBjcmVkaXRUcmFuc2FjdGlvbnMoKTogQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKSA9PiBiYW5rVHJhbnNhY3Rpb24uaXNDcmVkaXQoKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBsaXN0IG9mIGRlYml0IHRyYW5zYWN0aW9uc1xuICAgKi9cbiAgZ2V0IGRlYml0VHJhbnNhY3Rpb25zKCk6IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbihcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbikgPT4gYmFua1RyYW5zYWN0aW9uLmlzRGViaXQoKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBkaWZmZXJlbmNlIGJldHdlZW4gZGViaXQgYW5kIGNyZWRpdCB0cmFuc2FjdGlvbnMgYW1vdW50c1xuICAgKi9cbiAgZ2V0IGJhbGFuY2VBbW91bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbikgPT4gc3VtICsgYmFua1RyYW5zYWN0aW9uLmJhbGFuY2VBbW91bnQsIDApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBsaXN0IG9mIHRyYW5zYWN0aW9ucyBmb3IgcGFzc2VkIG1vbnRoXG4gICAqIEBwYXJhbSBtb250aEluZGV4IE1vbnRoIG51bWJlciBmcm9tIDAgdG8gMTFcbiAgICovXG4gIGdldFRyYW5zYWN0aW9uc0J5TW9udGgobW9udGhJbmRleDogTW9udGhOdW1iZXJFbnVtKTogQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKSA9PiBiYW5rVHJhbnNhY3Rpb24uZGF0ZS5nZXRNb250aCgpID09PSBtb250aEluZGV4KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGJ5IHByb3ZpZGVkIGJhbmsgYWNjb3VudHNcbiAgICogQHBhcmFtIGJhbmtBY2NvdW50cyBieSB3aGljaCB0cmFuc2FjdGlvbnMgc2hvdWxkIGJlIHJldHVybmVkXG4gICAqL1xuICBnZXRCeUJhbmtBY2NvdW50cyhiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50W10pOiBCYW5rVHJhbnNhY3Rpb25bXSB7XG4gICAgY29uc3QgYmFua0FjY291bnRJZHM6IG51bWJlcltdID0gYmFua0FjY291bnRzLm1hcCgoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KSA9PiBiYW5rQWNjb3VudC5pZCk7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbikgPT4gYmFua0FjY291bnRJZHMuaW5jbHVkZXMoYmFua1RyYW5zYWN0aW9uLmJhbmtBY2NvdW50LmlkKSk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGJ5IHByb3ZpZGVkIGlkcyBvZiBiYW5rIGFjY291bnRzXG4gICAqIEBwYXJhbSBpZHMgb2YgYmFuayBhY2NvdW50c1xuICAgKi9cbiAgZ2V0QnlCYW5rQWNjb3VudHNJZHMoaWRzOiBudW1iZXJbXSk6IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbihcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbikgPT4gaWRzLmluY2x1ZGVzKGJhbmtUcmFuc2FjdGlvbi5iYW5rQWNjb3VudC5pZCkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIEJhbmsgVHJhbnNhY3Rpb24gYXZhaWxhYmxlIGZvciB0cmFuc2ZlclxuICAgKi9cbiAgZmluZFRyYW5zZmVyKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKTogQmFua1RyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kKChpdGVtOiBCYW5rVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IHtcbiAgICAgIHJldHVybiBpdGVtLmFtb3VudCArIGJhbmtUcmFuc2FjdGlvbi5hbW91bnQgPT09IDAgJiZcbiAgICAgICAgTWF0aC5hYnMoYmFua1RyYW5zYWN0aW9uLmRhdGUuZ2V0VGltZSgpIC0gaXRlbS5kYXRlLmdldFRpbWUoKSkgPCBUUkFOU0FDVElPTl9UUkFOU0ZFUl9ERUxBWTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcm91cCBiYW5rIHRyYW5zYWN0aW9ucyBieSB0cmFuc2FjdGlvbiBpZC5cbiAgICogRWFjaCBncm91cCBpcyBiYW5rIHRyYW5zYWN0aW9uIGNvbGxlY3Rpb24gYW5kIGNvbnRhaW5zIGJhbmsgdHJhbnNhY3Rpb25zIHJlbGF0ZWQgdG8gdHJhbnNhY3Rpb25zIHZpYSBhbGxvY2F0aW9uc1xuICAgKi9cbiAgZ3JvdXBCeVRyYW5zYWN0aW9uKGFsbG9jYXRpb25zOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uKTogQ29sbGVjdGlvbkRpY3Rpb25hcnk8QmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbj4ge1xuICAgIC8vIEdyb3VwIGFsbG9jYXRpb25zIGJ5IHRyYW5zYWN0aW9uIGlkXG4gICAgY29uc3QgYWxsb2NhdGlvbnNCeVRyYW5zYWN0aW9ucyA9IG5ldyBDb2xsZWN0aW9uRGljdGlvbmFyeShhbGxvY2F0aW9ucywgJ3RyYW5zYWN0aW9uJyk7XG4gICAgLy8gSW5pdCBhbiBlbXB0eSBkaWN0aW9uYXJ5IHdlIHdpbGwgZmlsbCBiZWxvd1xuICAgIGNvbnN0IGJhbmtUcmFuc2FjdGlvbnNCeVRyYW5zYWN0aW9uczogQ29sbGVjdGlvbkRpY3Rpb25hcnk8QmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbj4gPSBuZXcgQ29sbGVjdGlvbkRpY3Rpb25hcnkobmV3IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24oW10pKTtcblxuICAgIC8vIEZpbGwgZGljdGlvbmFyeSB3aXRoIHRoZSBzYW1lIGtleXMgYXMgYXQgYWxsb2NhdGlvbnNCeVRyYW5zYWN0aW9uc1xuICAgIGFsbG9jYXRpb25zQnlUcmFuc2FjdGlvbnMua2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgYmFua1RyYW5zYWN0aW9uc0J5VHJhbnNhY3Rpb25zLmFkZChrZXksIHRoaXMuZ2V0QnlBbGxvY2F0aW9ucyhhbGxvY2F0aW9uc0J5VHJhbnNhY3Rpb25zLmdldChrZXkpKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmFua1RyYW5zYWN0aW9uc0J5VHJhbnNhY3Rpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb2xsZWN0aW9uIG9mIGJhbmsgdHJhbnNhY3Rpb25zIHJlbGF0ZWQgd2l0aCBwYXNzZWQgYWxsb2NhdGlvbnNcbiAgICovXG4gIGdldEJ5QWxsb2NhdGlvbnMoYWxsb2NhdGlvbnM6IFRyYW5zYWN0aW9uQWxsb2NhdGlvbkNvbGxlY3Rpb24pOiBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IGFsbG9jYXRpb25zLmhhc0JhbmtUcmFuc2FjdGlvbihiYW5rVHJhbnNhY3Rpb24pKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGFsbG9jYXRlIG9wZXJhdGlvbiBmb3IgYmFuayB0cmFuc2FjdGlvbnMgd2l0aCBhbW91bnRzIGVxdWFsIHRvIHNhbGFyeVxuICAgKi9cbiAgcHJlc2VsZWN0QWxsb2NhdGVPcGVyYXRpb25Gb3JTYWxhcnkoc2FsYXJ5SW5jb21lU291cmNlczogSW5jb21lU291cmNlW10pOiB2b2lkIHtcbiAgICAvLyBpbmNvbWVTb3VyY2Uuc2FsYXJ5Rm9yZWNhc3RzWzBdIGJlY2F1c2UgZWFjaCBpbmNvbWUgc291cmNlIGhhcyBvbmx5IG9uZSBmb3JlY2FzdCBmb3IgY3VycmVudCBmaW4geWVhclxuICAgIGNvbnN0IHNhbGFyeUFtb3VudHM6IG51bWJlcltdID0gc2FsYXJ5SW5jb21lU291cmNlcy5tYXAoKGluY29tZVNvdXJjZTogSW5jb21lU291cmNlKTogbnVtYmVyID0+IGluY29tZVNvdXJjZS5zYWxhcnlGb3JlY2FzdHNbMF0/Lm5ldFBheSB8fCAwKTtcblxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pOiB2b2lkID0+IHtcbiAgICAgIGlmIChzYWxhcnlBbW91bnRzLmluY2x1ZGVzKGJhbmtUcmFuc2FjdGlvbi5hbW91bnQpKSB7XG4gICAgICAgIGJhbmtUcmFuc2FjdGlvbi5vcGVyYXRpb24gPSBUcmFuc2FjdGlvbk9wZXJhdGlvbkVudW0uQUxMT0NBVEU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbGxlY3Rpb24gb2YgdW5hbGxvY2F0ZWQgYmFua1RyYW5zYWN0aW9uc1xuICAgKi9cbiAgZ2V0VW5hbGxvY2F0ZWRCYW5rVHJhbnNhY3Rpb25zKGFsbG9jYXRpb25zOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uKTogQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxuICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKTogYm9vbGVhbiA9PiAhYmFua1RyYW5zYWN0aW9uLmlzQWxsb2NhdGVkKGFsbG9jYXRpb25zKSlcbiAgICApO1xuICB9XG59XG4iXX0=
1
+ import { TransactionOperationEnum } from '../db/Enums/transaction-operation.enum';
2
+ import { Collection } from './collection';
3
+ import { CollectionDictionary } from './collection-dictionary';
4
+ /**
5
+ * Maximal delay between transfer transactions
6
+ */
7
+ const TRANSACTION_TRANSFER_DELAY = 96 * 3600 * 1000;
8
+ /**
9
+ * Collection of bank transactions.
10
+ * IMPORTANT: Create this collection based on bank transactions from TransactionAllocationService
11
+ * @TODO find way to accept interface with allocation instead of bankTransaction to prevent wrong usage
12
+ * because all amounts calculates with allocated amounts but not from bank transactions amounts.
13
+ */
14
+ export class BankTransactionCollection extends Collection {
15
+ getAmount() {
16
+ return this.sumBy('amount');
17
+ }
18
+ /**
19
+ * Difference between total bank transactions amount and sum of allocations for passed bank transactions
20
+ */
21
+ getUnallocatedAmount(allocations) {
22
+ return +(this.getAmount() - allocations.getByBankTransactionsIds(this.getIds()).amount).toFixed(2);
23
+ }
24
+ /**
25
+ * get date of the last transaction
26
+ */
27
+ getLastTransactionDate() {
28
+ return new Date(Math.max.apply(Math, this.items.map((bankTransaction) => bankTransaction.date)));
29
+ }
30
+ /**
31
+ * get list of credit transactions
32
+ */
33
+ get creditTransactions() {
34
+ return new BankTransactionCollection(this.items.filter((bankTransaction) => bankTransaction.isCredit()));
35
+ }
36
+ /**
37
+ * get list of debit transactions
38
+ */
39
+ get debitTransactions() {
40
+ return new BankTransactionCollection(this.items.filter((bankTransaction) => bankTransaction.isDebit()));
41
+ }
42
+ /**
43
+ * get difference between debit and credit transactions amounts
44
+ */
45
+ get balanceAmount() {
46
+ return this.items.reduce((sum, bankTransaction) => sum + bankTransaction.balanceAmount, 0);
47
+ }
48
+ /**
49
+ * get list of transactions for passed month
50
+ * @param monthIndex Month number from 0 to 11
51
+ */
52
+ getTransactionsByMonth(monthIndex) {
53
+ return new BankTransactionCollection(this.items.filter((bankTransaction) => bankTransaction.date.getMonth() === monthIndex));
54
+ }
55
+ /**
56
+ * get list of transactions by provided bank accounts
57
+ * @param bankAccounts by which transactions should be returned
58
+ */
59
+ getByBankAccounts(bankAccounts) {
60
+ const bankAccountIds = bankAccounts.map((bankAccount) => bankAccount.id);
61
+ return this.items.filter((bankTransaction) => bankAccountIds.includes(bankTransaction.bankAccount.id));
62
+ }
63
+ /**
64
+ * get list of transactions by provided ids of bank accounts
65
+ * @param ids of bank accounts
66
+ */
67
+ getByBankAccountsIds(ids) {
68
+ return new BankTransactionCollection(this.items.filter((bankTransaction) => ids.includes(bankTransaction.bankAccount.id)));
69
+ }
70
+ /**
71
+ * Find Bank Transaction available for transfer
72
+ */
73
+ findTransfer(bankTransaction) {
74
+ return this.items.find((item) => {
75
+ return item.amount + bankTransaction.amount === 0 &&
76
+ Math.abs(bankTransaction.date.getTime() - item.date.getTime()) < TRANSACTION_TRANSFER_DELAY;
77
+ });
78
+ }
79
+ /**
80
+ * Group bank transactions by transaction id.
81
+ * Each group is bank transaction collection and contains bank transactions related to transactions via allocations
82
+ */
83
+ groupByTransaction(allocations) {
84
+ // Group allocations by transaction id
85
+ const allocationsByTransactions = new CollectionDictionary(allocations, 'transaction');
86
+ // Init an empty dictionary we will fill below
87
+ const bankTransactionsByTransactions = new CollectionDictionary(new BankTransactionCollection([]));
88
+ // Fill dictionary with the same keys as at allocationsByTransactions
89
+ allocationsByTransactions.keys.forEach((key) => {
90
+ bankTransactionsByTransactions.add(key, this.getByAllocations(allocationsByTransactions.get(key)));
91
+ });
92
+ return bankTransactionsByTransactions;
93
+ }
94
+ /**
95
+ * Get collection of bank transactions related with passed allocations
96
+ */
97
+ getByAllocations(allocations) {
98
+ return new BankTransactionCollection(this.items.filter((bankTransaction) => allocations.hasBankTransaction(bankTransaction)));
99
+ }
100
+ /**
101
+ * Set allocate operation for bank transactions with amounts equal to salary
102
+ */
103
+ preselectAllocateOperationForSalary(salaryIncomeSources) {
104
+ // incomeSource.salaryForecasts[0] because each income source has only one forecast for current fin year
105
+ const salaryAmounts = salaryIncomeSources.map((incomeSource) => { var _a; return ((_a = incomeSource.salaryForecasts[0]) === null || _a === void 0 ? void 0 : _a.netPay) || 0; });
106
+ this.items.forEach((bankTransaction) => {
107
+ if (salaryAmounts.includes(bankTransaction.amount)) {
108
+ bankTransaction.operation = TransactionOperationEnum.ALLOCATE;
109
+ }
110
+ });
111
+ }
112
+ /**
113
+ * Get collection of unallocated bankTransactions
114
+ */
115
+ getUnallocatedBankTransactions(allocations) {
116
+ return new BankTransactionCollection(this.items.filter((bankTransaction) => !bankTransaction.isAllocated(allocations)));
117
+ }
118
+ }
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay10cmFuc2FjdGlvbi5jb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL2NvbGxlY3Rpb25zL2JhbmstdHJhbnNhY3Rpb24uY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUtsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRy9EOztHQUVHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBVyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUU1RDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxVQUEyQjtJQUN4RSxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLFdBQTRDO1FBQy9ELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxXQUFXLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQjtRQUNwQixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWdDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxrQkFBa0I7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Tyw4QkFBOEIsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxXQUE0QztRQUMzRCxPQUFPLElBQUkseUJBQXlCLENBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZ0MsRUFBVyxFQUFFLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQ2xILENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQ0FBbUMsQ0FBQyxtQkFBbUM7UUFDckUsd0dBQXdHO1FBQ3hHLE1BQU0sYUFBYSxHQUFhLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQTBCLEVBQVUsRUFBRSxXQUFDLE9BQUEsQ0FBQSxNQUFBLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLDBDQUFFLE1BQU0sS0FBSSxDQUFDLENBQUEsRUFBQSxDQUFDLENBQUM7UUFFOUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFnQyxFQUFRLEVBQUU7WUFDNUQsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDbEQsZUFBZSxDQUFDLFNBQVMsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLENBQUM7YUFDL0Q7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILDhCQUE4QixDQUFDLFdBQTRDO1FBQ3pFLE9BQU8sSUFBSSx5QkFBeUIsQ0FDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFnQyxFQUFXLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDNUcsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uT3BlcmF0aW9uRW51bSB9IGZyb20gJy4uL2RiL0VudW1zL3RyYW5zYWN0aW9uLW9wZXJhdGlvbi5lbnVtJztcclxuaW1wb3J0IHsgQmFua1RyYW5zYWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2JhbmsvYmFuay10cmFuc2FjdGlvbic7XHJcbmltcG9ydCB7IE1vbnRoTnVtYmVyRW51bSB9IGZyb20gJy4uL21vZGVscy9maW5hbmNpYWwteWVhci9tb250aC1udW1iZXIuZW51bSc7XHJcbmltcG9ydCB7IEluY29tZVNvdXJjZSB9IGZyb20gJy4uL21vZGVscy9pbmNvbWUtc291cmNlL2luY29tZS1zb3VyY2UnO1xyXG5pbXBvcnQgeyBCYW5rQWNjb3VudCB9IGZyb20gJy4uL21vZGVscy9iYW5rL2JhbmstYWNjb3VudCc7XHJcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuL2NvbGxlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb2xsZWN0aW9uRGljdGlvbmFyeSB9IGZyb20gJy4vY29sbGVjdGlvbi1kaWN0aW9uYXJ5JztcclxuaW1wb3J0IHsgVHJhbnNhY3Rpb25BbGxvY2F0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24tYWxsb2NhdGlvbi5jb2xsZWN0aW9uJztcclxuXHJcbi8qKlxyXG4gKiBNYXhpbWFsIGRlbGF5IGJldHdlZW4gdHJhbnNmZXIgdHJhbnNhY3Rpb25zXHJcbiAqL1xyXG5jb25zdCBUUkFOU0FDVElPTl9UUkFOU0ZFUl9ERUxBWTogbnVtYmVyID0gOTYgKiAzNjAwICogMTAwMDtcclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0aW9uIG9mIGJhbmsgdHJhbnNhY3Rpb25zLlxyXG4gKiBJTVBPUlRBTlQ6IENyZWF0ZSB0aGlzIGNvbGxlY3Rpb24gYmFzZWQgb24gYmFuayB0cmFuc2FjdGlvbnMgZnJvbSBUcmFuc2FjdGlvbkFsbG9jYXRpb25TZXJ2aWNlXHJcbiAqIEBUT0RPIGZpbmQgd2F5IHRvIGFjY2VwdCBpbnRlcmZhY2Ugd2l0aCBhbGxvY2F0aW9uIGluc3RlYWQgb2YgYmFua1RyYW5zYWN0aW9uIHRvIHByZXZlbnQgd3JvbmcgdXNhZ2VcclxuICogYmVjYXVzZSBhbGwgYW1vdW50cyBjYWxjdWxhdGVzIHdpdGggYWxsb2NhdGVkIGFtb3VudHMgYnV0IG5vdCBmcm9tIGJhbmsgdHJhbnNhY3Rpb25zIGFtb3VudHMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb248QmFua1RyYW5zYWN0aW9uPiB7XHJcbiAgZ2V0QW1vdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5zdW1CeSgnYW1vdW50Jyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaWZmZXJlbmNlIGJldHdlZW4gdG90YWwgYmFuayB0cmFuc2FjdGlvbnMgYW1vdW50IGFuZCBzdW0gb2YgYWxsb2NhdGlvbnMgZm9yIHBhc3NlZCBiYW5rIHRyYW5zYWN0aW9uc1xyXG4gICAqL1xyXG4gIGdldFVuYWxsb2NhdGVkQW1vdW50KGFsbG9jYXRpb25zOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uKSB7XHJcbiAgICByZXR1cm4gKyh0aGlzLmdldEFtb3VudCgpIC0gYWxsb2NhdGlvbnMuZ2V0QnlCYW5rVHJhbnNhY3Rpb25zSWRzKHRoaXMuZ2V0SWRzKCkpLmFtb3VudCkudG9GaXhlZCgyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGdldCBkYXRlIG9mIHRoZSBsYXN0IHRyYW5zYWN0aW9uXHJcbiAgICovXHJcbiAgZ2V0TGFzdFRyYW5zYWN0aW9uRGF0ZSgpOiBEYXRlIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZShNYXRoLm1heC5hcHBseShNYXRoLCB0aGlzLml0ZW1zLm1hcCgoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IGJhbmtUcmFuc2FjdGlvbi5kYXRlKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IGxpc3Qgb2YgY3JlZGl0IHRyYW5zYWN0aW9uc1xyXG4gICAqL1xyXG4gIGdldCBjcmVkaXRUcmFuc2FjdGlvbnMoKTogQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24oXHJcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbikgPT4gYmFua1RyYW5zYWN0aW9uLmlzQ3JlZGl0KCkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IGxpc3Qgb2YgZGViaXQgdHJhbnNhY3Rpb25zXHJcbiAgICovXHJcbiAgZ2V0IGRlYml0VHJhbnNhY3Rpb25zKCk6IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24ge1xyXG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxyXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IGJhbmtUcmFuc2FjdGlvbi5pc0RlYml0KCkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IGRpZmZlcmVuY2UgYmV0d2VlbiBkZWJpdCBhbmQgY3JlZGl0IHRyYW5zYWN0aW9ucyBhbW91bnRzXHJcbiAgICovXHJcbiAgZ2V0IGJhbGFuY2VBbW91bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLnJlZHVjZSgoc3VtOiBudW1iZXIsIGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKSA9PiBzdW0gKyBiYW5rVHJhbnNhY3Rpb24uYmFsYW5jZUFtb3VudCwgMCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZXQgbGlzdCBvZiB0cmFuc2FjdGlvbnMgZm9yIHBhc3NlZCBtb250aFxyXG4gICAqIEBwYXJhbSBtb250aEluZGV4IE1vbnRoIG51bWJlciBmcm9tIDAgdG8gMTFcclxuICAgKi9cclxuICBnZXRUcmFuc2FjdGlvbnNCeU1vbnRoKG1vbnRoSW5kZXg6IE1vbnRoTnVtYmVyRW51bSk6IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24ge1xyXG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxyXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IGJhbmtUcmFuc2FjdGlvbi5kYXRlLmdldE1vbnRoKCkgPT09IG1vbnRoSW5kZXgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGJ5IHByb3ZpZGVkIGJhbmsgYWNjb3VudHNcclxuICAgKiBAcGFyYW0gYmFua0FjY291bnRzIGJ5IHdoaWNoIHRyYW5zYWN0aW9ucyBzaG91bGQgYmUgcmV0dXJuZWRcclxuICAgKi9cclxuICBnZXRCeUJhbmtBY2NvdW50cyhiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50W10pOiBCYW5rVHJhbnNhY3Rpb25bXSB7XHJcbiAgICBjb25zdCBiYW5rQWNjb3VudElkczogbnVtYmVyW10gPSBiYW5rQWNjb3VudHMubWFwKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpID0+IGJhbmtBY2NvdW50LmlkKTtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IGJhbmtBY2NvdW50SWRzLmluY2x1ZGVzKGJhbmtUcmFuc2FjdGlvbi5iYW5rQWNjb3VudC5pZCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0IGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGJ5IHByb3ZpZGVkIGlkcyBvZiBiYW5rIGFjY291bnRzXHJcbiAgICogQHBhcmFtIGlkcyBvZiBiYW5rIGFjY291bnRzXHJcbiAgICovXHJcbiAgZ2V0QnlCYW5rQWNjb3VudHNJZHMoaWRzOiBudW1iZXJbXSk6IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24ge1xyXG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxyXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IGlkcy5pbmNsdWRlcyhiYW5rVHJhbnNhY3Rpb24uYmFua0FjY291bnQuaWQpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmQgQmFuayBUcmFuc2FjdGlvbiBhdmFpbGFibGUgZm9yIHRyYW5zZmVyXHJcbiAgICovXHJcbiAgZmluZFRyYW5zZmVyKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKTogQmFua1RyYW5zYWN0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbmQoKGl0ZW06IEJhbmtUcmFuc2FjdGlvbik6IGJvb2xlYW4gPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbS5hbW91bnQgKyBiYW5rVHJhbnNhY3Rpb24uYW1vdW50ID09PSAwICYmXHJcbiAgICAgICAgTWF0aC5hYnMoYmFua1RyYW5zYWN0aW9uLmRhdGUuZ2V0VGltZSgpIC0gaXRlbS5kYXRlLmdldFRpbWUoKSkgPCBUUkFOU0FDVElPTl9UUkFOU0ZFUl9ERUxBWTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR3JvdXAgYmFuayB0cmFuc2FjdGlvbnMgYnkgdHJhbnNhY3Rpb24gaWQuXHJcbiAgICogRWFjaCBncm91cCBpcyBiYW5rIHRyYW5zYWN0aW9uIGNvbGxlY3Rpb24gYW5kIGNvbnRhaW5zIGJhbmsgdHJhbnNhY3Rpb25zIHJlbGF0ZWQgdG8gdHJhbnNhY3Rpb25zIHZpYSBhbGxvY2F0aW9uc1xyXG4gICAqL1xyXG4gIGdyb3VwQnlUcmFuc2FjdGlvbihhbGxvY2F0aW9uczogVHJhbnNhY3Rpb25BbGxvY2F0aW9uQ29sbGVjdGlvbik6IENvbGxlY3Rpb25EaWN0aW9uYXJ5PEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24+IHtcclxuICAgIC8vIEdyb3VwIGFsbG9jYXRpb25zIGJ5IHRyYW5zYWN0aW9uIGlkXHJcbiAgICBjb25zdCBhbGxvY2F0aW9uc0J5VHJhbnNhY3Rpb25zID0gbmV3IENvbGxlY3Rpb25EaWN0aW9uYXJ5KGFsbG9jYXRpb25zLCAndHJhbnNhY3Rpb24nKTtcclxuICAgIC8vIEluaXQgYW4gZW1wdHkgZGljdGlvbmFyeSB3ZSB3aWxsIGZpbGwgYmVsb3dcclxuICAgIGNvbnN0IGJhbmtUcmFuc2FjdGlvbnNCeVRyYW5zYWN0aW9uczogQ29sbGVjdGlvbkRpY3Rpb25hcnk8QmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbj4gPSBuZXcgQ29sbGVjdGlvbkRpY3Rpb25hcnkobmV3IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24oW10pKTtcclxuXHJcbiAgICAvLyBGaWxsIGRpY3Rpb25hcnkgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGF0IGFsbG9jYXRpb25zQnlUcmFuc2FjdGlvbnNcclxuICAgIGFsbG9jYXRpb25zQnlUcmFuc2FjdGlvbnMua2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZyk6IHZvaWQgPT4ge1xyXG4gICAgICBiYW5rVHJhbnNhY3Rpb25zQnlUcmFuc2FjdGlvbnMuYWRkKGtleSwgdGhpcy5nZXRCeUFsbG9jYXRpb25zKGFsbG9jYXRpb25zQnlUcmFuc2FjdGlvbnMuZ2V0KGtleSkpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBiYW5rVHJhbnNhY3Rpb25zQnlUcmFuc2FjdGlvbnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY29sbGVjdGlvbiBvZiBiYW5rIHRyYW5zYWN0aW9ucyByZWxhdGVkIHdpdGggcGFzc2VkIGFsbG9jYXRpb25zXHJcbiAgICovXHJcbiAgZ2V0QnlBbGxvY2F0aW9ucyhhbGxvY2F0aW9uczogVHJhbnNhY3Rpb25BbGxvY2F0aW9uQ29sbGVjdGlvbik6IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24ge1xyXG4gICAgcmV0dXJuIG5ldyBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uKFxyXG4gICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IGFsbG9jYXRpb25zLmhhc0JhbmtUcmFuc2FjdGlvbihiYW5rVHJhbnNhY3Rpb24pKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBhbGxvY2F0ZSBvcGVyYXRpb24gZm9yIGJhbmsgdHJhbnNhY3Rpb25zIHdpdGggYW1vdW50cyBlcXVhbCB0byBzYWxhcnlcclxuICAgKi9cclxuICBwcmVzZWxlY3RBbGxvY2F0ZU9wZXJhdGlvbkZvclNhbGFyeShzYWxhcnlJbmNvbWVTb3VyY2VzOiBJbmNvbWVTb3VyY2VbXSk6IHZvaWQge1xyXG4gICAgLy8gaW5jb21lU291cmNlLnNhbGFyeUZvcmVjYXN0c1swXSBiZWNhdXNlIGVhY2ggaW5jb21lIHNvdXJjZSBoYXMgb25seSBvbmUgZm9yZWNhc3QgZm9yIGN1cnJlbnQgZmluIHllYXJcclxuICAgIGNvbnN0IHNhbGFyeUFtb3VudHM6IG51bWJlcltdID0gc2FsYXJ5SW5jb21lU291cmNlcy5tYXAoKGluY29tZVNvdXJjZTogSW5jb21lU291cmNlKTogbnVtYmVyID0+IGluY29tZVNvdXJjZS5zYWxhcnlGb3JlY2FzdHNbMF0/Lm5ldFBheSB8fCAwKTtcclxuXHJcbiAgICB0aGlzLml0ZW1zLmZvckVhY2goKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKTogdm9pZCA9PiB7XHJcbiAgICAgIGlmIChzYWxhcnlBbW91bnRzLmluY2x1ZGVzKGJhbmtUcmFuc2FjdGlvbi5hbW91bnQpKSB7XHJcbiAgICAgICAgYmFua1RyYW5zYWN0aW9uLm9wZXJhdGlvbiA9IFRyYW5zYWN0aW9uT3BlcmF0aW9uRW51bS5BTExPQ0FURTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY29sbGVjdGlvbiBvZiB1bmFsbG9jYXRlZCBiYW5rVHJhbnNhY3Rpb25zXHJcbiAgICovXHJcbiAgZ2V0VW5hbGxvY2F0ZWRCYW5rVHJhbnNhY3Rpb25zKGFsbG9jYXRpb25zOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uKTogQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiB7XHJcbiAgICByZXR1cm4gbmV3IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24oXHJcbiAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbik6IGJvb2xlYW4gPT4gIWJhbmtUcmFuc2FjdGlvbi5pc0FsbG9jYXRlZChhbGxvY2F0aW9ucykpXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=