taxtank-core 0.8.4 → 0.9.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 (167) hide show
  1. package/bundles/taxtank-core.umd.js +180 -134
  2. package/bundles/taxtank-core.umd.js.map +1 -1
  3. package/esm2015/lib/collections/tax-summary/report-item.collection.js +141 -0
  4. package/esm2015/lib/db/Models/transaction-base.js +2 -1
  5. package/esm2015/lib/models/tax-summary/report-item-details.js +9 -0
  6. package/esm2015/lib/models/tax-summary/report-item.js +15 -0
  7. package/esm2015/lib/models/tax-summary/tax-summary-section.js +5 -5
  8. package/esm2015/lib/models/toast/toast-type.enum.js +8 -0
  9. package/esm2015/lib/models/toast/toast.js +9 -0
  10. package/esm2015/lib/services/http/address/address.service.js +39 -0
  11. package/esm2015/lib/services/http/bank/bank-account/bank-account.service.js +118 -0
  12. package/esm2015/lib/services/http/bank/bank-connection/bank-connection.service.js +52 -0
  13. package/esm2015/lib/services/http/bank/bank-transaction/bank-transaction.service.js +89 -0
  14. package/esm2015/lib/services/http/bank/bank.service.js +24 -0
  15. package/esm2015/lib/services/http/bank/basiq/basiq.service.js +94 -0
  16. package/esm2015/lib/services/http/chart-accounts/chart-accounts-depreciations/chart-accounts-depreciations.service.js +38 -0
  17. package/esm2015/lib/services/http/chart-accounts/chart-accounts.service.js +89 -0
  18. package/esm2015/lib/services/http/chat/chat.service.js +77 -0
  19. package/esm2015/lib/services/http/chat/message/message.service.js +65 -0
  20. package/esm2015/lib/services/http/chat/message-document/message-document.service.js +118 -0
  21. package/esm2015/lib/services/{depreciation/capital-project.service.js → http/depreciation/depreciation-capital-project/depreciation-capital-project.service.js} +7 -7
  22. package/esm2015/lib/services/http/depreciation/depreciation.service.js +146 -0
  23. package/esm2015/lib/services/http/document/document-folder/document-folder.service.js +84 -0
  24. package/esm2015/lib/services/{client → http/firm/client-invite}/client-invite.service.js +7 -7
  25. package/esm2015/lib/services/http/firm/client-movement/client-movement.service.js +98 -0
  26. package/esm2015/lib/services/http/firm/employee/employee.service.js +39 -0
  27. package/esm2015/lib/services/http/firm/employee-invite/employee-invite.service.js +53 -0
  28. package/esm2015/lib/services/http/firm/firm.service.js +79 -0
  29. package/esm2015/lib/services/http/firm/portfolio-report/client-portfolio-report.service.js +37 -0
  30. package/esm2015/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.js +90 -0
  31. package/esm2015/lib/services/http/income-source/income-source.service.js +109 -0
  32. package/esm2015/lib/services/http/income-source/salary-forecast/salary-forecast.service.js +90 -0
  33. package/esm2015/lib/services/http/income-source/sole-forecast/sole-forecast.service.js +87 -0
  34. package/esm2015/lib/services/http/loan/borrowing-expense/borrowing-expense.service.js +73 -0
  35. package/esm2015/lib/services/http/loan/loan.service.js +145 -0
  36. package/esm2015/lib/services/http/property/property-category/property-category.service.js +23 -0
  37. package/esm2015/lib/services/http/property/property-category-movement/property-category-movement.service.js +47 -0
  38. package/esm2015/lib/services/http/property/property-document/property-document.service.js +70 -0
  39. package/esm2015/lib/services/http/property/property-sale/property-sale.service.js +20 -0
  40. package/esm2015/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.js +21 -0
  41. package/esm2015/lib/services/http/property/property-share/property-share.service.js +115 -0
  42. package/esm2015/lib/services/http/property/property.service.js +126 -0
  43. package/esm2015/lib/services/http/rest/rest.service.js +190 -0
  44. package/esm2015/lib/services/http/service-notification/service-notification.service.js +65 -0
  45. package/esm2015/lib/services/http/subscription/subscription.service.js +157 -0
  46. package/esm2015/lib/services/http/tax-review/tax-review-history/tax-review-history.service.js +41 -0
  47. package/esm2015/lib/services/http/tax-review/tax-review.service.js +103 -0
  48. package/esm2015/lib/services/http/tax-summary/tax-summary.service.js +71 -0
  49. package/esm2015/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.js +85 -0
  50. package/esm2015/lib/services/http/transaction/transaction.service.js +319 -0
  51. package/esm2015/lib/services/http/user/occupation/occupation.service.js +45 -0
  52. package/esm2015/lib/services/http/user/user-event-setting/user-event-setting.service.js +59 -0
  53. package/esm2015/lib/services/http/user/user-event-type/user-event-type.service.js +29 -0
  54. package/esm2015/lib/services/http/user/user.service.js +124 -0
  55. package/esm2015/lib/services/http/vehicle/vehicle.service.js +237 -0
  56. package/esm2015/lib/services/property/equity-position-chart/equity-position-chart.service.js +45 -0
  57. package/esm2015/lib/services/toast/toast.service.js +26 -0
  58. package/esm2015/public-api.js +54 -51
  59. package/fesm2015/taxtank-core.js +98 -56
  60. package/fesm2015/taxtank-core.js.map +1 -1
  61. package/lib/collections/{tax-return-category-item.collection.d.ts → tax-summary/report-item.collection.d.ts} +5 -5
  62. package/lib/models/tax-summary/{tax-return-category-item-details.d.ts → report-item-details.d.ts} +2 -2
  63. package/lib/models/tax-summary/{tax-return-category-item.d.ts → report-item.d.ts} +4 -4
  64. package/lib/models/tax-summary/tax-summary-section.d.ts +2 -2
  65. package/lib/models/toast/toast-type.enum.d.ts +6 -0
  66. package/lib/models/toast/toast.d.ts +10 -0
  67. package/lib/services/{address → http/address}/address.service.d.ts +1 -1
  68. package/lib/services/{bank → http/bank/bank-account}/bank-account.service.d.ts +5 -5
  69. package/lib/services/{bank → http/bank/bank-connection}/bank-connection.service.d.ts +5 -5
  70. package/lib/services/{bank → http/bank/bank-transaction}/bank-transaction.service.d.ts +5 -5
  71. package/lib/services/{bank → http/bank}/bank.service.d.ts +4 -4
  72. package/lib/services/{bank → http/bank/basiq}/basiq.service.d.ts +7 -7
  73. package/lib/services/{chart-accounts → http/chart-accounts/chart-accounts-depreciations}/chart-accounts-depreciations.service.d.ts +4 -4
  74. package/lib/services/{chart-accounts → http/chart-accounts}/chart-accounts.service.d.ts +3 -3
  75. package/lib/services/{chat → http/chat}/chat.service.d.ts +7 -7
  76. package/lib/services/{chat → http/chat/message}/message.service.d.ts +7 -7
  77. package/lib/services/{chat → http/chat/message-document}/message-document.service.d.ts +3 -3
  78. package/lib/services/{depreciation/capital-project.service.d.ts → http/depreciation/depreciation-capital-project/depreciation-capital-project.service.d.ts} +4 -4
  79. package/lib/services/{depreciation → http/depreciation}/depreciation.service.d.ts +5 -5
  80. package/lib/services/{document → http/document/document-folder}/document-folder.service.d.ts +6 -6
  81. package/lib/services/{client → http/firm/client-invite}/client-invite.service.d.ts +4 -4
  82. package/lib/services/{client → http/firm/client-movement}/client-movement.service.d.ts +7 -7
  83. package/lib/services/{employee → http/firm/employee}/employee.service.d.ts +4 -4
  84. package/lib/services/{employee → http/firm/employee-invite}/employee-invite.service.d.ts +4 -4
  85. package/lib/services/{firm → http/firm}/firm.service.d.ts +2 -2
  86. package/lib/services/{client → http/firm/portfolio-report}/client-portfolio-report.service.d.ts +1 -1
  87. package/lib/services/{income-source → http/income-source/income-source-forecast}/income-source-forecast.service.d.ts +5 -5
  88. package/lib/services/{income-source → http/income-source}/income-source.service.d.ts +8 -8
  89. package/lib/services/{income-source → http/income-source/salary-forecast}/salary-forecast.service.d.ts +6 -6
  90. package/lib/services/{income-source → http/income-source/sole-forecast}/sole-forecast.service.d.ts +5 -5
  91. package/lib/services/{borrowing-expense → http/loan/borrowing-expense}/borrowing-expense.service.d.ts +2 -2
  92. package/lib/services/{loan → http/loan}/loan.service.d.ts +6 -6
  93. package/lib/services/{property → http/property}/property-category/property-category.service.d.ts +4 -4
  94. package/lib/services/{property → http/property/property-category-movement}/property-category-movement.service.d.ts +4 -4
  95. package/lib/services/{property → http/property}/property-document/property-document.service.d.ts +5 -5
  96. package/lib/services/http/property/property-sale/property-sale.service.d.ts +10 -0
  97. package/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.d.ts +11 -0
  98. package/lib/services/{property → http/property}/property-share/property-share.service.d.ts +5 -5
  99. package/lib/services/{property → http/property}/property.service.d.ts +5 -5
  100. package/lib/services/{base-rest.service.d.ts → http/rest/rest.service.d.ts} +4 -4
  101. package/lib/services/http/service-notification/service-notification.service.d.ts +31 -0
  102. package/lib/services/{subscription → http/subscription}/subscription.service.d.ts +6 -6
  103. package/lib/services/{tax-review → http/tax-review/tax-review-history}/tax-review-history.service.d.ts +5 -5
  104. package/lib/services/{tax-review → http/tax-review}/tax-review.service.d.ts +6 -6
  105. package/lib/services/{tax-summary → http/tax-summary}/tax-summary.service.d.ts +2 -2
  106. package/lib/services/{transaction → http/transaction/transaction-allocation}/transaction-allocation.service.d.ts +6 -6
  107. package/lib/services/{transaction → http/transaction}/transaction.service.d.ts +7 -7
  108. package/lib/services/{user → http/user/occupation}/occupation.service.d.ts +1 -1
  109. package/lib/services/{user-event → http/user/user-event-setting}/user-event-setting.service.d.ts +5 -5
  110. package/lib/services/{user-event → http/user/user-event-type}/user-event-type.service.d.ts +5 -5
  111. package/lib/services/{user → http/user}/user.service.d.ts +3 -3
  112. package/lib/services/{work/work-tank.service.d.ts → http/vehicle/vehicle.service.d.ts} +9 -8
  113. package/lib/services/property/{equity-position-chart.service.d.ts → equity-position-chart/equity-position-chart.service.d.ts} +1 -1
  114. package/lib/services/toast/toast.service.d.ts +13 -0
  115. package/package.json +1 -1
  116. package/public-api.d.ts +53 -50
  117. package/esm2015/lib/collections/tax-return-category-item.collection.js +0 -141
  118. package/esm2015/lib/models/tax-summary/tax-return-category-item-details.js +0 -9
  119. package/esm2015/lib/models/tax-summary/tax-return-category-item.js +0 -15
  120. package/esm2015/lib/services/address/address.service.js +0 -39
  121. package/esm2015/lib/services/bank/bank-account.service.js +0 -118
  122. package/esm2015/lib/services/bank/bank-connection.service.js +0 -52
  123. package/esm2015/lib/services/bank/bank-transaction.service.js +0 -89
  124. package/esm2015/lib/services/bank/bank.service.js +0 -24
  125. package/esm2015/lib/services/bank/basiq.service.js +0 -94
  126. package/esm2015/lib/services/base-rest.service.js +0 -190
  127. package/esm2015/lib/services/borrowing-expense/borrowing-expense.service.js +0 -73
  128. package/esm2015/lib/services/chart-accounts/chart-accounts-depreciations.service.js +0 -38
  129. package/esm2015/lib/services/chart-accounts/chart-accounts.service.js +0 -89
  130. package/esm2015/lib/services/chat/chat.service.js +0 -77
  131. package/esm2015/lib/services/chat/message-document.service.js +0 -118
  132. package/esm2015/lib/services/chat/message.service.js +0 -65
  133. package/esm2015/lib/services/client/client-movement.service.js +0 -98
  134. package/esm2015/lib/services/client/client-portfolio-report.service.js +0 -37
  135. package/esm2015/lib/services/depreciation/depreciation.service.js +0 -146
  136. package/esm2015/lib/services/document/document-folder.service.js +0 -84
  137. package/esm2015/lib/services/employee/employee-invite.service.js +0 -53
  138. package/esm2015/lib/services/employee/employee.service.js +0 -39
  139. package/esm2015/lib/services/firm/firm.service.js +0 -79
  140. package/esm2015/lib/services/income-source/income-source-forecast.service.js +0 -90
  141. package/esm2015/lib/services/income-source/income-source.service.js +0 -109
  142. package/esm2015/lib/services/income-source/salary-forecast.service.js +0 -90
  143. package/esm2015/lib/services/income-source/sole-forecast.service.js +0 -87
  144. package/esm2015/lib/services/loan/loan.service.js +0 -145
  145. package/esm2015/lib/services/notification/notification.service.js +0 -65
  146. package/esm2015/lib/services/property/equity-position-chart.service.js +0 -45
  147. package/esm2015/lib/services/property/property-category/property-category.service.js +0 -23
  148. package/esm2015/lib/services/property/property-category-movement.service.js +0 -47
  149. package/esm2015/lib/services/property/property-document/property-document.service.js +0 -70
  150. package/esm2015/lib/services/property/property-sale/property-sale.service.js +0 -20
  151. package/esm2015/lib/services/property/property-sale/tax-exemption/tax-exemption.service.js +0 -21
  152. package/esm2015/lib/services/property/property-share/property-share.service.js +0 -115
  153. package/esm2015/lib/services/property/property.service.js +0 -126
  154. package/esm2015/lib/services/subscription/subscription.service.js +0 -157
  155. package/esm2015/lib/services/tax-review/tax-review-history.service.js +0 -41
  156. package/esm2015/lib/services/tax-review/tax-review.service.js +0 -103
  157. package/esm2015/lib/services/tax-summary/tax-summary.service.js +0 -71
  158. package/esm2015/lib/services/transaction/transaction-allocation.service.js +0 -85
  159. package/esm2015/lib/services/transaction/transaction.service.js +0 -319
  160. package/esm2015/lib/services/user/occupation.service.js +0 -45
  161. package/esm2015/lib/services/user/user.service.js +0 -124
  162. package/esm2015/lib/services/user-event/user-event-setting.service.js +0 -59
  163. package/esm2015/lib/services/user-event/user-event-type.service.js +0 -29
  164. package/esm2015/lib/services/work/work-tank.service.js +0 -236
  165. package/lib/services/notification/notification.service.d.ts +0 -31
  166. package/lib/services/property/property-sale/property-sale.service.d.ts +0 -10
  167. package/lib/services/property/property-sale/tax-exemption/tax-exemption.service.d.ts +0 -11
