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.
- package/bundles/taxtank-core.umd.js +180 -134
- package/bundles/taxtank-core.umd.js.map +1 -1
- package/esm2015/lib/collections/tax-summary/report-item.collection.js +141 -0
- package/esm2015/lib/db/Models/transaction-base.js +2 -1
- package/esm2015/lib/models/tax-summary/report-item-details.js +9 -0
- package/esm2015/lib/models/tax-summary/report-item.js +15 -0
- package/esm2015/lib/models/tax-summary/tax-summary-section.js +5 -5
- package/esm2015/lib/models/toast/toast-type.enum.js +8 -0
- package/esm2015/lib/models/toast/toast.js +9 -0
- package/esm2015/lib/services/http/address/address.service.js +39 -0
- package/esm2015/lib/services/http/bank/bank-account/bank-account.service.js +118 -0
- package/esm2015/lib/services/http/bank/bank-connection/bank-connection.service.js +52 -0
- package/esm2015/lib/services/http/bank/bank-transaction/bank-transaction.service.js +89 -0
- package/esm2015/lib/services/http/bank/bank.service.js +24 -0
- package/esm2015/lib/services/http/bank/basiq/basiq.service.js +94 -0
- package/esm2015/lib/services/http/chart-accounts/chart-accounts-depreciations/chart-accounts-depreciations.service.js +38 -0
- package/esm2015/lib/services/http/chart-accounts/chart-accounts.service.js +89 -0
- package/esm2015/lib/services/http/chat/chat.service.js +77 -0
- package/esm2015/lib/services/http/chat/message/message.service.js +65 -0
- package/esm2015/lib/services/http/chat/message-document/message-document.service.js +118 -0
- package/esm2015/lib/services/{depreciation/capital-project.service.js → http/depreciation/depreciation-capital-project/depreciation-capital-project.service.js} +7 -7
- package/esm2015/lib/services/http/depreciation/depreciation.service.js +146 -0
- package/esm2015/lib/services/http/document/document-folder/document-folder.service.js +84 -0
- package/esm2015/lib/services/{client → http/firm/client-invite}/client-invite.service.js +7 -7
- package/esm2015/lib/services/http/firm/client-movement/client-movement.service.js +98 -0
- package/esm2015/lib/services/http/firm/employee/employee.service.js +39 -0
- package/esm2015/lib/services/http/firm/employee-invite/employee-invite.service.js +53 -0
- package/esm2015/lib/services/http/firm/firm.service.js +79 -0
- package/esm2015/lib/services/http/firm/portfolio-report/client-portfolio-report.service.js +37 -0
- package/esm2015/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.js +90 -0
- package/esm2015/lib/services/http/income-source/income-source.service.js +109 -0
- package/esm2015/lib/services/http/income-source/salary-forecast/salary-forecast.service.js +90 -0
- package/esm2015/lib/services/http/income-source/sole-forecast/sole-forecast.service.js +87 -0
- package/esm2015/lib/services/http/loan/borrowing-expense/borrowing-expense.service.js +73 -0
- package/esm2015/lib/services/http/loan/loan.service.js +145 -0
- package/esm2015/lib/services/http/property/property-category/property-category.service.js +23 -0
- package/esm2015/lib/services/http/property/property-category-movement/property-category-movement.service.js +47 -0
- package/esm2015/lib/services/http/property/property-document/property-document.service.js +70 -0
- package/esm2015/lib/services/http/property/property-sale/property-sale.service.js +20 -0
- package/esm2015/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.js +21 -0
- package/esm2015/lib/services/http/property/property-share/property-share.service.js +115 -0
- package/esm2015/lib/services/http/property/property.service.js +126 -0
- package/esm2015/lib/services/http/rest/rest.service.js +190 -0
- package/esm2015/lib/services/http/service-notification/service-notification.service.js +65 -0
- package/esm2015/lib/services/http/subscription/subscription.service.js +157 -0
- package/esm2015/lib/services/http/tax-review/tax-review-history/tax-review-history.service.js +41 -0
- package/esm2015/lib/services/http/tax-review/tax-review.service.js +103 -0
- package/esm2015/lib/services/http/tax-summary/tax-summary.service.js +71 -0
- package/esm2015/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.js +85 -0
- package/esm2015/lib/services/http/transaction/transaction.service.js +319 -0
- package/esm2015/lib/services/http/user/occupation/occupation.service.js +45 -0
- package/esm2015/lib/services/http/user/user-event-setting/user-event-setting.service.js +59 -0
- package/esm2015/lib/services/http/user/user-event-type/user-event-type.service.js +29 -0
- package/esm2015/lib/services/http/user/user.service.js +124 -0
- package/esm2015/lib/services/http/vehicle/vehicle.service.js +237 -0
- package/esm2015/lib/services/property/equity-position-chart/equity-position-chart.service.js +45 -0
- package/esm2015/lib/services/toast/toast.service.js +26 -0
- package/esm2015/public-api.js +54 -51
- package/fesm2015/taxtank-core.js +98 -56
- package/fesm2015/taxtank-core.js.map +1 -1
- package/lib/collections/{tax-return-category-item.collection.d.ts → tax-summary/report-item.collection.d.ts} +5 -5
- package/lib/models/tax-summary/{tax-return-category-item-details.d.ts → report-item-details.d.ts} +2 -2
- package/lib/models/tax-summary/{tax-return-category-item.d.ts → report-item.d.ts} +4 -4
- package/lib/models/tax-summary/tax-summary-section.d.ts +2 -2
- package/lib/models/toast/toast-type.enum.d.ts +6 -0
- package/lib/models/toast/toast.d.ts +10 -0
- package/lib/services/{address → http/address}/address.service.d.ts +1 -1
- package/lib/services/{bank → http/bank/bank-account}/bank-account.service.d.ts +5 -5
- package/lib/services/{bank → http/bank/bank-connection}/bank-connection.service.d.ts +5 -5
- package/lib/services/{bank → http/bank/bank-transaction}/bank-transaction.service.d.ts +5 -5
- package/lib/services/{bank → http/bank}/bank.service.d.ts +4 -4
- package/lib/services/{bank → http/bank/basiq}/basiq.service.d.ts +7 -7
- package/lib/services/{chart-accounts → http/chart-accounts/chart-accounts-depreciations}/chart-accounts-depreciations.service.d.ts +4 -4
- package/lib/services/{chart-accounts → http/chart-accounts}/chart-accounts.service.d.ts +3 -3
- package/lib/services/{chat → http/chat}/chat.service.d.ts +7 -7
- package/lib/services/{chat → http/chat/message}/message.service.d.ts +7 -7
- package/lib/services/{chat → http/chat/message-document}/message-document.service.d.ts +3 -3
- package/lib/services/{depreciation/capital-project.service.d.ts → http/depreciation/depreciation-capital-project/depreciation-capital-project.service.d.ts} +4 -4
- package/lib/services/{depreciation → http/depreciation}/depreciation.service.d.ts +5 -5
- package/lib/services/{document → http/document/document-folder}/document-folder.service.d.ts +6 -6
- package/lib/services/{client → http/firm/client-invite}/client-invite.service.d.ts +4 -4
- package/lib/services/{client → http/firm/client-movement}/client-movement.service.d.ts +7 -7
- package/lib/services/{employee → http/firm/employee}/employee.service.d.ts +4 -4
- package/lib/services/{employee → http/firm/employee-invite}/employee-invite.service.d.ts +4 -4
- package/lib/services/{firm → http/firm}/firm.service.d.ts +2 -2
- package/lib/services/{client → http/firm/portfolio-report}/client-portfolio-report.service.d.ts +1 -1
- package/lib/services/{income-source → http/income-source/income-source-forecast}/income-source-forecast.service.d.ts +5 -5
- package/lib/services/{income-source → http/income-source}/income-source.service.d.ts +8 -8
- package/lib/services/{income-source → http/income-source/salary-forecast}/salary-forecast.service.d.ts +6 -6
- package/lib/services/{income-source → http/income-source/sole-forecast}/sole-forecast.service.d.ts +5 -5
- package/lib/services/{borrowing-expense → http/loan/borrowing-expense}/borrowing-expense.service.d.ts +2 -2
- package/lib/services/{loan → http/loan}/loan.service.d.ts +6 -6
- package/lib/services/{property → http/property}/property-category/property-category.service.d.ts +4 -4
- package/lib/services/{property → http/property/property-category-movement}/property-category-movement.service.d.ts +4 -4
- package/lib/services/{property → http/property}/property-document/property-document.service.d.ts +5 -5
- package/lib/services/http/property/property-sale/property-sale.service.d.ts +10 -0
- package/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.d.ts +11 -0
- package/lib/services/{property → http/property}/property-share/property-share.service.d.ts +5 -5
- package/lib/services/{property → http/property}/property.service.d.ts +5 -5
- package/lib/services/{base-rest.service.d.ts → http/rest/rest.service.d.ts} +4 -4
- package/lib/services/http/service-notification/service-notification.service.d.ts +31 -0
- package/lib/services/{subscription → http/subscription}/subscription.service.d.ts +6 -6
- package/lib/services/{tax-review → http/tax-review/tax-review-history}/tax-review-history.service.d.ts +5 -5
- package/lib/services/{tax-review → http/tax-review}/tax-review.service.d.ts +6 -6
- package/lib/services/{tax-summary → http/tax-summary}/tax-summary.service.d.ts +2 -2
- package/lib/services/{transaction → http/transaction/transaction-allocation}/transaction-allocation.service.d.ts +6 -6
- package/lib/services/{transaction → http/transaction}/transaction.service.d.ts +7 -7
- package/lib/services/{user → http/user/occupation}/occupation.service.d.ts +1 -1
- package/lib/services/{user-event → http/user/user-event-setting}/user-event-setting.service.d.ts +5 -5
- package/lib/services/{user-event → http/user/user-event-type}/user-event-type.service.d.ts +5 -5
- package/lib/services/{user → http/user}/user.service.d.ts +3 -3
- package/lib/services/{work/work-tank.service.d.ts → http/vehicle/vehicle.service.d.ts} +9 -8
- package/lib/services/property/{equity-position-chart.service.d.ts → equity-position-chart/equity-position-chart.service.d.ts} +1 -1
- package/lib/services/toast/toast.service.d.ts +13 -0
- package/package.json +1 -1
- package/public-api.d.ts +53 -50
- package/esm2015/lib/collections/tax-return-category-item.collection.js +0 -141
- package/esm2015/lib/models/tax-summary/tax-return-category-item-details.js +0 -9
- package/esm2015/lib/models/tax-summary/tax-return-category-item.js +0 -15
- package/esm2015/lib/services/address/address.service.js +0 -39
- package/esm2015/lib/services/bank/bank-account.service.js +0 -118
- package/esm2015/lib/services/bank/bank-connection.service.js +0 -52
- package/esm2015/lib/services/bank/bank-transaction.service.js +0 -89
- package/esm2015/lib/services/bank/bank.service.js +0 -24
- package/esm2015/lib/services/bank/basiq.service.js +0 -94
- package/esm2015/lib/services/base-rest.service.js +0 -190
- package/esm2015/lib/services/borrowing-expense/borrowing-expense.service.js +0 -73
- package/esm2015/lib/services/chart-accounts/chart-accounts-depreciations.service.js +0 -38
- package/esm2015/lib/services/chart-accounts/chart-accounts.service.js +0 -89
- package/esm2015/lib/services/chat/chat.service.js +0 -77
- package/esm2015/lib/services/chat/message-document.service.js +0 -118
- package/esm2015/lib/services/chat/message.service.js +0 -65
- package/esm2015/lib/services/client/client-movement.service.js +0 -98
- package/esm2015/lib/services/client/client-portfolio-report.service.js +0 -37
- package/esm2015/lib/services/depreciation/depreciation.service.js +0 -146
- package/esm2015/lib/services/document/document-folder.service.js +0 -84
- package/esm2015/lib/services/employee/employee-invite.service.js +0 -53
- package/esm2015/lib/services/employee/employee.service.js +0 -39
- package/esm2015/lib/services/firm/firm.service.js +0 -79
- package/esm2015/lib/services/income-source/income-source-forecast.service.js +0 -90
- package/esm2015/lib/services/income-source/income-source.service.js +0 -109
- package/esm2015/lib/services/income-source/salary-forecast.service.js +0 -90
- package/esm2015/lib/services/income-source/sole-forecast.service.js +0 -87
- package/esm2015/lib/services/loan/loan.service.js +0 -145
- package/esm2015/lib/services/notification/notification.service.js +0 -65
- package/esm2015/lib/services/property/equity-position-chart.service.js +0 -45
- package/esm2015/lib/services/property/property-category/property-category.service.js +0 -23
- package/esm2015/lib/services/property/property-category-movement.service.js +0 -47
- package/esm2015/lib/services/property/property-document/property-document.service.js +0 -70
- package/esm2015/lib/services/property/property-sale/property-sale.service.js +0 -20
- package/esm2015/lib/services/property/property-sale/tax-exemption/tax-exemption.service.js +0 -21
- package/esm2015/lib/services/property/property-share/property-share.service.js +0 -115
- package/esm2015/lib/services/property/property.service.js +0 -126
- package/esm2015/lib/services/subscription/subscription.service.js +0 -157
- package/esm2015/lib/services/tax-review/tax-review-history.service.js +0 -41
- package/esm2015/lib/services/tax-review/tax-review.service.js +0 -103
- package/esm2015/lib/services/tax-summary/tax-summary.service.js +0 -71
- package/esm2015/lib/services/transaction/transaction-allocation.service.js +0 -85
- package/esm2015/lib/services/transaction/transaction.service.js +0 -319
- package/esm2015/lib/services/user/occupation.service.js +0 -45
- package/esm2015/lib/services/user/user.service.js +0 -124
- package/esm2015/lib/services/user-event/user-event-setting.service.js +0 -59
- package/esm2015/lib/services/user-event/user-event-type.service.js +0 -29
- package/esm2015/lib/services/work/work-tank.service.js +0 -236
- package/lib/services/notification/notification.service.d.ts +0 -31
- package/lib/services/property/property-sale/property-sale.service.d.ts +0 -10
- 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,
|
|
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 {
|
|
4
|
-
import {
|
|
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(() =>
|
|
14
|
-
Transform(({ value }) => new
|
|
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,
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay10cmFuc2FjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvYmFuay9iYW5rLXRyYW5zYWN0aW9uL2JhbmstdHJhbnNhY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7O0FBR2hGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFdBQWlEO0lBSzNGLFlBQ1ksSUFBZ0IsRUFDaEIsc0JBQThDLEVBQ3ZCLFdBQWdCO1FBRWpELEtBQUssQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFKdkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBUG5ELG1DQUFtQztRQUNuQyxRQUFHLEdBQVcsbUJBQW1CLENBQUM7UUFDbEMsZUFBVSxHQUFHLGVBQWUsQ0FBQztRQVEzQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUFBLENBQUM7SUFFRjs7O09BR0c7SUFDSCxrQkFBa0IsQ0FBQyxhQUFxQjtRQUN0QyxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUU7YUFDZCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsZ0JBQW1DLEVBQUUsRUFBRTtZQUMxQyxPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLGVBQWdDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLGFBQWEsQ0FBQyxDQUFDO1FBQ3pILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gscUJBQXFCLENBQUMsT0FBZTtRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLG9DQUFvQyxPQUFPLEVBQUUsQ0FBQzthQUN6RixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsb0JBQTJDLEVBQUUsRUFBRTtZQUNsRCxPQUFPLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWdDLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUN4SCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsYUFBcUIsRUFBRSxJQUFVO1FBQ3RDLE1BQU0sUUFBUSxHQUFhLElBQUksUUFBUSxFQUFFLENBQUM7UUFDMUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxrQkFBa0IsYUFBYSwyQkFBMkIsRUFBRSxRQUFRLENBQUM7YUFDakgsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQStCLEVBQUUsRUFBRTtZQUN0QyxNQUFNLG1CQUFtQixHQUFzQixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBb0MsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBQ3RKLHNHQUFzRztZQUN0RyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsbURBQW1EO2dCQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9HLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtZQUVELE9BQU8sbUJBQW1CLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFTyw0QkFBNEI7UUFDbEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQTBCLEVBQUUsRUFBRTtZQUMzRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsU0FBUyxLQUFLLDJCQUEyQixDQUFDLDJCQUEyQixFQUFFO2dCQUM5RyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDbkI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O29IQTNFVSxzQkFBc0Isa0ZBUXZCLGFBQWE7d0hBUlosc0JBQXNCLGNBRnJCLE1BQU07NEZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBU0ksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYW5rVHJhbnNhY3Rpb24gYXMgQmFua1RyYW5zYWN0aW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscy9iYW5rLXRyYW5zYWN0aW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVzdC9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFVzZXJFdmVudFR5cGVDbGllbnRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL0VudW1zL3VzZXItZXZlbnQtdHlwZS1jbGllbnQtdHlwZS5lbnVtJztcbmltcG9ydCB7IEJhbmtUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9iYW5rL2JhbmstdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGaW5hbmNpYWxZZWFyIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpbmFuY2lhbC15ZWFyL2ZpbmFuY2lhbC15ZWFyJztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbic7XG5cbi8qKlxuICogU2VydmljZSBmb3IgYmFuayB0cmFuc2FjdGlvbnMgYnVzaW5lc3MgbG9naWNcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFua1RyYW5zYWN0aW9uU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPEJhbmtUcmFuc2FjdGlvbkJhc2UsIEJhbmtUcmFuc2FjdGlvbj4ge1xuICAvLyB1cmwgcGFydCBmb3IgQmFua1RyYW5zYWN0aW9uIEFQSVxuICB1cmw6IHN0cmluZyA9ICdiYW5rLXRyYW5zYWN0aW9ucyc7XG4gIG1vZGVsQ2xhc3MgPSBCYW5rVHJhbnNhY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICBzdXBlcihodHRwLCBldmVudERpc3BhdGNoZXJTZXJ2aWNlLCBlbnZpcm9ubWVudCk7XG4gICAgdGhpcy5saXN0ZW5FdmVudHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuQmFua1RyYW5zYWN0aW9uc0ltcG9ydCgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBnZXQgbGlzdCBvZiBiYW5rIHRyYW5zYWN0aW9ucyBmb3IgcGFzc2VkIGJhbmsgYWNjb3VudCBpZFxuICAgKiBAcGFyYW0gYmFua0FjY291bnRJZCBJZCBvZiBiYW5rIGFjY291bnQgd2Ugc2VhcmNoIGJhbmsgdHJhbnNhY3Rpb25zIGZvclxuICAgKi9cbiAgZ2V0QnlCYW5rQWNjb3VudElkKGJhbmtBY2NvdW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8QmFua1RyYW5zYWN0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoYmFua1RyYW5zYWN0aW9uczogQmFua1RyYW5zYWN0aW9uW10pID0+IHtcbiAgICAgICAgICByZXR1cm4gYmFua1RyYW5zYWN0aW9ucy5maWx0ZXIoKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKSA9PiBiYW5rVHJhbnNhY3Rpb24uYmFua0FjY291bnQuaWQgPT09IGJhbmtBY2NvdW50SWQpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGlzdCBvZiBiYW5rIHRyYW5zYWN0aW9ucyBmb3IgcHJvdmlkZWQgZmluYW5jaWFsIHllYXJcbiAgICogQFRPRE8gVklLL0FsZXg6IGNvbnNpZGVyIHRvIHVzZSBvbmUgZW5kcG9pbnQgdG8gZ2V0IGJhbmsgdHJhbnNhY3Rpb25zIGZvciAyIGZpbiB5ZWFyc1xuICAgKi9cbiAgZ2V0VHJhbnNhY3Rpb25zQnlZZWFyKGZpblllYXI6IG51bWJlcik6IE9ic2VydmFibGU8QmFua1RyYW5zYWN0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9iYW5rLXRyYW5zYWN0aW9ucz9maW5hbmNpYWxZZWFyPSR7ZmluWWVhcn1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoYmFua1RyYW5zYWN0aW9uc0Jhc2U6IEJhbmtUcmFuc2FjdGlvbkJhc2VbXSkgPT4ge1xuICAgICAgICAgIHJldHVybiBiYW5rVHJhbnNhY3Rpb25zQmFzZS5tYXAoKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKSA9PiBwbGFpblRvQ2xhc3MoQmFua1RyYW5zYWN0aW9uLCBiYW5rVHJhbnNhY3Rpb24pKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogaW1wb3J0IGJhbmsgdHJhbnNhY3Rpb25zIGZyb20gY3N2IGZpbGVcbiAgICogQHBhcmFtIGJhbmtBY2NvdW50SWQgQmFuayBhY2NvdW50IGlkIHdlIGltcG9ydCBiYW5rIHRyYW5zYWN0aW9ucyBmb3JcbiAgICogQHBhcmFtIGZpbGUgRmlsZSB3aXRoIGJhbmsgdHJhbnNhY3Rpb25zIGZvciBpbXBvcnRcbiAgICovXG4gIGltcG9ydChiYW5rQWNjb3VudElkOiBudW1iZXIsIGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPEJhbmtUcmFuc2FjdGlvbltdPiB7XG4gICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vYmFuay1hY2NvdW50cy8ke2JhbmtBY2NvdW50SWR9L2JhbmstdHJhbnNhY3Rpb24taW1wb3J0c2AsIGZvcm1EYXRhKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IEJhbmtUcmFuc2FjdGlvbkJhc2VbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0JhbmtUcmFuc2FjdGlvbnM6IEJhbmtUcmFuc2FjdGlvbltdID0gcmVzcG9uc2UubWFwKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbkJhc2UpID0+IHBsYWluVG9DbGFzcyhCYW5rVHJhbnNhY3Rpb24sIGJhbmtUcmFuc2FjdGlvbikpO1xuICAgICAgICAgIC8vIHB1c2ggbmV3IGl0ZW1zIHRvIGNhY2hlIG9ubHkgaWYgd2UgYWxyZWFkeSBoYXZlIGNhY2hlLiBPdGhlcndpc2UgY2FjaGUgd2lsbCBjb250YWluIG9ubHkgbmV3IGl0ZW1zLlxuICAgICAgICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICAgICAgICAvLyBqdXN0IGN1cnJlbnQgeWVhcidzIHRyYW5zYWN0aW9ucyBzaG91bGQgYmUgYWRkZWRcbiAgICAgICAgICAgIHRoaXMuY2FjaGUucHVzaCguLi5uZXdCYW5rVHJhbnNhY3Rpb25zLmZpbHRlcigoYnQ6IEJhbmtUcmFuc2FjdGlvbikgPT4gbmV3IEZpbmFuY2lhbFllYXIoKS5pbmNsdWRlcyhidC5kYXRlKSkpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBuZXdCYW5rVHJhbnNhY3Rpb25zO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuQmFua1RyYW5zYWN0aW9uc0ltcG9ydCgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5OT1RJRklDQVRJT05fQURERUQpLnN1YnNjcmliZSgobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pID0+IHtcbiAgICAgIGlmICghbm90aWZpY2F0aW9uLmlzUmVhZCAmJiBub3RpZmljYXRpb24uZXZlbnRUeXBlID09PSBVc2VyRXZlbnRUeXBlQ2xpZW50VHlwZUVudW0uQkFTSVFfRklSU1RfSU1QT1JUX0NPTVBMRVRFKSB7XG4gICAgICAgIHRoaXMucmVzZXRDYWNoZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|