taxtank-core 0.30.136 → 0.30.138
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/esm2020/lib/collections/report/vehicle-expense/vehicle-expense.collection.mjs +3 -3
- package/esm2020/lib/models/income-source/salary-forecast.mjs +3 -3
- package/esm2020/lib/models/property/borrowing-report.mjs +4 -1
- package/esm2020/lib/services/transaction/transaction-calculation.service.mjs +7 -4
- package/fesm2015/taxtank-core.mjs +4512 -4506
- package/fesm2015/taxtank-core.mjs.map +1 -1
- package/fesm2020/taxtank-core.mjs +4419 -4413
- package/fesm2020/taxtank-core.mjs.map +1 -1
- package/lib/collections/report/vehicle-expense/vehicle-expense.collection.d.ts +3 -3
- package/lib/services/transaction/transaction-calculation.service.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Collection } from '../../collection';
|
|
2
|
-
import { VehicleExpense } from '../../../models/report
|
|
2
|
+
import { VehicleExpense } from '../../../models/report';
|
|
3
3
|
export class VehicleExpenseCollection extends Collection {
|
|
4
4
|
constructor(transactions, depreciations, vehicleClaim) {
|
|
5
5
|
super();
|
|
@@ -10,8 +10,8 @@ export class VehicleExpenseCollection extends Collection {
|
|
|
10
10
|
const transactionsByChartAccounts = transactions.groupBy('chartAccounts.name');
|
|
11
11
|
const transactionExpenses = transactionsByChartAccounts.keys.map((chartAccountsName) => new VehicleExpense(transactionsByChartAccounts.get(chartAccountsName).amount, vehicleClaim.workUsage, chartAccountsName));
|
|
12
12
|
// group all depreciations into one expense item
|
|
13
|
-
const depreciationExpense = new VehicleExpense(depreciations.getCurrentYearForecastAmount(), vehicleClaim.workUsage, 'Depreciation');
|
|
13
|
+
const depreciationExpense = new VehicleExpense(-depreciations.getCurrentYearForecastAmount(), vehicleClaim.workUsage, 'Depreciation');
|
|
14
14
|
this.items.push(...[depreciationExpense, ...transactionExpenses]);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS1leHBlbnNlLmNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvY29sbGVjdGlvbnMvcmVwb3J0L3ZlaGljbGUtZXhwZW5zZS92ZWhpY2xlLWV4cGVuc2UuY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBS3hELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxVQUEwQjtJQUN0RSxZQUNFLFlBQW1DLEVBQ25DLGFBQXFDLEVBQ3JDLFlBQTBCO1FBRTFCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxRQUFRLENBQUMsWUFBbUMsRUFBRSxhQUFxQyxFQUFFLFlBQTBCO1FBQ3JILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWhCLE1BQU0sMkJBQTJCLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRS9FLE1BQU0sbUJBQW1CLEdBQXFCLDJCQUEyQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxpQkFBeUIsRUFBRSxFQUFFLENBQUMsSUFBSSxjQUFjLENBQ2xJLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sRUFDekQsWUFBWSxDQUFDLFNBQVMsRUFDdEIsaUJBQWlCLENBQ2xCLENBQUMsQ0FBQztRQUVILGdEQUFnRDtRQUNoRCxNQUFNLG1CQUFtQixHQUFtQixJQUFJLGNBQWMsQ0FDNUQsQ0FBQyxhQUFhLENBQUMsNEJBQTRCLEVBQUUsRUFDN0MsWUFBWSxDQUFDLFNBQVMsRUFDdEIsY0FBYyxDQUNmLENBQUM7UUFFRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgVmVoaWNsZUV4cGVuc2UgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVwb3J0JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi9kZXByZWNpYXRpb24uY29sbGVjdGlvbic7XG5pbXBvcnQgeyBWZWhpY2xlQ2xhaW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuXG5leHBvcnQgY2xhc3MgVmVoaWNsZUV4cGVuc2VDb2xsZWN0aW9uIGV4dGVuZHMgQ29sbGVjdGlvbjxWZWhpY2xlRXhwZW5zZT4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbixcbiAgICBkZXByZWNpYXRpb25zOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uLFxuICAgIHZlaGljbGVDbGFpbTogVmVoaWNsZUNsYWltXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zZXRJdGVtcyh0cmFuc2FjdGlvbnMsIGRlcHJlY2lhdGlvbnMsIHZlaGljbGVDbGFpbSk7XG4gIH1cblxuICBwcml2YXRlIHNldEl0ZW1zKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25Db2xsZWN0aW9uLCBkZXByZWNpYXRpb25zOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uLCB2ZWhpY2xlQ2xhaW06IFZlaGljbGVDbGFpbSk6IHZvaWQge1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uc0J5Q2hhcnRBY2NvdW50cyA9IHRyYW5zYWN0aW9ucy5ncm91cEJ5KCdjaGFydEFjY291bnRzLm5hbWUnKTtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uRXhwZW5zZXM6IFZlaGljbGVFeHBlbnNlW10gPSB0cmFuc2FjdGlvbnNCeUNoYXJ0QWNjb3VudHMua2V5cy5tYXAoKGNoYXJ0QWNjb3VudHNOYW1lOiBzdHJpbmcpID0+IG5ldyBWZWhpY2xlRXhwZW5zZShcbiAgICAgIHRyYW5zYWN0aW9uc0J5Q2hhcnRBY2NvdW50cy5nZXQoY2hhcnRBY2NvdW50c05hbWUpLmFtb3VudCxcbiAgICAgIHZlaGljbGVDbGFpbS53b3JrVXNhZ2UsXG4gICAgICBjaGFydEFjY291bnRzTmFtZVxuICAgICkpO1xuXG4gICAgLy8gZ3JvdXAgYWxsIGRlcHJlY2lhdGlvbnMgaW50byBvbmUgZXhwZW5zZSBpdGVtXG4gICAgY29uc3QgZGVwcmVjaWF0aW9uRXhwZW5zZTogVmVoaWNsZUV4cGVuc2UgPSBuZXcgVmVoaWNsZUV4cGVuc2UoXG4gICAgICAtZGVwcmVjaWF0aW9ucy5nZXRDdXJyZW50WWVhckZvcmVjYXN0QW1vdW50KCksXG4gICAgICB2ZWhpY2xlQ2xhaW0ud29ya1VzYWdlLFxuICAgICAgJ0RlcHJlY2lhdGlvbidcbiAgICApO1xuXG4gICAgdGhpcy5pdGVtcy5wdXNoKC4uLltkZXByZWNpYXRpb25FeHBlbnNlLCAuLi50cmFuc2FjdGlvbkV4cGVuc2VzXSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -13,9 +13,9 @@ export class SalaryForecast extends SalaryForecastBase {
|
|
|
13
13
|
case SalaryForecastFrequencyEnum.ANNUAL:
|
|
14
14
|
return this.netPay / FinancialYear.monthsInYear;
|
|
15
15
|
case SalaryForecastFrequencyEnum.FORTNIGHTLY:
|
|
16
|
-
return this.netPay
|
|
16
|
+
return this.netPay * FinancialYear.weeksInYear / FinancialYear.monthsInYear / 2;
|
|
17
17
|
case SalaryForecastFrequencyEnum.WEEKLY:
|
|
18
|
-
return this.netPay / FinancialYear.
|
|
18
|
+
return this.netPay * FinancialYear.weeksInYear / FinancialYear.monthsInYear;
|
|
19
19
|
default:
|
|
20
20
|
return this.netPay;
|
|
21
21
|
}
|
|
@@ -28,4 +28,4 @@ __decorate([
|
|
|
28
28
|
__decorate([
|
|
29
29
|
Type(() => IncomeSource)
|
|
30
30
|
], SalaryForecast.prototype, "incomeSource", void 0);
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsYXJ5LWZvcmVjYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL21vZGVscy9pbmNvbWUtc291cmNlL3NhbGFyeS1mb3JlY2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGNBQWMsSUFBSSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsTUFBTSxPQUFPLGNBQWUsU0FBUSxrQkFBa0I7SUFPcEQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLFFBQVEsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN0QixLQUFLLDJCQUEyQixDQUFDLE1BQU07Z0JBQ3JDLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQ2xELEtBQUssMkJBQTJCLENBQUMsV0FBVztnQkFDMUMsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7WUFDbEYsS0FBSywyQkFBMkIsQ0FBQyxNQUFNO2dCQUNyQyxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQzlFO2dCQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUN0QjtJQUNILENBQUM7Q0FDRjtBQXJCVztJQURULFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUM1QyxNQUFNLEVBQUU7bURBQXFCO0FBRzlCO0lBREMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQztvREFDRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhbGFyeUZvcmVjYXN0IGFzIFNhbGFyeUZvcmVjYXN0QmFzZSB9IGZyb20gJy4uLy4uL2RiL01vZGVscy9pbmNvbWVTb3VyY2Uvc2FsYXJ5LWZvcmVjYXN0JztcbmltcG9ydCB7IEluY29tZVNvdXJjZSB9IGZyb20gJy4vaW5jb21lLXNvdXJjZSc7XG5pbXBvcnQgeyBJSW5jb21lU291cmNlRm9yZWNhc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEV4cG9zZSwgVHJhbnNmb3JtLCBUeXBlIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgU2FsYXJ5Rm9yZWNhc3RGcmVxdWVuY3lFbnVtIH0gZnJvbSAnLi4vLi4vZGIvRW51bXMvc2FsYXJ5LWZvcmVjYXN0LWZyZXF1ZW5jeS5lbnVtJztcbmltcG9ydCB7IEZpbmFuY2lhbFllYXIgfSBmcm9tICcuLi9maW5hbmNpYWwteWVhcic7XG5cbmV4cG9ydCBjbGFzcyBTYWxhcnlGb3JlY2FzdCBleHRlbmRzIFNhbGFyeUZvcmVjYXN0QmFzZSBpbXBsZW1lbnRzIElJbmNvbWVTb3VyY2VGb3JlY2FzdCB7XG4gIEBUcmFuc2Zvcm0oKHsgb2JqIH0pID0+IG9iai5uZXRQYXkgKyBvYmoudGF4KVxuICBARXhwb3NlKCkgZ3Jvc3NBbW91bnQ6IG51bWJlcjtcblxuICBAVHlwZSgoKSA9PiBJbmNvbWVTb3VyY2UpXG4gIGluY29tZVNvdXJjZTogSW5jb21lU291cmNlO1xuXG4gIGdldCB0YXhXaXRoaGVsZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdyb3NzQW1vdW50IC0gdGhpcy5uZXRQYXk7XG4gIH1cblxuICBnZXQgbW9udGhseUFtb3VudCgpOiBudW1iZXIge1xuICAgIHN3aXRjaCAodGhpcy5mcmVxdWVuY3kpIHtcbiAgICAgIGNhc2UgU2FsYXJ5Rm9yZWNhc3RGcmVxdWVuY3lFbnVtLkFOTlVBTDpcbiAgICAgICAgcmV0dXJuIHRoaXMubmV0UGF5IC8gRmluYW5jaWFsWWVhci5tb250aHNJblllYXI7XG4gICAgICBjYXNlIFNhbGFyeUZvcmVjYXN0RnJlcXVlbmN5RW51bS5GT1JUTklHSFRMWTpcbiAgICAgICAgcmV0dXJuIHRoaXMubmV0UGF5ICogRmluYW5jaWFsWWVhci53ZWVrc0luWWVhciAvIEZpbmFuY2lhbFllYXIubW9udGhzSW5ZZWFyIC8gMjtcbiAgICAgIGNhc2UgU2FsYXJ5Rm9yZWNhc3RGcmVxdWVuY3lFbnVtLldFRUtMWTpcbiAgICAgICAgcmV0dXJuIHRoaXMubmV0UGF5ICogRmluYW5jaWFsWWVhci53ZWVrc0luWWVhciAvIEZpbmFuY2lhbFllYXIubW9udGhzSW5ZZWFyO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMubmV0UGF5O1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -41,6 +41,9 @@ export class BorrowingReport extends BorrowingReportBase {
|
|
|
41
41
|
* surplus income to cover your debt obligations
|
|
42
42
|
*/
|
|
43
43
|
getNetSurplusRatio(profit, repaymentAmount) {
|
|
44
|
+
if (!(repaymentAmount + this.loanRepaymentAmount + this.otherLiabilities)) {
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
44
47
|
return (profit + this.netRentIncome + this.netSalary + this.spouseNetSalary - this.livingExpenses)
|
|
45
48
|
/ (repaymentAmount + this.loanRepaymentAmount + this.otherLiabilities);
|
|
46
49
|
}
|
|
@@ -48,4 +51,4 @@ export class BorrowingReport extends BorrowingReportBase {
|
|
|
48
51
|
__decorate([
|
|
49
52
|
Type(() => User)
|
|
50
53
|
], BorrowingReport.prototype, "user", void 0);
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9ycm93aW5nLXJlcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9tb2RlbHMvcHJvcGVydHkvYm9ycm93aW5nLXJlcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGVBQWUsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLDhCQUE4QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR2hEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLG1CQUFtQjtJQUF4RDs7UUFJRSxrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQix3QkFBbUIsR0FBVyxDQUFDLENBQUM7UUFDaEMscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBQzdCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO0lBeUM3QixDQUFDO0lBdkNDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FDZCxlQUFpQyxFQUNqQyxxQkFBNkMsRUFDN0MsZ0JBQXFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsRUFDMUUsU0FBMEIsWUFBWSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7UUFFM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDckIsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO2tCQUNyRSxJQUFJLDhCQUE4QixDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUM5RjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFO1lBQzNCLE1BQU0sQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDLG1CQUFtQixDQUFDO1NBQzVEO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsTUFBYyxFQUFFLGVBQXVCO1FBQ3pELE9BQU8sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWU7Y0FDeEYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFBO0lBQzVFLENBQUM7SUFFRDs7T0FFRztJQUNILGtCQUFrQixDQUFDLE1BQWMsRUFBRSxlQUF1QjtRQUN4RCxJQUFJLENBQUMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ3pFLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFFRCxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7Y0FDOUYsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FDRjtBQTlDQztJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7NkNBQ04iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb3Jyb3dpbmdSZXBvcnQgYXMgQm9ycm93aW5nUmVwb3J0QmFzZSB9IGZyb20gJy4uLy4uL2RiL01vZGVscy9wcm9wZXJ0eS9ib3Jyb3dpbmctcmVwb3J0JztcbmltcG9ydCB7IFR5cGUgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vdXNlcic7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uLCBJbmNvbWVTb3VyY2VGb3JlY2FzdENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBBbm51YWxDbGllbnREZXRhaWxzIH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB7IEluY29tZVNvdXJjZUZvcmVjYXN0LCBTYWxhcnlGb3JlY2FzdCB9IGZyb20gJy4uL2luY29tZS1zb3VyY2UnO1xuXG4vKipcbiAqIEJvcnJvd2luZyBwb3dlciByZXBvcnQsIHNob3dzIGlmIHUgY2FuIGFmZm9yZCBuZXcgcHJvcGVydHkgbG9hblxuICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy80NzE3NjA4OTYxL0JvcnJvd2luZytQb3dlcitSZXBvcnQrLStQcm9wZXJ0eStUYW5rXG4gKi9cbmV4cG9ydCBjbGFzcyBCb3Jyb3dpbmdSZXBvcnQgZXh0ZW5kcyBCb3Jyb3dpbmdSZXBvcnRCYXNlIHtcbiAgQFR5cGUoKCkgPT4gVXNlcilcbiAgdXNlcjogVXNlcjtcblxuICBuZXRSZW50SW5jb21lOiBudW1iZXIgPSAwO1xuICBsb2FuUmVwYXltZW50QW1vdW50OiBudW1iZXIgPSAwO1xuICBvdGhlckxpYWJpbGl0aWVzOiBudW1iZXIgPSAwO1xuICBsaXZpbmdFeHBlbnNlczogbnVtYmVyID0gMDtcblxuICAvKipcbiAgICogc29tZSBmaWVsZHMgY2FsY3VsYXRlZCBhdXRvbWF0aWNhbGx5IHVudGlsIHVzZXIgZmlsbGVkIHRoZW0gbWFudWFsbHlcbiAgICovXG4gIHN0YXRpYyBjYWxjdWxhdGUoXG4gICAgc2FsYXJ5Rm9yZWNhc3RzOiBTYWxhcnlGb3JlY2FzdFtdLFxuICAgIGluY29tZVNvdXJjZUZvcmVjYXN0czogSW5jb21lU291cmNlRm9yZWNhc3RbXSxcbiAgICBjbGllbnREZXRhaWxzOiBBbm51YWxDbGllbnREZXRhaWxzID0gcGxhaW5Ub0NsYXNzKEFubnVhbENsaWVudERldGFpbHMsIHt9KSxcbiAgICByZXBvcnQ6IEJvcnJvd2luZ1JlcG9ydCA9IHBsYWluVG9DbGFzcyhCb3Jyb3dpbmdSZXBvcnQsIHt9KVxuICApOiBCb3Jyb3dpbmdSZXBvcnQge1xuICAgIGlmICghcmVwb3J0Lm5ldFNhbGFyeSkge1xuICAgICAgcmVwb3J0Lm5ldFNhbGFyeSA9IG5ldyBDb2xsZWN0aW9uKHNhbGFyeUZvcmVjYXN0cykuc3VtQnkoJ21vbnRobHlBbW91bnQnKVxuICAgICAgICArIG5ldyBJbmNvbWVTb3VyY2VGb3JlY2FzdENvbGxlY3Rpb24oaW5jb21lU291cmNlRm9yZWNhc3RzKS5ib251c2VzLnN1bUJ5KCdtb250aGx5QW1vdW50Jyk7XG4gICAgfVxuICAgIGlmICghcmVwb3J0LnNwb3VzZU5ldFNhbGFyeSkge1xuICAgICAgcmVwb3J0LnNwb3VzZU5ldFNhbGFyeSA9IGNsaWVudERldGFpbHMuc3BvdXNlTW9udGhseUluY29tZTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVwb3J0O1xuICB9XG5cbiAgLyoqXG4gICAqIGZyZWUgbW9uZXkgYWZ0ZXIgZXhwZW5zZXNcbiAgICovXG4gIGdldE5ldEluY29tZVN1cnBsdXMocHJvZml0OiBudW1iZXIsIHJlcGF5bWVudEFtb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcHJvZml0ICsgdGhpcy5uZXRSZW50SW5jb21lICsgdGhpcy5uZXRTYWxhcnkgKyB0aGlzLnNwb3VzZU5ldFNhbGFyeSAtIHJlcGF5bWVudEFtb3VudFxuICAgICAgLSB0aGlzLmxvYW5SZXBheW1lbnRBbW91bnQgLSB0aGlzLm90aGVyTGlhYmlsaXRpZXMgLSB0aGlzLmxpdmluZ0V4cGVuc2VzXG4gIH1cblxuICAvKipcbiAgICogc3VycGx1cyBpbmNvbWUgdG8gY292ZXIgeW91ciBkZWJ0IG9ibGlnYXRpb25zXG4gICAqL1xuICBnZXROZXRTdXJwbHVzUmF0aW8ocHJvZml0OiBudW1iZXIsIHJlcGF5bWVudEFtb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoIShyZXBheW1lbnRBbW91bnQgKyB0aGlzLmxvYW5SZXBheW1lbnRBbW91bnQgKyB0aGlzLm90aGVyTGlhYmlsaXRpZXMpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gKHByb2ZpdCArIHRoaXMubmV0UmVudEluY29tZSArIHRoaXMubmV0U2FsYXJ5ICsgdGhpcy5zcG91c2VOZXRTYWxhcnkgLSB0aGlzLmxpdmluZ0V4cGVuc2VzKVxuICAgICAgLyAocmVwYXltZW50QW1vdW50ICsgdGhpcy5sb2FuUmVwYXltZW50QW1vdW50ICsgdGhpcy5vdGhlckxpYWJpbGl0aWVzKTtcbiAgfVxufVxuIl19
|
|
@@ -32,13 +32,16 @@ export class TransactionCalculationService {
|
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
|
-
* Get invoices
|
|
35
|
+
* Get invoices paid amounts grouped by invoice id
|
|
36
36
|
*/
|
|
37
|
-
|
|
37
|
+
getInvoicePaidAmountById(allocations, invoices) {
|
|
38
38
|
const allocationsByTransactionId = allocations.groupBy('transaction.id');
|
|
39
39
|
const dictionary = new Dictionary([]);
|
|
40
40
|
invoices.toArray().forEach((invoice) => {
|
|
41
|
-
|
|
41
|
+
// fully paid if user marked invoice as paid with cash
|
|
42
|
+
const amount = invoice.isPaidCash() ? invoice.grossPrice
|
|
43
|
+
: allocationsByTransactionId.merge(invoice.itemsCollection.mapBy('transaction.id')).amount || 0;
|
|
44
|
+
dictionary.add(invoice.id, amount);
|
|
42
45
|
});
|
|
43
46
|
return dictionary;
|
|
44
47
|
}
|
|
@@ -71,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
|
|
|
71
74
|
providedIn: 'root'
|
|
72
75
|
}]
|
|
73
76
|
}] });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tY2FsY3VsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbi1jYWxjdWxhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUF5QiwrQkFBK0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFNaEU7O0dBRUc7QUFJSCxNQUFNLE9BQU8sNkJBQTZCO0lBQ3hDOztPQUVHO0lBQ0gsa0JBQWtCLENBQUMsWUFBbUMsRUFBRSxXQUE0QztRQUNsRyxPQUFPLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDeEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLFdBQXdCLEVBQUUsV0FBNEM7UUFDaEYsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7O09BR0c7SUFDSCx3QkFBd0IsQ0FBQyxZQUFtQyxFQUFFLFdBQTRDO1FBQ3hHLE9BQU8sSUFBSSxxQkFBcUIsQ0FDOUIsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUF3QixFQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ3ZHLENBQUM7SUFDSixDQUFDO0lBRUQsc0JBQXNCLENBQUMsUUFBK0IsRUFBRSxXQUE0QztRQUNsRyxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFvQixFQUFFLEVBQUU7WUFDOUMsTUFBTSxz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Q1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU29sZUludm9pY2VDb2xsZWN0aW9uLCBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uLCBUcmFuc2FjdGlvbkNvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RpY3Rpb25hcnkvZGljdGlvbmFyeSc7XG5pbXBvcnQgeyBTb2xlSW52b2ljZSwgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkRpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb2xsZWN0aW9ucy9jb2xsZWN0aW9uLWRpY3Rpb25hcnknO1xuaW1wb3J0IHsgQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL2JhbmstdHJhbnNhY3Rpb24uY29sbGVjdGlvbic7XG5cblxuLyoqXG4gKiBAVE9ETyBBbGV4OiByZWZhY3RvciwgbW92ZSBtZXRob2RzIHRvIGNvbGxlY3Rpb25zIGFuZCBtb2RlbHMsIHJlbW92ZSB0aGlzIHNlcnZpY2VcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25DYWxjdWxhdGlvblNlcnZpY2Uge1xuICAvKipcbiAgICogU3VtIG9mIGFsbG9jYXRpb25zIGZvciBwYXNzZWQgdHJhbnNhY3Rpb25zXG4gICAqL1xuICBnZXRBbGxvY2F0ZWRBbW91bnQodHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbkNvbGxlY3Rpb24sIGFsbG9jYXRpb25zOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gYWxsb2NhdGlvbnMuZ2V0QnlUcmFuc2FjdGlvbnNJZHModHJhbnNhY3Rpb25zLmdldElkcygpKS5hbW91bnQ7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdHJhbnNhY3Rpb24gaXMgYWxsb2NhdGVkXG4gICAqL1xuICBpc0FsbG9jYXRlZCh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24sIGFsbG9jYXRpb25zOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLmlzQWxsb2NhdGVkKGFsbG9jYXRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29sbGVjdGlvbiBvZiBhbGxvY2F0ZWQgdHJhbnNhY3Rpb25zXG4gICAqIEBUT0RPIEFsZXg6IGNvbnNpZGVyIHRvIG1vdmUgdG8gY29sbGVjdGlvblxuICAgKi9cbiAgZ2V0QWxsb2NhdGVkVHJhbnNhY3Rpb25zKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25Db2xsZWN0aW9uLCBhbGxvY2F0aW9uczogVHJhbnNhY3Rpb25BbGxvY2F0aW9uQ29sbGVjdGlvbik6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbkNvbGxlY3Rpb24oXG4gICAgICB0cmFuc2FjdGlvbnMuaXRlbXMuZmlsdGVyKCh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IHRyYW5zYWN0aW9uLmlzQWxsb2NhdGVkKGFsbG9jYXRpb25zKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0VW5hbGxvY2F0ZWRJbnZvaWNlcyhpbnZvaWNlczogU29sZUludm9pY2VDb2xsZWN0aW9uLCBhbGxvY2F0aW9uczogVHJhbnNhY3Rpb25BbGxvY2F0aW9uQ29sbGVjdGlvbik6IFNvbGVJbnZvaWNlQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIGludm9pY2VzLmZpbHRlcigoaW52b2ljZTogU29sZUludm9pY2UpID0+IHtcbiAgICAgIGNvbnN0IGludm9pY2VBbGxvY2F0ZWRBbW91bnQ6IG51bWJlciA9IGFsbG9jYXRpb25zLmZpbHRlckJ5KCd0cmFuc2FjdGlvbi5pZCcsIGludm9pY2UuZ2V0VHJhbnNhY3Rpb25zSWRzKCkpLnN1bUJ5KCdhbW91bnQnKTtcbiAgICAgIHJldHVybiBpbnZvaWNlLmdyb3NzUHJpY2UgPiBpbnZvaWNlQWxsb2NhdGVkQW1vdW50O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBpbnZvaWNlcyBwYWlkIGFtb3VudHMgZ3JvdXBlZCBieSBpbnZvaWNlIGlkXG4gICAqL1xuICBnZXRJbnZvaWNlUGFpZEFtb3VudEJ5SWQoYWxsb2NhdGlvbnM6IFRyYW5zYWN0aW9uQWxsb2NhdGlvbkNvbGxlY3Rpb24sIGludm9pY2VzOiBTb2xlSW52b2ljZUNvbGxlY3Rpb24pOiBEaWN0aW9uYXJ5PG51bWJlcj4ge1xuICAgIGNvbnN0IGFsbG9jYXRpb25zQnlUcmFuc2FjdGlvbklkID0gYWxsb2NhdGlvbnMuZ3JvdXBCeSgndHJhbnNhY3Rpb24uaWQnKTtcbiAgICBjb25zdCBkaWN0aW9uYXJ5OiBEaWN0aW9uYXJ5PG51bWJlcj4gPSBuZXcgRGljdGlvbmFyeShbXSk7XG5cbiAgICBpbnZvaWNlcy50b0FycmF5KCkuZm9yRWFjaCgoaW52b2ljZTogU29sZUludm9pY2UpID0+IHtcbiAgICAgIC8vIGZ1bGx5IHBhaWQgaWYgdXNlciBtYXJrZWQgaW52b2ljZSBhcyBwYWlkIHdpdGggY2FzaFxuICAgICAgY29uc3QgYW1vdW50ID0gaW52b2ljZS5pc1BhaWRDYXNoKCkgPyBpbnZvaWNlLmdyb3NzUHJpY2VcbiAgICAgICAgOiBhbGxvY2F0aW9uc0J5VHJhbnNhY3Rpb25JZC5tZXJnZShpbnZvaWNlLml0ZW1zQ29sbGVjdGlvbi5tYXBCeSgndHJhbnNhY3Rpb24uaWQnKSkuYW1vdW50IHx8IDA7XG4gICAgICBkaWN0aW9uYXJ5LmFkZChpbnZvaWNlLmlkLCBhbW91bnQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRpY3Rpb25hcnk7XG4gIH1cblxuICBnZXRJbnZvaWNlc1VuYWxsb2NhdGVkQW1vdW50KGludm9pY2VzOiBTb2xlSW52b2ljZUNvbGxlY3Rpb24sIGFsbG9jYXRpb25zOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW52b2ljZXMuc3VtQnkoJ2dyb3NzUHJpY2UnKSAtIGFsbG9jYXRpb25zLmZpbHRlckJ5KCd0cmFuc2FjdGlvbi5pZCcsIGludm9pY2VzLmdldFRyYW5zYWN0aW9uc0lkcygpKS5zdW1CeSgnYW1vdW50Jyk7XG4gIH1cblxuICBnZXRUcmFuc2FjdGlvbnNCeUludm9pY2VzKGludm9pY2VzOiBTb2xlSW52b2ljZUNvbGxlY3Rpb24sIHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25Db2xsZWN0aW9uKTogQ29sbGVjdGlvbkRpY3Rpb25hcnk8VHJhbnNhY3Rpb25Db2xsZWN0aW9uPiB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25zQnlJbnZvaWNlcyA9IG5ldyBUcmFuc2FjdGlvbkNvbGxlY3Rpb24oW10pLmdyb3VwQnkoKTtcblxuICAgIGludm9pY2VzLnRvQXJyYXkoKS5mb3JFYWNoKChpbnZvaWNlOiBTb2xlSW52b2ljZSkgPT4ge1xuICAgICAgdHJhbnNhY3Rpb25zQnlJbnZvaWNlcy5hZGQoaW52b2ljZS5pZCwgdHJhbnNhY3Rpb25zLmZpbHRlckJ5KCdpZCcsIGludm9pY2UuZ2V0VHJhbnNhY3Rpb25zSWRzKCkpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0cmFuc2FjdGlvbnNCeUludm9pY2VzO1xuICB9XG5cbiAgZ2V0QWxsb2NhdGlvbnNCeUludm9pY2VzKGludm9pY2VzOiBTb2xlSW52b2ljZUNvbGxlY3Rpb24sIGFsbG9jYXRpb25zOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uKTogQ29sbGVjdGlvbkRpY3Rpb25hcnk8VHJhbnNhY3Rpb25BbGxvY2F0aW9uQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IGFsbG9jYXRpb25zQnlJbnZvaWNlcyA9IG5ldyBUcmFuc2FjdGlvbkFsbG9jYXRpb25Db2xsZWN0aW9uKFtdKS5ncm91cEJ5KCk7XG5cbiAgICBpbnZvaWNlcy50b0FycmF5KCkuZm9yRWFjaCgoaW52b2ljZTogU29sZUludm9pY2UpID0+IHtcbiAgICAgIGFsbG9jYXRpb25zQnlJbnZvaWNlcy5hZGQoaW52b2ljZS5pZCwgYWxsb2NhdGlvbnMuZmlsdGVyQnkoJ3RyYW5zYWN0aW9uLmlkJywgaW52b2ljZS5nZXRUcmFuc2FjdGlvbnNJZHMoKSkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFsbG9jYXRpb25zQnlJbnZvaWNlcztcbiAgfVxuXG4gIGdldEJhbmtUcmFuc2FjdGlvbnNVbmFsbG9jYXRlZEFtb3VudChiYW5rVHJhbnNhY3Rpb25zOiBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uLCBhbGxvY2F0aW9uczogVHJhbnNhY3Rpb25BbGxvY2F0aW9uQ29sbGVjdGlvbik6IG51bWJlciB7XG4gICAgcmV0dXJuIGJhbmtUcmFuc2FjdGlvbnMuc3VtQnkoJ2Ftb3VudCcpIC0gYWxsb2NhdGlvbnMuZ2V0QnlCYW5rVHJhbnNhY3Rpb25zSWRzKGJhbmtUcmFuc2FjdGlvbnMuZ2V0SWRzKCkpLnN1bUJ5KCdhbW91bnQnKTtcbiAgfVxufVxuIl19
|