@@ -0,0 +1,141 @@
1
+ import { Collection } from '../collection';
2
+ import { TaxReturnCategoryListEnum } from '../../db/Enums/tax-return-category-list.enum';
3
+ import { TaxReturnCategorySectionEnum } from '../../db/Enums/tax-return-category-section.enum';
4
+ /**
5
+ * collection for tax return category items
6
+ */
7
+ export class ReportItemCollection extends Collection {
8
+ /**
9
+ * Work income
10
+ */
11
+ get salary() {
12
+ var _a;
13
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.SALARY)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
14
+ }
15
+ /**
16
+ * Work expenses
17
+ */
18
+ get workExpenses() {
19
+ var _a;
20
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.WORK_EXPENSES)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
21
+ }
22
+ /**
23
+ * Property income
24
+ */
25
+ get rentalIncome() {
26
+ var _a;
27
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.GROSS_RENT)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
28
+ }
29
+ /**
30
+ * Property rental deductions
31
+ */
32
+ get rentalDeductions() {
33
+ var _a;
34
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.OTHER_RENTAL_DEDUCTIONS)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
35
+ }
36
+ /**
37
+ * Property expenses
38
+ */
39
+ get propertyExpenses() {
40
+ return this.rentalDeductions + this.borrowingExpenses;
41
+ }
42
+ /**
43
+ * Property interest
44
+ */
45
+ get interestDeductions() {
46
+ var _a;
47
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.INTEREST_DEDUCTIONS)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
48
+ }
49
+ /**
50
+ * Property capital works depreciations
51
+ */
52
+ get capitalWorks() {
53
+ var _a;
54
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.CAPITAL_WORKS)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
55
+ }
56
+ /**
57
+ * Property plant & equipment depreciations
58
+ */
59
+ get plantEquipment() {
60
+ var _a;
61
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.DEPRECIATION)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
62
+ }
63
+ /**
64
+ * Total property depreciaions
65
+ */
66
+ get propertyDepreciations() {
67
+ return this.capitalWorks + this.plantEquipment;
68
+ }
69
+ get partnershipsAndTrusts() {
70
+ var _a;
71
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.PARTNERSHIPS_TRUSTS)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
72
+ }
73
+ get pciAndSbeIncome() {
74
+ var _a;
75
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.PCI_SBE_INCOME)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
76
+ }
77
+ get capitalGains() {
78
+ var _a;
79
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.CAPITAL_GAINS)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
80
+ }
81
+ get foreignSourceIncome() {
82
+ var _a;
83
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.FOREIGN_SOURCE_INCOME)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
84
+ }
85
+ /**
86
+ * Other income
87
+ */
88
+ get otherIncome() {
89
+ var _a;
90
+ return (((_a = this.getByCategory(TaxReturnCategoryListEnum.OTHER_INCOME)) === null || _a === void 0 ? void 0 : _a.amount) || 0) +
91
+ this.partnershipsAndTrusts +
92
+ this.pciAndSbeIncome +
93
+ this.capitalGains +
94
+ this.foreignSourceIncome;
95
+ }
96
+ /**
97
+ * Other expenses
98
+ */
99
+ get otherDeductions() {
100
+ var _a;
101
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.OTHER_DEDUCTIONS)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
102
+ }
103
+ get taxInstalments() {
104
+ var _a;
105
+ return ((_a = this.getTaxCreditsCollection().getByCategory(TaxReturnCategoryListEnum.TAX_INSTALMENTS)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
106
+ }
107
+ get frankingCredits() {
108
+ var _a;
109
+ return ((_a = this.getTaxCreditsCollection().getByCategory(TaxReturnCategoryListEnum.FRANKING_CREDITS)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
110
+ }
111
+ get taxOffsets() {
112
+ var _a;
113
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.TAX_OFFSETS)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
114
+ }
115
+ get borrowingExpenses() {
116
+ var _a;
117
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.BORROWING_EXPENSES)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
118
+ }
119
+ get grossTaxPayable() {
120
+ var _a;
121
+ return ((_a = this.getByCategory(TaxReturnCategoryListEnum.GROSS_TAX_PAYABLE)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
122
+ }
123
+ /**
124
+ * taxWithheld by section (work or other)
125
+ */
126
+ getTaxWithheld(section = TaxReturnCategorySectionEnum.WORK_TANK) {
127
+ var _a;
128
+ return ((_a = this.getTaxCreditsCollection().getByCategory(TaxReturnCategoryListEnum.TAX_WITHHELD)) === null || _a === void 0 ? void 0 : _a.details.filter((details) => details.section === section).reduce((sum, details) => sum + details.amount, 0)) || 0;
129
+ }
130
+ getTaxCreditsCollection() {
131
+ var _a;
132
+ return new ReportItemCollection(((_a = this.getByCategory(TaxReturnCategoryListEnum.TAX_CREDITS)) === null || _a === void 0 ? void 0 : _a.items) || []);
133
+ }
134
+ getTotalAmountByIncomeSourceName(name) {
135
+ return this.items.reduce(((sum, item) => sum + item.getAmountByIncomeSourceName(name)), 0);
136
+ }
137
+ getByCategory(category) {
138
+ return this.items.find((item) => item.taxReturnCategory.id === category);
139
+ }
140
+ }
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWl0ZW0uY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9jb2xsZWN0aW9ucy90YXgtc3VtbWFyeS9yZXBvcnQtaXRlbS5jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFHL0Y7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsVUFBc0I7SUFDOUQ7O09BRUc7SUFDSCxJQUFJLE1BQU07O1FBQ1IsT0FBTyxDQUFBLE1BQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsMENBQUUsTUFBTSxLQUFJLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFlBQVk7O1FBQ2QsT0FBTyxDQUFBLE1BQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsMENBQUUsTUFBTSxLQUFJLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFlBQVk7O1FBQ2QsT0FBTyxDQUFBLE1BQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsMENBQUUsTUFBTSxLQUFJLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGdCQUFnQjs7UUFDbEIsT0FBTyxDQUFBLE1BQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyx1QkFBdUIsQ0FBQywwQ0FBRSxNQUFNLEtBQUksQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUks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QyxJQUFnQixFQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuLi9jb2xsZWN0aW9uJztcbmltcG9ydCB7IFJlcG9ydEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvdGF4LXN1bW1hcnkvcmVwb3J0LWl0ZW0nO1xuaW1wb3J0IHsgVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zL3RheC1yZXR1cm4tY2F0ZWdvcnktbGlzdC5lbnVtJztcbmltcG9ydCB7IFRheFJldHVybkNhdGVnb3J5U2VjdGlvbkVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy90YXgtcmV0dXJuLWNhdGVnb3J5LXNlY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRJdGVtRGV0YWlscyB9IGZyb20gJy4uLy4uL21vZGVscy90YXgtc3VtbWFyeS9yZXBvcnQtaXRlbS1kZXRhaWxzJztcblxuLyoqXG4gKiBjb2xsZWN0aW9uIGZvciB0YXggcmV0dXJuIGNhdGVnb3J5IGl0ZW1zXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXBvcnRJdGVtQ29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb248UmVwb3J0SXRlbT4ge1xuICAvKipcbiAgICogV29yayBpbmNvbWVcbiAgICovXG4gIGdldCBzYWxhcnkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCeUNhdGVnb3J5KFRheFJldHVybkNhdGVnb3J5TGlzdEVudW0uU0FMQVJZKT8uYW1vdW50IHx8IDA7XG4gIH1cblxuICAvKipcbiAgICogV29yayBleHBlbnNlc1xuICAgKi9cbiAgZ2V0IHdvcmtFeHBlbnNlcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5XT1JLX0VYUEVOU0VTKT8uYW1vdW50IHx8IDA7XG4gIH1cblxuICAvKipcbiAgICogUHJvcGVydHkgaW5jb21lXG4gICAqL1xuICBnZXQgcmVudGFsSW5jb21lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QnlDYXRlZ29yeShUYXhSZXR1cm5DYXRlZ29yeUxpc3RFbnVtLkdST1NTX1JFTlQpPy5hbW91bnQgfHwgMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9wZXJ0eSByZW50YWwgZGVkdWN0aW9uc1xuICAgKi9cbiAgZ2V0IHJlbnRhbERlZHVjdGlvbnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCeUNhdGVnb3J5KFRheFJldHVybkNhdGVnb3J5TGlzdEVudW0uT1RIRVJfUkVOVEFMX0RFRFVDVElPTlMpPy5hbW91bnQgfHwgMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9wZXJ0eSBleHBlbnNlc1xuICAgKi9cbiAgZ2V0IHByb3BlcnR5RXhwZW5zZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5yZW50YWxEZWR1Y3Rpb25zICsgdGhpcy5ib3Jyb3dpbmdFeHBlbnNlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9wZXJ0eSBpbnRlcmVzdFxuICAgKi9cbiAgZ2V0IGludGVyZXN0RGVkdWN0aW9ucygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5JTlRFUkVTVF9ERURVQ1RJT05TKT8uYW1vdW50IHx8IDA7XG4gIH1cblxuICAvKipcbiAgICogUHJvcGVydHkgY2FwaXRhbCB3b3JrcyBkZXByZWNpYXRpb25zXG4gICAqL1xuICBnZXQgY2FwaXRhbFdvcmtzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QnlDYXRlZ29yeShUYXhSZXR1cm5DYXRlZ29yeUxpc3RFbnVtLkNBUElUQUxfV09SS1MpPy5hbW91bnQgfHwgMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9wZXJ0eSBwbGFudCAmIGVxdWlwbWVudCBkZXByZWNpYXRpb25zXG4gICAqL1xuICBnZXQgcGxhbnRFcXVpcG1lbnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCeUNhdGVnb3J5KFRheFJldHVybkNhdGVnb3J5TGlzdEVudW0uREVQUkVDSUFUSU9OKT8uYW1vdW50IHx8IDA7XG4gIH1cblxuICAvKipcbiAgICogVG90YWwgcHJvcGVydHkgZGVwcmVjaWFpb25zXG4gICAqL1xuICBnZXQgcHJvcGVydHlEZXByZWNpYXRpb25zKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY2FwaXRhbFdvcmtzICsgdGhpcy5wbGFudEVxdWlwbWVudDtcbiAgfVxuXG4gIGdldCBwYXJ0bmVyc2hpcHNBbmRUcnVzdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCeUNhdGVnb3J5KFRheFJldHVybkNhdGVnb3J5TGlzdEVudW0uUEFSVE5FUlNISVBTX1RSVVNUUyk/LmFtb3VudCB8fCAwO1xuICB9XG5cbiAgZ2V0IHBjaUFuZFNiZUluY29tZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5QQ0lfU0JFX0lOQ09NRSk/LmFtb3VudCB8fCAwO1xuICB9XG5cbiAgZ2V0IGNhcGl0YWxHYWlucygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5DQVBJVEFMX0dBSU5TKT8uYW1vdW50IHx8IDA7XG4gIH1cblxuICBnZXQgZm9yZWlnblNvdXJjZUluY29tZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5GT1JFSUdOX1NPVVJDRV9JTkNPTUUpPy5hbW91bnQgfHwgMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdGhlciBpbmNvbWVcbiAgICovXG4gIGdldCBvdGhlckluY29tZSgpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5nZXRCeUNhdGVnb3J5KFRheFJldHVybkNhdGVnb3J5TGlzdEVudW0uT1RIRVJfSU5DT01FKT8uYW1vdW50IHx8IDApICtcbiAgICAgIHRoaXMucGFydG5lcnNoaXBzQW5kVHJ1c3RzICtcbiAgICAgIHRoaXMucGNpQW5kU2JlSW5jb21lICtcbiAgICAgIHRoaXMuY2FwaXRhbEdhaW5zICtcbiAgICAgIHRoaXMuZm9yZWlnblNvdXJjZUluY29tZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdGhlciBleHBlbnNlc1xuICAgKi9cbiAgZ2V0IG90aGVyRGVkdWN0aW9ucygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5PVEhFUl9ERURVQ1RJT05TKT8uYW1vdW50IHx8IDA7XG4gIH1cblxuICBnZXQgdGF4SW5zdGFsbWVudHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUYXhDcmVkaXRzQ29sbGVjdGlvbigpLmdldEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5UQVhfSU5TVEFMTUVOVFMpPy5hbW91bnQgfHwgMDtcbiAgfVxuXG4gIGdldCBmcmFua2luZ0NyZWRpdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUYXhDcmVkaXRzQ29sbGVjdGlvbigpLmdldEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5GUkFOS0lOR19DUkVESVRTKT8uYW1vdW50IHx8IDA7XG4gIH1cblxuICBnZXQgdGF4T2Zmc2V0cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5UQVhfT0ZGU0VUUyk/LmFtb3VudCB8fCAwO1xuICB9XG5cbiAgZ2V0IGJvcnJvd2luZ0V4cGVuc2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QnlDYXRlZ29yeShUYXhSZXR1cm5DYXRlZ29yeUxpc3RFbnVtLkJPUlJPV0lOR19FWFBFTlNFUyk/LmFtb3VudCB8fCAwO1xuICB9XG5cbiAgZ2V0IGdyb3NzVGF4UGF5YWJsZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5HUk9TU19UQVhfUEFZQUJMRSk/LmFtb3VudCB8fCAwO1xuICB9XG5cbiAgLyoqXG4gICAqIHRheFdpdGhoZWxkIGJ5IHNlY3Rpb24gKHdvcmsgb3Igb3RoZXIpXG4gICAqL1xuICBnZXRUYXhXaXRoaGVsZChzZWN0aW9uOiBUYXhSZXR1cm5DYXRlZ29yeVNlY3Rpb25FbnVtID0gVGF4UmV0dXJuQ2F0ZWdvcnlTZWN0aW9uRW51bS5XT1JLX1RBTkspOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldFRheENyZWRpdHNDb2xsZWN0aW9uKCkuZ2V0QnlDYXRlZ29yeShUYXhSZXR1cm5DYXRlZ29yeUxpc3RFbnVtLlRBWF9XSVRISEVMRCk/LmRldGFpbHNcbiAgICAgIC5maWx0ZXIoKGRldGFpbHM6IFJlcG9ydEl0ZW1EZXRhaWxzKSA9PiBkZXRhaWxzLnNlY3Rpb24gPT09IHNlY3Rpb24pXG4gICAgICAucmVkdWNlKChzdW06IG51bWJlciwgZGV0YWlsczogUmVwb3J0SXRlbURldGFpbHMpOiBudW1iZXIgPT4gc3VtICsgZGV0YWlscy5hbW91bnQsIDApIHx8IDA7XG4gIH1cblxuICBnZXRUYXhDcmVkaXRzQ29sbGVjdGlvbigpOiBSZXBvcnRJdGVtQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBSZXBvcnRJdGVtQ29sbGVjdGlvbih0aGlzLmdldEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5UQVhfQ1JFRElUUyk/Lml0ZW1zIHx8IFtdKTtcbiAgfVxuXG4gIGdldFRvdGFsQW1vdW50QnlJbmNvbWVTb3VyY2VOYW1lKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMucmVkdWNlKCgoc3VtOiBudW1iZXIsIGl0ZW06IFJlcG9ydEl0ZW0pOiBudW1iZXIgPT4gc3VtICsgaXRlbS5nZXRBbW91bnRCeUluY29tZVNvdXJjZU5hbWUobmFtZSkpLCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnlDYXRlZ29yeShjYXRlZ29yeTogVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bSk6IFJlcG9ydEl0ZW0ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbmQoKGl0ZW06IFJlcG9ydEl0ZW0pOiBib29sZWFuID0+IGl0ZW0udGF4UmV0dXJuQ2F0ZWdvcnkuaWQgPT09IGNhdGVnb3J5KTtcbiAgfVxufVxuIl19
@@ -11,10 +11,11 @@ export class TransactionBase {
11
11
  * Check if current tank is Work
12
12
  */
13
13
  isWorkTank() {
14
+ // @TODO remove this hack
14
15
  if (this.tankType) {
15
16
  return this.tankType === TankTypeEnum.WORK;
16
17
  }
17
18
  return CHART_ACCOUNTS_CATEGORIES.work.includes(this.chartAccounts.category);
18
19
  }
19
20
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9kYi9Nb2RlbHMvdHJhbnNhY3Rpb24tYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsTUFBTSxPQUFPLGVBQWU7SUFXMUI7O09BRUc7SUFDSCxjQUFjO1FBQ1osT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDO1NBQzVDO1FBQ0QsT0FBTyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tICcuL3Byb3BlcnR5L3Byb3BlcnR5JztcbmltcG9ydCB7IENoYXJ0QWNjb3VudHMgfSBmcm9tICcuL2NoYXJ0LWFjY291bnRzJztcbmltcG9ydCB7IENIQVJUX0FDQ09VTlRTX0NBVEVHT1JJRVMgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2hhcnQtYWNjb3VudHMvY2hhcnQtYWNjb3VudHMtY2F0ZWdvcmllcy5jb25zdCc7XG5pbXBvcnQgeyBUYW5rVHlwZUVudW0gfSBmcm9tICcuLi9FbnVtcy90YW5rLXR5cGUuZW51bSc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJhc2Uge1xuICBpZD86IG51bWJlcjtcbiAgYW1vdW50PzogbnVtYmVyO1xuICBwcm9wZXJ0eT86IFByb3BlcnR5O1xuICBkYXRlPzogRGF0ZTtcbiAgY2hhcnRBY2NvdW50cz86IENoYXJ0QWNjb3VudHM7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBmaWxlPzogRmlsZTtcbiAgY2xhaW1QZXJjZW50PzogbnVtYmVyO1xuICB0YW5rVHlwZTogVGFua1R5cGVFbnVtO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjdXJyZW50IHRhbmsgaXMgUHJvcGVydHlcbiAgICovXG4gIGlzUHJvcGVydHlUYW5rKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucHJvcGVydHk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY3VycmVudCB0YW5rIGlzIFdvcmtcbiAgICovXG4gIGlzV29ya1RhbmsoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMudGFua1R5cGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnRhbmtUeXBlID09PSBUYW5rVHlwZUVudW0uV09SSztcbiAgICB9XG4gICAgcmV0dXJuIENIQVJUX0FDQ09VTlRTX0NBVEVHT1JJRVMud29yay5pbmNsdWRlcyh0aGlzLmNoYXJ0QWNjb3VudHMuY2F0ZWdvcnkpO1xuICB9XG59XG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9kYi9Nb2RlbHMvdHJhbnNhY3Rpb24tYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsTUFBTSxPQUFPLGVBQWU7SUFXMUI7O09BRUc7SUFDSCxjQUFjO1FBQ1osT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ1IseUJBQXlCO1FBQ3pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLElBQUksQ0FBQztTQUM1QztRQUNELE9BQU8seUJBQXlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSAnLi9wcm9wZXJ0eS9wcm9wZXJ0eSc7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzIH0gZnJvbSAnLi9jaGFydC1hY2NvdW50cyc7XG5pbXBvcnQgeyBDSEFSVF9BQ0NPVU5UU19DQVRFR09SSUVTIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoYXJ0LWFjY291bnRzL2NoYXJ0LWFjY291bnRzLWNhdGVnb3JpZXMuY29uc3QnO1xuaW1wb3J0IHsgVGFua1R5cGVFbnVtIH0gZnJvbSAnLi4vRW51bXMvdGFuay10eXBlLmVudW0nO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CYXNlIHtcbiAgaWQ/OiBudW1iZXI7XG4gIGFtb3VudD86IG51bWJlcjtcbiAgcHJvcGVydHk/OiBQcm9wZXJ0eTtcbiAgZGF0ZT86IERhdGU7XG4gIGNoYXJ0QWNjb3VudHM/OiBDaGFydEFjY291bnRzO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZmlsZT86IEZpbGU7XG4gIGNsYWltUGVyY2VudD86IG51bWJlcjtcbiAgdGFua1R5cGU6IFRhbmtUeXBlRW51bTtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgY3VycmVudCB0YW5rIGlzIFByb3BlcnR5XG4gICAqL1xuICBpc1Byb3BlcnR5VGFuaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnByb3BlcnR5O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGN1cnJlbnQgdGFuayBpcyBXb3JrXG4gICAqL1xuICBpc1dvcmtUYW5rKCk6IGJvb2xlYW4ge1xuICAgIC8vIEBUT0RPIHJlbW92ZSB0aGlzIGhhY2tcbiAgICBpZiAodGhpcy50YW5rVHlwZSkge1xuICAgICAgcmV0dXJuIHRoaXMudGFua1R5cGUgPT09IFRhbmtUeXBlRW51bS5XT1JLO1xuICAgIH1cbiAgICByZXR1cm4gQ0hBUlRfQUNDT1VOVFNfQ0FURUdPUklFUy53b3JrLmluY2x1ZGVzKHRoaXMuY2hhcnRBY2NvdW50cy5jYXRlZ29yeSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Used in tax summary reports to show specific details relating to an amount in the report.
3
+ * See structure in ReportItem class.
4
+ * Example an amount of $550 for property income could be comprised of 2 different property amounts of $300 and $250.
5
+ * This is useful in providing drill-down information for the tax summary report.
6
+ */
7
+ export class ReportItemDetails {
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWl0ZW0tZGV0YWlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9tb2RlbHMvdGF4LXN1bW1hcnkvcmVwb3J0LWl0ZW0tZGV0YWlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7Q0FLN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYXhSZXR1cm5DYXRlZ29yeVNlY3Rpb25FbnVtIH0gZnJvbSAnLi4vLi4vZGIvRW51bXMvdGF4LXJldHVybi1jYXRlZ29yeS1zZWN0aW9uLmVudW0nO1xuXG4vKipcbiAqIFVzZWQgaW4gdGF4IHN1bW1hcnkgcmVwb3J0cyB0byBzaG93IHNwZWNpZmljIGRldGFpbHMgcmVsYXRpbmcgdG8gYW4gYW1vdW50IGluIHRoZSByZXBvcnQuXG4gKiBTZWUgc3RydWN0dXJlIGluIFJlcG9ydEl0ZW0gY2xhc3MuXG4gKiBFeGFtcGxlIGFuIGFtb3VudCBvZiAkNTUwIGZvciBwcm9wZXJ0eSBpbmNvbWUgY291bGQgYmUgY29tcHJpc2VkIG9mIDIgZGlmZmVyZW50IHByb3BlcnR5IGFtb3VudHMgb2YgJDMwMCBhbmQgJDI1MC5cbiAqIFRoaXMgaXMgdXNlZnVsIGluIHByb3ZpZGluZyBkcmlsbC1kb3duIGluZm9ybWF0aW9uIGZvciB0aGUgdGF4IHN1bW1hcnkgcmVwb3J0LlxuICovXG5leHBvcnQgY2xhc3MgUmVwb3J0SXRlbURldGFpbHMge1xuICBhbW91bnQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBudW1iZXI7XG4gIHNlY3Rpb246IFRheFJldHVybkNhdGVnb3J5U2VjdGlvbkVudW07XG59XG4iXX0=
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Used in tax summary reports to show amounts relating to a tax return category entity and details of what this
3
+ * amount is comprised of. Example here shows an amount of $951.96 and also details of what this amount is comprised of:
4
+ */
5
+ export class ReportItem {
6
+ /**
7
+ * Get amount for one income source
8
+ * @param name Name of income source for filter
9
+ */
10
+ getAmountByIncomeSourceName(name) {
11
+ var _a;
12
+ return ((_a = this.details.find((detail) => detail.name === name)) === null || _a === void 0 ? void 0 : _a.amount) || 0;
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL3RheC1zdW1tYXJ5L3JlcG9ydC1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBT3JCOzs7T0FHRztJQUNILDJCQUEyQixDQUFDLElBQVk7O1FBQ3RDLE9BQU8sQ0FBQSxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBeUIsRUFBVyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsMENBQUUsTUFBTSxLQUFJLENBQUMsQ0FBQztJQUN0RyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYXhSZXR1cm5DYXRlZ29yeSB9IGZyb20gJy4uLy4uL2RiL01vZGVscy90YXgtcmV0dXJuLWNhdGVnb3J5JztcbmltcG9ydCB7IFJlcG9ydEl0ZW1EZXRhaWxzIH0gZnJvbSAnLi9yZXBvcnQtaXRlbS1kZXRhaWxzJztcblxuLyoqXG4gKiBVc2VkIGluIHRheCBzdW1tYXJ5IHJlcG9ydHMgdG8gc2hvdyBhbW91bnRzIHJlbGF0aW5nIHRvIGEgdGF4IHJldHVybiBjYXRlZ29yeSBlbnRpdHkgYW5kIGRldGFpbHMgb2Ygd2hhdCB0aGlzXG4gKiBhbW91bnQgaXMgY29tcHJpc2VkIG9mLiBFeGFtcGxlIGhlcmUgc2hvd3MgYW4gYW1vdW50IG9mICQ5NTEuOTYgYW5kIGFsc28gZGV0YWlscyBvZiB3aGF0IHRoaXMgYW1vdW50IGlzIGNvbXByaXNlZCBvZjpcbiAqL1xuZXhwb3J0IGNsYXNzIFJlcG9ydEl0ZW0ge1xuICBhbW91bnQ6IG51bWJlcjtcbiAgZGV0YWlsczogUmVwb3J0SXRlbURldGFpbHNbXTtcbiAgaXRlbXM6IFJlcG9ydEl0ZW1bXTtcbiAgdGF4UmV0dXJuQ2F0ZWdvcnk6IFRheFJldHVybkNhdGVnb3J5O1xuICB0YXhXaXRoaGVsZDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgYW1vdW50IGZvciBvbmUgaW5jb21lIHNvdXJjZVxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIGluY29tZSBzb3VyY2UgZm9yIGZpbHRlclxuICAgKi9cbiAgZ2V0QW1vdW50QnlJbmNvbWVTb3VyY2VOYW1lKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZGV0YWlscy5maW5kKChkZXRhaWw6IFJlcG9ydEl0ZW1EZXRhaWxzKTogYm9vbGVhbiA9PiBkZXRhaWwubmFtZSA9PT0gbmFtZSk/LmFtb3VudCB8fCAwO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { TaxSummarySectionEnum } from '../../db/Enums/tax-summary-section.enum';
3
- import { TaxReturnCategoryItem } from './tax-return-category-item';
4
- import { TaxReturnCategoryItemCollection } from '../../collections/tax-return-category-item.collection';
3
+ import { ReportItem } from './report-item';
4
+ import { ReportItemCollection } from '../../collections/tax-summary/report-item.collection';
5
5
  import { Transform, Type } from 'class-transformer';
6
6
  /**
7
7
  * Base class for each sections of Tax Summary report, contains common properties/methods
@@ -10,8 +10,8 @@ import { Transform, Type } from 'class-transformer';
10
10
  export class TaxSummarySection {
11
11
  }
12
12
  __decorate([
13
- Type(() => TaxReturnCategoryItem),
14
- Transform(({ value }) => new TaxReturnCategoryItemCollection(value))
13
+ Type(() => ReportItem),
14
+ Transform(({ value }) => new ReportItemCollection(value))
15
15
  ], TaxSummarySection.prototype, "items", void 0);
16
16
  __decorate([
17
17
  Transform(({ obj }) => {
@@ -27,4 +27,4 @@ __decorate([
27
27
  }
28
28
  })
29
29
  ], TaxSummarySection.prototype, "id", void 0);
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LXN1bW1hcnktc2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9tb2RlbHMvdGF4LXN1bW1hcnkvdGF4LXN1bW1hcnktc2VjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDeEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVwRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0NBc0I3QjtBQWhCQztJQUZDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztJQUNqQyxTQUFTLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLCtCQUErQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dEQUM1QjtBQWV2QztJQVpDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBRTtRQUNuQixRQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUU7WUFDbkIsS0FBSyxxQkFBcUIsQ0FBQyxTQUFTO2dCQUNsQyxPQUFPLG9CQUFvQixDQUFDO1lBQzlCLEtBQUsscUJBQXFCLENBQUMsYUFBYTtnQkFDdEMsT0FBTyx3QkFBd0IsQ0FBQztZQUNsQyxLQUFLLHFCQUFxQixDQUFDLFlBQVk7Z0JBQ3JDLE9BQU8sdUJBQXVCLENBQUM7WUFDakM7Z0JBQ0UsT0FBTyxpQkFBaUIsQ0FBQztTQUM1QjtJQUNILENBQUMsQ0FBQzs2Q0FDVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRheFN1bW1hcnlTZWN0aW9uRW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zL3RheC1zdW1tYXJ5LXNlY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBUYXhSZXR1cm5DYXRlZ29yeUl0ZW0gfSBmcm9tICcuL3RheC1yZXR1cm4tY2F0ZWdvcnktaXRlbSc7XG5pbXBvcnQgeyBUYXhSZXR1cm5DYXRlZ29yeUl0ZW1Db2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbnMvdGF4LXJldHVybi1jYXRlZ29yeS1pdGVtLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNmb3JtLCBUeXBlIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGVhY2ggc2VjdGlvbnMgb2YgVGF4IFN1bW1hcnkgcmVwb3J0LCBjb250YWlucyBjb21tb24gcHJvcGVydGllcy9tZXRob2RzXG4gKiBTZWUgYWxzbyBUYXhTdW1tYXJ5IG1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXhTdW1tYXJ5U2VjdGlvbiB7XG4gIHNlY3Rpb246IFRheFN1bW1hcnlTZWN0aW9uRW51bTtcbiAgbmV0QW1vdW50OiBudW1iZXI7XG5cbiAgQFR5cGUoKCkgPT4gVGF4UmV0dXJuQ2F0ZWdvcnlJdGVtKVxuICBAVHJhbnNmb3JtKCh7dmFsdWV9KSA9PiBuZXcgVGF4UmV0dXJuQ2F0ZWdvcnlJdGVtQ29sbGVjdGlvbih2YWx1ZSkpXG4gIGl0ZW1zOiBUYXhSZXR1cm5DYXRlZ29yeUl0ZW1Db2xsZWN0aW9uO1xuXG4gIC8vIGlkIHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBIVE1MIElkXG4gIEBUcmFuc2Zvcm0oKHtvYmp9KSA9PiB7XG4gICAgc3dpdGNoIChvYmouc2VjdGlvbikge1xuICAgICAgY2FzZSBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uV09SS19UQU5LOlxuICAgICAgICByZXR1cm4gJ3RheFN1bW1hcnlXb3JrVGFuayc7XG4gICAgICBjYXNlIFRheFN1bW1hcnlTZWN0aW9uRW51bS5QUk9QRVJUWV9UQU5LOlxuICAgICAgICByZXR1cm4gJ3RheFN1bW1hcnlQcm9wZXJ0eVRhbmsnO1xuICAgICAgY2FzZSBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uT1RIRVJfSU5DT01FOlxuICAgICAgICByZXR1cm4gJ3RheFN1bW1hcnlPdGhlckluY29tZSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3RheFN1bW1hcnlUb3RhbCc7XG4gICAgfVxuICB9KVxuICBpZD86IHN0cmluZztcbn1cbiJdfQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LXN1bW1hcnktc2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9tb2RlbHMvdGF4LXN1bW1hcnkvdGF4LXN1bW1hcnktc2VjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7Q0FzQjdCO0FBaEJDO0lBRkMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUN0QixTQUFTLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dEQUM1QjtBQWU1QjtJQVpDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBRTtRQUNuQixRQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUU7WUFDbkIsS0FBSyxxQkFBcUIsQ0FBQyxTQUFTO2dCQUNsQyxPQUFPLG9CQUFvQixDQUFDO1lBQzlCLEtBQUsscUJBQXFCLENBQUMsYUFBYTtnQkFDdEMsT0FBTyx3QkFBd0IsQ0FBQztZQUNsQyxLQUFLLHFCQUFxQixDQUFDLFlBQVk7Z0JBQ3JDLE9BQU8sdUJBQXVCLENBQUM7WUFDakM7Z0JBQ0UsT0FBTyxpQkFBaUIsQ0FBQztTQUM1QjtJQUNILENBQUMsQ0FBQzs2Q0FDVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRheFN1bW1hcnlTZWN0aW9uRW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zL3RheC1zdW1tYXJ5LXNlY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRJdGVtIH0gZnJvbSAnLi9yZXBvcnQtaXRlbSc7XG5pbXBvcnQgeyBSZXBvcnRJdGVtQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL3RheC1zdW1tYXJ5L3JlcG9ydC1pdGVtLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNmb3JtLCBUeXBlIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGVhY2ggc2VjdGlvbnMgb2YgVGF4IFN1bW1hcnkgcmVwb3J0LCBjb250YWlucyBjb21tb24gcHJvcGVydGllcy9tZXRob2RzXG4gKiBTZWUgYWxzbyBUYXhTdW1tYXJ5IG1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXhTdW1tYXJ5U2VjdGlvbiB7XG4gIHNlY3Rpb246IFRheFN1bW1hcnlTZWN0aW9uRW51bTtcbiAgbmV0QW1vdW50OiBudW1iZXI7XG5cbiAgQFR5cGUoKCkgPT4gUmVwb3J0SXRlbSlcbiAgQFRyYW5zZm9ybSgoe3ZhbHVlfSkgPT4gbmV3IFJlcG9ydEl0ZW1Db2xsZWN0aW9uKHZhbHVlKSlcbiAgaXRlbXM6IFJlcG9ydEl0ZW1Db2xsZWN0aW9uO1xuXG4gIC8vIGlkIHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBIVE1MIElkXG4gIEBUcmFuc2Zvcm0oKHtvYmp9KSA9PiB7XG4gICAgc3dpdGNoIChvYmouc2VjdGlvbikge1xuICAgICAgY2FzZSBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uV09SS19UQU5LOlxuICAgICAgICByZXR1cm4gJ3RheFN1bW1hcnlXb3JrVGFuayc7XG4gICAgICBjYXNlIFRheFN1bW1hcnlTZWN0aW9uRW51bS5QUk9QRVJUWV9UQU5LOlxuICAgICAgICByZXR1cm4gJ3RheFN1bW1hcnlQcm9wZXJ0eVRhbmsnO1xuICAgICAgY2FzZSBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uT1RIRVJfSU5DT01FOlxuICAgICAgICByZXR1cm4gJ3RheFN1bW1hcnlPdGhlckluY29tZSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3RheFN1bW1hcnlUb3RhbCc7XG4gICAgfVxuICB9KVxuICBpZD86IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ export var ToastTypeEnum;
2
+ (function (ToastTypeEnum) {
3
+ ToastTypeEnum[ToastTypeEnum["INFO"] = 0] = "INFO";
4
+ ToastTypeEnum[ToastTypeEnum["SUCCESS"] = 1] = "SUCCESS";
5
+ ToastTypeEnum[ToastTypeEnum["WARNING"] = 2] = "WARNING";
6
+ ToastTypeEnum[ToastTypeEnum["ERROR"] = 3] = "ERROR";
7
+ })(ToastTypeEnum || (ToastTypeEnum = {}));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QtdHlwZS5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL21vZGVscy90b2FzdC90b2FzdC10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUN2QixpREFBSSxDQUFBO0lBQ0osdURBQU8sQ0FBQTtJQUNQLHVEQUFPLENBQUE7SUFDUCxtREFBSyxDQUFBO0FBQ1AsQ0FBQyxFQUxXLGFBQWEsS0FBYixhQUFhLFFBS3hCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gVG9hc3RUeXBlRW51bSB7XG4gIElORk8sXG4gIFNVQ0NFU1MsXG4gIFdBUk5JTkcsXG4gIEVSUk9SXG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Common toast message class
3
+ */
4
+ export class Toast {
5
+ constructor() {
6
+ this.duration = 3000;
7
+ }
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL3RvYXN0L3RvYXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLEtBQUs7SUFBbEI7UUFJRSxhQUFRLEdBQVcsSUFBSSxDQUFDO0lBQzFCLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRvYXN0VHlwZUVudW0gfSBmcm9tICcuL3RvYXN0LXR5cGUuZW51bSc7XG5cbi8qKlxuICogQ29tbW9uIHRvYXN0IG1lc3NhZ2UgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIFRvYXN0IHtcbiAgdHlwZTogVG9hc3RUeXBlRW51bTtcbiAgdGl0bGU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBkdXJhdGlvbjogbnVtYmVyID0gMzAwMDtcbn1cbiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { ReplaySubject } from 'rxjs';
3
+ import { Country } from '../../../models/address/country';
4
+ import { map } from 'rxjs/operators';
5
+ import { plainToClass } from 'class-transformer';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common/http";
8
+ export class AddressService {
9
+ constructor(http, environment) {
10
+ this.http = http;
11
+ this.environment = environment;
12
+ this.countriesSubject = new ReplaySubject(1);
13
+ }
14
+ getCountries() {
15
+ if (!this._countries) {
16
+ this.http.get(`${this.environment.apiV2}/countries`)
17
+ .pipe(map((response) => {
18
+ return response['hydra:member'].map((item) => plainToClass(Country, item));
19
+ }))
20
+ .subscribe((countries) => {
21
+ this._countries = countries;
22
+ this.countriesSubject.next(countries);
23
+ });
24
+ }
25
+ return this.countriesSubject.asObservable();
26
+ }
27
+ }
28
+ AddressService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: AddressService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
29
+ AddressService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: AddressService, providedIn: 'root' });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: AddressService, decorators: [{
31
+ type: Injectable,
32
+ args: [{
33
+ providedIn: 'root'
34
+ }]
35
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: undefined, decorators: [{
36
+ type: Inject,
37
+ args: ['environment']
38
+ }] }]; } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvYWRkcmVzcy9hZGRyZXNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBS2pELE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQ1UsSUFBZ0IsRUFDTyxXQUFnQjtRQUR2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ08sZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFKakQscUJBQWdCLEdBQTZCLElBQUksYUFBYSxDQUFZLENBQUMsQ0FBQyxDQUFDO0lBS3pFLENBQUM7SUFFTCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssWUFBWSxDQUFDO2lCQUNqRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxFQUFFO2dCQUN2QixPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNyRixDQUFDLENBQUMsQ0FDSDtpQkFDQSxTQUFTLENBQUMsQ0FBQyxTQUFvQixFQUFFLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO2dCQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDOzs0R0F4QlUsY0FBYyw0Q0FNZixhQUFhO2dIQU5aLGNBQWMsY0FGYixNQUFNOzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFPSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb3VudHJ5IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2FkZHJlc3MvY291bnRyeSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFkZHJlc3NTZXJ2aWNlIHtcbiAgX2NvdW50cmllczogQ291bnRyeVtdO1xuICBjb3VudHJpZXNTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PENvdW50cnlbXT4gPSBuZXcgUmVwbGF5U3ViamVjdDxDb3VudHJ5W10+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQ6IGFueVxuICApIHsgfVxuXG4gIGdldENvdW50cmllcygpOiBPYnNlcnZhYmxlPENvdW50cnlbXT4ge1xuICAgIGlmICghdGhpcy5fY291bnRyaWVzKSB7XG4gICAgICB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L2NvdW50cmllc2ApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgocmVzcG9uc2U6IG9iamVjdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlWydoeWRyYTptZW1iZXInXS5tYXAoKGl0ZW06IG9iamVjdCkgPT4gcGxhaW5Ub0NsYXNzKENvdW50cnksIGl0ZW0pKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGNvdW50cmllczogQ291bnRyeVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5fY291bnRyaWVzID0gY291bnRyaWVzO1xuICAgICAgICAgIHRoaXMuY291bnRyaWVzU3ViamVjdC5uZXh0KGNvdW50cmllcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNvdW50cmllc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,118 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import _ from 'lodash';
4
+ import { replace } from '../../../../functions/array';
5
+ import { plainToClass } from 'class-transformer';
6
+ import { RestService } from '../../rest/rest.service';
7
+ import { BankAccount } from '../../../../models/bank/bank-account';
8
+ import { AppEvent } from '../../../../models/event/app-event';
9
+ import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common/http";
12
+ import * as i2 from "../../../event/event-dispatcher.service";
13
+ /**
14
+ * Service that handling user's bank accounts logic
15
+ */
16
+ export class BankAccountService extends RestService {
17
+ constructor(http, eventDispatcherService, environment) {
18
+ super(http, eventDispatcherService, environment);
19
+ this.http = http;
20
+ this.eventDispatcherService = eventDispatcherService;
21
+ this.environment = environment;
22
+ // api url parameter for bank accounts
23
+ this.url = 'bank-accounts';
24
+ this.modelClass = BankAccount;
25
+ this.listenEvents();
26
+ }
27
+ /**
28
+ * Listen system notifications and update cache when got basiq notification received
29
+ */
30
+ listenEvents() {
31
+ this.listenToEventDispatcherChanges();
32
+ }
33
+ /**
34
+ * Created manual bank account
35
+ * @param bankAccounts
36
+ * @param queryParams
37
+ */
38
+ addBatch(bankAccounts, queryParams = {}) {
39
+ return this.http.post(`${this.environment.apiV2}/${this.url}`, bankAccounts)
40
+ .pipe(map((newBankAccountsBase) => {
41
+ const newBankAccounts = newBankAccountsBase.map((bankAccountBase) => plainToClass(BankAccount, bankAccountBase));
42
+ this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_ACCOUNT_CREATED, newBankAccounts));
43
+ const tempCache = _.cloneDeep(this.cache);
44
+ tempCache.push(...newBankAccounts);
45
+ this.cache = tempCache;
46
+ this.updateCache();
47
+ return newBankAccounts;
48
+ }));
49
+ }
50
+ /**
51
+ * Update bank account and fire event
52
+ */
53
+ update(bankAccount) {
54
+ return super.update(bankAccount).pipe(map((updatedBankAccount) => {
55
+ this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_ACCOUNT_UPDATED, updatedBankAccount));
56
+ return updatedBankAccount;
57
+ }));
58
+ }
59
+ /**
60
+ * Update bank account opening balance
61
+ * @param bankAccount Bank account for balance updating
62
+ */
63
+ updateOpeningBalance(bankAccount) {
64
+ return this.http.put(`${this.environment.apiV2}/${this.url}/${bankAccount.id}/opening-balances/${bankAccount.getCurrentYearBalance().id}`, bankAccount.getCurrentYearBalance())
65
+ .pipe(map((response) => {
66
+ const tempCache = _.cloneDeep(this.cache);
67
+ replace(tempCache[tempCache.findIndex((ba) => ba.id === bankAccount.id)].balances, response);
68
+ this.cache = tempCache;
69
+ this.updateCache();
70
+ }));
71
+ }
72
+ /**
73
+ * Update bank account current balance
74
+ */
75
+ updateCurrentBalance(bankAccount) {
76
+ return this.http.put(`${this.environment.apiV2}/${this.url}/${bankAccount.id}/balance`, bankAccount)
77
+ .pipe(map((response) => {
78
+ const updatedBankAccount = plainToClass(BankAccount, response);
79
+ replace(this.cache, updatedBankAccount);
80
+ this.updateCache();
81
+ this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_ACCOUNT_UPDATED, updatedBankAccount));
82
+ return updatedBankAccount;
83
+ }));
84
+ }
85
+ getOwn() {
86
+ return this.get()
87
+ .pipe(map((bankAccounts) => {
88
+ return bankAccounts.filter((bankAccount) => bankAccount.isOwner(+localStorage.getItem('userId')));
89
+ }));
90
+ }
91
+ /**
92
+ * Listen to EventDispatcherService events
93
+ */
94
+ listenToEventDispatcherChanges() {
95
+ this.eventDispatcherService.on([
96
+ AppEventTypeEnum.PROPERTY_SHARE_UPDATED,
97
+ AppEventTypeEnum.LOAN_PAYOUT_UPDATED,
98
+ AppEventTypeEnum.BANK_CONNECTION_ADDED
99
+ ]).subscribe(() => {
100
+ this.fetch().subscribe((bankAccounts) => {
101
+ this.cache = bankAccounts;
102
+ this.updateCache();
103
+ });
104
+ });
105
+ }
106
+ }
107
+ BankAccountService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankAccountService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
108
+ BankAccountService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankAccountService, providedIn: 'root' });
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankAccountService, decorators: [{
110
+ type: Injectable,
111
+ args: [{
112
+ providedIn: 'root'
113
+ }]
114
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
115
+ type: Inject,
116
+ args: ['environment']
117
+ }] }]; } });
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1hY2NvdW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9iYW5rL2JhbmstYWNjb3VudC9iYW5rLWFjY291bnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUlqRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUVqRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDNUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOENBQThDLENBQUM7Ozs7QUFFOUU7O0dBRUc7QUFJSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsV0FBeUM7SUFLL0UsWUFDWSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0I7UUFFakQsS0FBSyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUp2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFQbkQsc0NBQXNDO1FBQ3RDLFFBQUcsR0FBVyxlQUFlLENBQUM7UUFDOUIsZUFBVSxHQUFHLFdBQVcsQ0FBQztRQVF2QixJQUFJLENBQUMsWUFB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Q0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0hBL0dVLGtCQUFrQixrRkFRbkIsYUFBYTtvSEFSWixrQkFBa0IsY0FGakIsTUFBTTs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFTSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0JhbmtBY2NvdW50IGFzIEJhbmtBY2NvdW50QmFzZX0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzL2JhbmstYWNjb3VudCc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7cmVwbGFjZX0gZnJvbSAnLi4vLi4vLi4vLi4vZnVuY3Rpb25zL2FycmF5JztcbmltcG9ydCB7cGxhaW5Ub0NsYXNzfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQge1Jlc3RTZXJ2aWNlfSBmcm9tICcuLi8uLi9yZXN0L3Jlc3Quc2VydmljZSc7XG5pbXBvcnQge0JhbmtBY2NvdW50fSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvYmFuay9iYW5rLWFjY291bnQnO1xuaW1wb3J0IHtFdmVudERpc3BhdGNoZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9ldmVudC9ldmVudC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtBcHBFdmVudH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQge0FwcEV2ZW50VHlwZUVudW19IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQtdHlwZS5lbnVtJztcblxuLyoqXG4gKiBTZXJ2aWNlIHRoYXQgaGFuZGxpbmcgdXNlcidzIGJhbmsgYWNjb3VudHMgbG9naWNcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFua0FjY291bnRTZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8QmFua0FjY291bnRCYXNlLCBCYW5rQWNjb3VudD4ge1xuICAvLyBhcGkgdXJsIHBhcmFtZXRlciBmb3IgYmFuayBhY2NvdW50c1xuICB1cmw6IHN0cmluZyA9ICdiYW5rLWFjY291bnRzJztcbiAgbW9kZWxDbGFzcyA9IEJhbmtBY2NvdW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByb3RlY3RlZCBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJvdGVjdGVkIGVudmlyb25tZW50OiBhbnlcbiAgKSB7XG4gICAgc3VwZXIoaHR0cCwgZXZlbnREaXNwYXRjaGVyU2VydmljZSwgZW52aXJvbm1lbnQpO1xuICAgIHRoaXMubGlzdGVuRXZlbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHN5c3RlbSBub3RpZmljYXRpb25zIGFuZCB1cGRhdGUgY2FjaGUgd2hlbiBnb3QgYmFzaXEgbm90aWZpY2F0aW9uIHJlY2VpdmVkXG4gICAqL1xuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5Ub0V2ZW50RGlzcGF0Y2hlckNoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVkIG1hbnVhbCBiYW5rIGFjY291bnRcbiAgICogQHBhcmFtIGJhbmtBY2NvdW50c1xuICAgKiBAcGFyYW0gcXVlcnlQYXJhbXNcbiAgICovXG4gIGFkZEJhdGNoKGJhbmtBY2NvdW50czogQmFua0FjY291bnRbXSwgcXVlcnlQYXJhbXM6IG9iamVjdCA9IHt9KTogT2JzZXJ2YWJsZTxCYW5rQWNjb3VudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9YCwgYmFua0FjY291bnRzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgobmV3QmFua0FjY291bnRzQmFzZTogQmFua0FjY291bnRCYXNlW10pID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdCYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50W10gPSBuZXdCYW5rQWNjb3VudHNCYXNlLm1hcCgoYmFua0FjY291bnRCYXNlOiBCYW5rQWNjb3VudEJhc2UpOiBCYW5rQWNjb3VudCA9PiBwbGFpblRvQ2xhc3MoQmFua0FjY291bnQsIGJhbmtBY2NvdW50QmFzZSkpO1xuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5CQU5LX0FDQ09VTlRfQ1JFQVRFRCwgbmV3QmFua0FjY291bnRzKSk7XG4gICAgICAgICAgY29uc3QgdGVtcENhY2hlOiBCYW5rQWNjb3VudFtdID0gXy5jbG9uZURlZXAodGhpcy5jYWNoZSk7XG4gICAgICAgICAgdGVtcENhY2hlLnB1c2goLi4ubmV3QmFua0FjY291bnRzKTtcbiAgICAgICAgICB0aGlzLmNhY2hlID0gdGVtcENhY2hlO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcbiAgICAgICAgICByZXR1cm4gbmV3QmFua0FjY291bnRzO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYmFuayBhY2NvdW50IGFuZCBmaXJlIGV2ZW50XG4gICAqL1xuICB1cGRhdGUoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KTogT2JzZXJ2YWJsZTxCYW5rQWNjb3VudD4ge1xuICAgIHJldHVybiBzdXBlci51cGRhdGUoYmFua0FjY291bnQpLnBpcGUoXG4gICAgICBtYXAoKHVwZGF0ZWRCYW5rQWNjb3VudDogQmFua0FjY291bnQpID0+IHtcbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkJBTktfQUNDT1VOVF9VUERBVEVELCB1cGRhdGVkQmFua0FjY291bnQpKTtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZWRCYW5rQWNjb3VudDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYmFuayBhY2NvdW50IG9wZW5pbmcgYmFsYW5jZVxuICAgKiBAcGFyYW0gYmFua0FjY291bnQgQmFuayBhY2NvdW50IGZvciBiYWxhbmNlIHVwZGF0aW5nXG4gICAqL1xuICB1cGRhdGVPcGVuaW5nQmFsYW5jZShiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9LyR7YmFua0FjY291bnQuaWR9L29wZW5pbmctYmFsYW5jZXMvJHtiYW5rQWNjb3VudC5nZXRDdXJyZW50WWVhckJhbGFuY2UoKS5pZH1gLCBiYW5rQWNjb3VudC5nZXRDdXJyZW50WWVhckJhbGFuY2UoKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBvYmplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCB0ZW1wQ2FjaGU6IEJhbmtBY2NvdW50W10gPSBfLmNsb25lRGVlcCh0aGlzLmNhY2hlKTtcblxuICAgICAgICAgIHJlcGxhY2UodGVtcENhY2hlW3RlbXBDYWNoZS5maW5kSW5kZXgoKGJhOiBCYW5rQWNjb3VudCkgPT4gYmEuaWQgPT09IGJhbmtBY2NvdW50LmlkKV0uYmFsYW5jZXMsIHJlc3BvbnNlKTtcbiAgICAgICAgICB0aGlzLmNhY2hlID0gdGVtcENhY2hlO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGJhbmsgYWNjb3VudCBjdXJyZW50IGJhbGFuY2VcbiAgICovXG4gIHVwZGF0ZUN1cnJlbnRCYWxhbmNlKGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCk6IE9ic2VydmFibGU8QmFua0FjY291bnQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfS8ke2JhbmtBY2NvdW50LmlkfS9iYWxhbmNlYCwgYmFua0FjY291bnQpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogb2JqZWN0KSA9PiB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZEJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCA9IHBsYWluVG9DbGFzcyhCYW5rQWNjb3VudCwgcmVzcG9uc2UpO1xuXG4gICAgICAgICAgcmVwbGFjZSh0aGlzLmNhY2hlLCB1cGRhdGVkQmFua0FjY291bnQpO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcblxuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5CQU5LX0FDQ09VTlRfVVBEQVRFRCwgdXBkYXRlZEJhbmtBY2NvdW50KSk7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWRCYW5rQWNjb3VudDtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBnZXRPd24oKTogT2JzZXJ2YWJsZTxCYW5rQWNjb3VudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGJhbmtBY2NvdW50czogQmFua0FjY291bnRbXSkgPT4ge1xuICAgICAgICAgIHJldHVybiBiYW5rQWNjb3VudHMuZmlsdGVyKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpID0+IGJhbmtBY2NvdW50LmlzT3duZXIoK2xvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VySWQnKSkpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRXZlbnREaXNwYXRjaGVyU2VydmljZSBldmVudHNcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVG9FdmVudERpc3BhdGNoZXJDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihbXG4gICAgICBBcHBFdmVudFR5cGVFbnVtLlBST1BFUlRZX1NIQVJFX1VQREFURUQsXG4gICAgICBBcHBFdmVudFR5cGVFbnVtLkxPQU5fUEFZT1VUX1VQREFURUQsXG4gICAgICBBcHBFdmVudFR5cGVFbnVtLkJBTktfQ09OTkVDVElPTl9BRERFRFxuICAgIF0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZldGNoKCkuc3Vic2NyaWJlKChiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50W10pID0+IHtcbiAgICAgICAgdGhpcy5jYWNoZSA9IGJhbmtBY2NvdW50cztcbiAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import { plainToClass } from 'class-transformer';
4
+ import { BankConnection } from '../../../../models/bank/bank-connection';
5
+ import { RestService } from '../../rest/rest.service';
6
+ import { AppEvent } from '../../../../models/event/app-event';
7
+ import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common/http";
10
+ import * as i2 from "../../../event/event-dispatcher.service";
11
+ /**
12
+ * BankConnection means user account at specific bank (usually each user has only one at the same bank)
13
+ * service handles BankConnection management
14
+ */
15
+ export class BankConnectionService extends RestService {
16
+ constructor(http, eventDispatcherService, environment) {
17
+ super(http, eventDispatcherService, environment);
18
+ this.http = http;
19
+ this.eventDispatcherService = eventDispatcherService;
20
+ this.environment = environment;
21
+ this.modelClass = BankConnection;
22
+ this.url = 'bank-connections';
23
+ this.listenEvents();
24
+ }
25
+ listenEvents() {
26
+ this.listenToAddedBankAccounts();
27
+ }
28
+ post(bankConnection) {
29
+ return this.http.post(`${this.environment.apiV2}/${this.url}`, bankConnection)
30
+ .pipe(map((bankConnectionBase) => {
31
+ this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_CONNECTION_ADDED, null));
32
+ return plainToClass(BankConnection, bankConnectionBase);
33
+ }));
34
+ }
35
+ listenToAddedBankAccounts() {
36
+ this.eventDispatcherService.on(AppEventTypeEnum.BANK_ACCOUNT_CREATED).subscribe(() => {
37
+ this.resetCache();
38
+ });
39
+ }
40
+ }
41
+ BankConnectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankConnectionService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
42
+ BankConnectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankConnectionService, providedIn: 'root' });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankConnectionService, decorators: [{
44
+ type: Injectable,
45
+ args: [{
46
+ providedIn: 'root'
47
+ }]
48
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
49
+ type: Inject,
50
+ args: ['environment']
51
+ }] }]; } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1jb25uZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9iYW5rL2JhbmstY29ubmVjdGlvbi9iYW5rLWNvbm5lY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7O0FBRWhGOzs7R0FHRztBQUlILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxXQUErQztJQUl4RixZQUNZLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUN2QixXQUFnQjtRQUVqRCxLQUFLLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBSnZDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQU5uRCxlQUFVLEdBQUcsY0FBYyxDQUFDO1FBQzVCLFFBQUcsR0FBVyxrQkFBa0IsQ0FBQztRQVEvQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxDQUFDLGNBQThCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsY0FBYyxDQUFDO2FBQzNFLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxrQkFBc0MsRUFBRSxFQUFFO1lBQzdDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUVqRyxPQUFPLFlBQVksQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVELHlCQUF5QjtRQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNuRixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzttSEFoQ1UscUJBQXFCLGtGQU90QixhQUFhO3VIQVBaLHFCQUFxQixjQUZwQixNQUFNOzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVFJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJhbmtDb25uZWN0aW9uIGFzIEJhbmtDb25uZWN0aW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscy9iYW5rLWNvbm5lY3Rpb24nO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCYW5rQ29ubmVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9iYW5rL2JhbmstY29ubmVjdGlvbic7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuXG4vKipcbiAqIEJhbmtDb25uZWN0aW9uIG1lYW5zIHVzZXIgYWNjb3VudCBhdCBzcGVjaWZpYyBiYW5rICh1c3VhbGx5IGVhY2ggdXNlciBoYXMgb25seSBvbmUgYXQgdGhlIHNhbWUgYmFuaylcbiAqIHNlcnZpY2UgaGFuZGxlcyBCYW5rQ29ubmVjdGlvbiBtYW5hZ2VtZW50XG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJhbmtDb25uZWN0aW9uU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPEJhbmtDb25uZWN0aW9uQmFzZSwgQmFua0Nvbm5lY3Rpb24+IHtcbiAgbW9kZWxDbGFzcyA9IEJhbmtDb25uZWN0aW9uO1xuICB1cmw6IHN0cmluZyA9ICdiYW5rLWNvbm5lY3Rpb25zJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgZXZlbnREaXNwYXRjaGVyU2VydmljZTogRXZlbnREaXNwYXRjaGVyU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICAgIHN1cGVyKGh0dHAsIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIGVudmlyb25tZW50KTtcbiAgICB0aGlzLmxpc3RlbkV2ZW50cygpO1xuICB9XG5cbiAgbGlzdGVuRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuVG9BZGRlZEJhbmtBY2NvdW50cygpO1xuICB9XG5cbiAgcG9zdChiYW5rQ29ubmVjdGlvbjogQmFua0Nvbm5lY3Rpb24pOiBPYnNlcnZhYmxlPEJhbmtDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9YCwgYmFua0Nvbm5lY3Rpb24pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChiYW5rQ29ubmVjdGlvbkJhc2U6IEJhbmtDb25uZWN0aW9uQmFzZSkgPT4ge1xuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5CQU5LX0NPTk5FQ1RJT05fQURERUQsIG51bGwpKTtcblxuICAgICAgICAgIHJldHVybiBwbGFpblRvQ2xhc3MoQmFua0Nvbm5lY3Rpb24sIGJhbmtDb25uZWN0aW9uQmFzZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgbGlzdGVuVG9BZGRlZEJhbmtBY2NvdW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5CQU5LX0FDQ09VTlRfQ1JFQVRFRCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVzZXRDYWNoZSgpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,89 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import { RestService } from '../../rest/rest.service';
4
+ import { plainToClass } from 'class-transformer';
5
+ import { UserEventTypeClientTypeEnum } from '../../../../db/Enums/user-event-type-client-type.enum';
6
+ import { BankTransaction } from '../../../../models/bank/bank-transaction';
7
+ import { FinancialYear } from '../../../../models/financial-year/financial-year';
8
+ import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/common/http";
11
+ import * as i2 from "../../../event/event-dispatcher.service";
12
+ /**
13
+ * Service for bank transactions business logic
14
+ */
15
+ export class BankTransactionService extends RestService {
16
+ constructor(http, eventDispatcherService, environment) {
17
+ super(http, eventDispatcherService, environment);
18
+ this.http = http;
19
+ this.eventDispatcherService = eventDispatcherService;
20
+ this.environment = environment;
21
+ // url part for BankTransaction API
22
+ this.url = 'bank-transactions';
23
+ this.modelClass = BankTransaction;
24
+ this.listenEvents();
25
+ }
26
+ listenEvents() {
27
+ this.listenBankTransactionsImport();
28
+ }
29
+ ;
30
+ /**
31
+ * get list of bank transactions for passed bank account id
32
+ * @param bankAccountId Id of bank account we search bank transactions for
33
+ */
34
+ getByBankAccountId(bankAccountId) {
35
+ return this.get()
36
+ .pipe(map((bankTransactions) => {
37
+ return bankTransactions.filter((bankTransaction) => bankTransaction.bankAccount.id === bankAccountId);
38
+ }));
39
+ }
40
+ /**
41
+ * Get list of bank transactions for provided financial year
42
+ * @TODO VIK/Alex: consider to use one endpoint to get bank transactions for 2 fin years
43
+ */
44
+ getTransactionsByYear(finYear) {
45
+ return this.http.get(`${this.environment.apiV2}/bank-transactions?financialYear=${finYear}`)
46
+ .pipe(map((bankTransactionsBase) => {
47
+ return bankTransactionsBase.map((bankTransaction) => plainToClass(BankTransaction, bankTransaction));
48
+ }));
49
+ }
50
+ /**
51
+ * import bank transactions from csv file
52
+ * @param bankAccountId Bank account id we import bank transactions for
53
+ * @param file File with bank transactions for import
54
+ */
55
+ import(bankAccountId, file) {
56
+ const formData = new FormData();
57
+ formData.append('file', file);
58
+ return this.http.post(`${this.environment.apiV2}/bank-accounts/${bankAccountId}/bank-transaction-imports`, formData)
59
+ .pipe(map((response) => {
60
+ const newBankTransactions = response.map((bankTransaction) => plainToClass(BankTransaction, bankTransaction));
61
+ // push new items to cache only if we already have cache. Otherwise cache will contain only new items.
62
+ if (this.cache) {
63
+ // just current year's transactions should be added
64
+ this.cache.push(...newBankTransactions.filter((bt) => new FinancialYear().includes(bt.date)));
65
+ this.updateCache();
66
+ }
67
+ return newBankTransactions;
68
+ }));
69
+ }
70
+ listenBankTransactionsImport() {
71
+ this.eventDispatcherService.on(AppEventTypeEnum.NOTIFICATION_ADDED).subscribe((notification) => {
72
+ if (!notification.isRead && notification.eventType === UserEventTypeClientTypeEnum.BASIQ_FIRST_IMPORT_COMPLETE) {
73
+ this.resetCache();
74
+ }
75
+ });
76
+ }
77
+ }
78
+ BankTransactionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankTransactionService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
79
+ BankTransactionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankTransactionService, providedIn: 'root' });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankTransactionService, decorators: [{
81
+ type: Injectable,
82
+ args: [{
83
+ providedIn: 'root'
84
+ }]
85
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
86
+ type: Inject,
87
+ args: ['environment']
88
+ }] }]; } });
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay10cmFuc2FjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvYmFuay9iYW5rLXRyYW5zYWN0aW9uL2JhbmstdHJhbnNhY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7O0FBR2hGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFdBQWlEO0lBSzNGLFlBQ1ksSUFBZ0IsRUFDaEIsc0JBQThDLEVBQ3ZCLFdBQWdCO1FBRWpELEtBQUssQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFKdkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBUG5ELG1DQUFtQztRQUNuQyxRQUFHLEdBQVcsbUJBQW1CLENBQUM7UUFDbEMsZUFBVSxHQUFHLGVBQWUsQ0FBQztRQVEzQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFD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ZSc7XG5pbXBvcnQgeyBCYW5rVHJhbnNhY3Rpb24gYXMgQmFua1RyYW5zYWN0aW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscy9iYW5rLXRyYW5zYWN0aW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVzdC9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFVzZXJFdmVudFR5cGVDbGllbnRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL0VudW1zL3VzZXItZXZlbnQtdHlwZS1jbGllbnQtdHlwZS5lbnVtJztcbmltcG9ydCB7IEJhbmtUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9iYW5rL2JhbmstdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGaW5hbmNpYWxZZWFyIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpbmFuY2lhbC15ZWFyL2ZpbmFuY2lhbC15ZWFyJztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbic7XG5cbi8qKlxuICogU2VydmljZSBmb3IgYmFuayB0cmFuc2FjdGlvbnMgYnVzaW5lc3MgbG9naWNcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFua1RyYW5zYWN0aW9uU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPEJhbmtUcmFuc2FjdGlvbkJhc2UsIEJhbmtUcmFuc2FjdGlvbj4ge1xuICAvLyB1cmwgcGFydCBmb3IgQmFua1RyYW5zYWN0aW9uIEFQSVxuICB1cmw6IHN0cmluZyA9ICdiYW5rLXRyYW5zYWN0aW9ucyc7XG4gIG1vZGVsQ2xhc3MgPSBCYW5rVHJhbnNhY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICBzdXBlcihodHRwLCBldmVudERpc3BhdGNoZXJTZXJ2aWNlLCBlbnZpcm9ubWVudCk7XG4gICAgdGhpcy5saXN0ZW5FdmVudHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuQmFua1RyYW5zYWN0aW9uc0ltcG9ydCgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBnZXQgbGlzdCBvZiBiYW5rIHRyYW5zYWN0aW9ucyBmb3IgcGFzc2VkIGJhbmsgYWNjb3VudCBpZFxuICAgKiBAcGFyYW0gYmFua0FjY291bnRJZCBJZCBvZiBiYW5rIGFjY291bnQgd2Ugc2VhcmNoIGJhbmsgdHJhbnNhY3Rpb25zIGZvclxuICAgKi9cbiAgZ2V0QnlCYW5rQWNjb3VudElkKGJhbmtBY2NvdW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8QmFua1RyYW5zYWN0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoYmFua1RyYW5zYWN0aW9uczogQmFua1RyYW5zYWN0aW9uW10pID0+IHtcbiAgICAgICAgICByZXR1cm4gYmFua1RyYW5zYWN0aW9ucy5maWx0ZXIoKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKSA9PiBiYW5rVHJhbnNhY3Rpb24uYmFua0FjY291bnQuaWQgPT09IGJhbmtBY2NvdW50SWQpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGlzdCBvZiBiYW5rIHRyYW5zYWN0aW9ucyBmb3IgcHJvdmlkZWQgZmluYW5jaWFsIHllYXJcbiAgICogQFRPRE8gVklLL0FsZXg6IGNvbnNpZGVyIHRvIHVzZSBvbmUgZW5kcG9pbnQgdG8gZ2V0IGJhbmsgdHJhbnNhY3Rpb25zIGZvciAyIGZpbiB5ZWFyc1xuICAgKi9cbiAgZ2V0VHJhbnNhY3Rpb25zQnlZZWFyKGZpblllYXI6IG51bWJlcik6IE9ic2VydmFibGU8QmFua1RyYW5zYWN0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9iYW5rLXRyYW5zYWN0aW9ucz9maW5hbmNpYWxZZWFyPSR7ZmluWWVhcn1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoYmFua1RyYW5zYWN0aW9uc0Jhc2U6IEJhbmtUcmFuc2FjdGlvbkJhc2VbXSkgPT4ge1xuICAgICAgICAgIHJldHVybiBiYW5rVHJhbnNhY3Rpb25zQmFzZS5tYXAoKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKSA9PiBwbGFpblRvQ2xhc3MoQmFua1RyYW5zYWN0aW9uLCBiYW5rVHJhbnNhY3Rpb24pKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogaW1wb3J0IGJhbmsgdHJhbnNhY3Rpb25zIGZyb20gY3N2IGZpbGVcbiAgICogQHBhcmFtIGJhbmtBY2NvdW50SWQgQmFuayBhY2NvdW50IGlkIHdlIGltcG9ydCBiYW5rIHRyYW5zYWN0aW9ucyBmb3JcbiAgICogQHBhcmFtIGZpbGUgRmlsZSB3aXRoIGJhbmsgdHJhbnNhY3Rpb25zIGZvciBpbXBvcnRcbiAgICovXG4gIGltcG9ydChiYW5rQWNjb3VudElkOiBudW1iZXIsIGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPEJhbmtUcmFuc2FjdGlvbltdPiB7XG4gICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vYmFuay1hY2NvdW50cy8ke2JhbmtBY2NvdW50SWR9L2JhbmstdHJhbnNhY3Rpb24taW1wb3J0c2AsIGZvcm1EYXRhKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IEJhbmtUcmFuc2FjdGlvbkJhc2VbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0JhbmtUcmFuc2FjdGlvbnM6IEJhbmtUcmFuc2FjdGlvbltdID0gcmVzcG9uc2UubWFwKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbkJhc2UpID0+IHBsYWluVG9DbGFzcyhCYW5rVHJhbnNhY3Rpb24sIGJhbmtUcmFuc2FjdGlvbikpO1xuICAgICAgICAgIC8vIHB1c2ggbmV3IGl0ZW1zIHRvIGNhY2hlIG9ubHkgaWYgd2UgYWxyZWFkeSBoYXZlIGNhY2hlLiBPdGhlcndpc2UgY2FjaGUgd2lsbCBjb250YWluIG9ubHkgbmV3IGl0ZW1zLlxuICAgICAgICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICAgICAgICAvLyBqdXN0IGN1cnJlbnQgeWVhcidzIHRyYW5zYWN0aW9ucyBzaG91bGQgYmUgYWRkZWRcbiAgICAgICAgICAgIHRoaXMuY2FjaGUucHVzaCguLi5uZXdCYW5rVHJhbnNhY3Rpb25zLmZpbHRlcigoYnQ6IEJhbmtUcmFuc2FjdGlvbikgPT4gbmV3IEZpbmFuY2lhbFllYXIoKS5pbmNsdWRlcyhidC5kYXRlKSkpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBuZXdCYW5rVHJhbnNhY3Rpb25zO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuQmFua1RyYW5zYWN0aW9uc0ltcG9ydCgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5OT1RJRklDQVRJT05fQURERUQpLnN1YnNjcmliZSgobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pID0+IHtcbiAgICAgIGlmICghbm90aWZpY2F0aW9uLmlzUmVhZCAmJiBub3RpZmljYXRpb24uZXZlbnRUeXBlID09PSBVc2VyRXZlbnRUeXBlQ2xpZW50VHlwZUVudW0uQkFTSVFfRklSU1RfSU1QT1JUX0NPTVBMRVRFKSB7XG4gICAgICAgIHRoaXMucmVzZXRDYWNoZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=