taxtank-core 0.30.136 → 0.30.137
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/models/property/borrowing-report.mjs +4 -1
- package/esm2020/lib/services/transaction/transaction-calculation.service.mjs +7 -4
- package/fesm2015/taxtank-core.mjs +9 -3
- package/fesm2015/taxtank-core.mjs.map +1 -1
- package/fesm2020/taxtank-core.mjs +9 -3
- package/fesm2020/taxtank-core.mjs.map +1 -1
- package/lib/services/transaction/transaction-calculation.service.d.ts +2 -2
- package/package.json +1 -1
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9ycm93aW5nLXJlcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9tb2RlbHMvcHJvcGVydHkvYm9ycm93aW5nLXJlcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGVBQWUsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLDhCQUE4QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR2hEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLG1CQUFtQjtJQUF4RDs7UUFJRSxrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQix3QkFBbUIsR0FBVyxDQUFDLENBQUM7UUFDaEMscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBQzdCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO0lBeUM3QixDQUFDO0lBdkNDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FDZCxlQUFpQyxFQUNqQyxxQkFBNkMsRUFDN0MsZ0JBQXFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsRUFDMUUsU0FBMEIsWUFBWSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7UUFFM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDckIsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO2tCQUNyRSxJQUFJLDhCQUE4QixDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUM5RjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFO1lBQzNCLE1BQU0sQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDLG1CQUFtQixDQUFDO1NBQzVEO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsTUFBYyxFQUFFLGVBQXVCO1FBQ3pELE9BQU8sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWU7Y0FDeEYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFBO0lBQzVFLENBQUM7SUFFRDs7T0FFRztJQUNILGtCQUFrQixDQUFDLE1BQWMsRUFBRSxlQUF1QjtRQUN4RCxJQUFJLENBQUMsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQzNFLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFFRCxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7Y0FDOUYsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FDRjtBQTlDQztJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7NkNBQ04iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb3Jyb3dpbmdSZXBvcnQgYXMgQm9ycm93aW5nUmVwb3J0QmFzZSB9IGZyb20gJy4uLy4uL2RiL01vZGVscy9wcm9wZXJ0eS9ib3Jyb3dpbmctcmVwb3J0JztcbmltcG9ydCB7IFR5cGUgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vdXNlcic7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uLCBJbmNvbWVTb3VyY2VGb3JlY2FzdENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBBbm51YWxDbGllbnREZXRhaWxzIH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB7IEluY29tZVNvdXJjZUZvcmVjYXN0LCBTYWxhcnlGb3JlY2FzdCB9IGZyb20gJy4uL2luY29tZS1zb3VyY2UnO1xuXG4vKipcbiAqIEJvcnJvd2luZyBwb3dlciByZXBvcnQsIHNob3dzIGlmIHUgY2FuIGFmZm9yZCBuZXcgcHJvcGVydHkgbG9hblxuICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy80NzE3NjA4OTYxL0JvcnJvd2luZytQb3dlcitSZXBvcnQrLStQcm9wZXJ0eStUYW5rXG4gKi9cbmV4cG9ydCBjbGFzcyBCb3Jyb3dpbmdSZXBvcnQgZXh0ZW5kcyBCb3Jyb3dpbmdSZXBvcnRCYXNlIHtcbiAgQFR5cGUoKCkgPT4gVXNlcilcbiAgdXNlcjogVXNlcjtcblxuICBuZXRSZW50SW5jb21lOiBudW1iZXIgPSAwO1xuICBsb2FuUmVwYXltZW50QW1vdW50OiBudW1iZXIgPSAwO1xuICBvdGhlckxpYWJpbGl0aWVzOiBudW1iZXIgPSAwO1xuICBsaXZpbmdFeHBlbnNlczogbnVtYmVyID0gMDtcblxuICAvKipcbiAgICogc29tZSBmaWVsZHMgY2FsY3VsYXRlZCBhdXRvbWF0aWNhbGx5IHVudGlsIHVzZXIgZmlsbGVkIHRoZW0gbWFudWFsbHlcbiAgICovXG4gIHN0YXRpYyBjYWxjdWxhdGUoXG4gICAgc2FsYXJ5Rm9yZWNhc3RzOiBTYWxhcnlGb3JlY2FzdFtdLFxuICAgIGluY29tZVNvdXJjZUZvcmVjYXN0czogSW5jb21lU291cmNlRm9yZWNhc3RbXSxcbiAgICBjbGllbnREZXRhaWxzOiBBbm51YWxDbGllbnREZXRhaWxzID0gcGxhaW5Ub0NsYXNzKEFubnVhbENsaWVudERldGFpbHMsIHt9KSxcbiAgICByZXBvcnQ6IEJvcnJvd2luZ1JlcG9ydCA9IHBsYWluVG9DbGFzcyhCb3Jyb3dpbmdSZXBvcnQsIHt9KVxuICApOiBCb3Jyb3dpbmdSZXBvcnQge1xuICAgIGlmICghcmVwb3J0Lm5ldFNhbGFyeSkge1xuICAgICAgcmVwb3J0Lm5ldFNhbGFyeSA9IG5ldyBDb2xsZWN0aW9uKHNhbGFyeUZvcmVjYXN0cykuc3VtQnkoJ21vbnRobHlBbW91bnQnKVxuICAgICAgICArIG5ldyBJbmNvbWVTb3VyY2VGb3JlY2FzdENvbGxlY3Rpb24oaW5jb21lU291cmNlRm9yZWNhc3RzKS5ib251c2VzLnN1bUJ5KCdtb250aGx5QW1vdW50Jyk7XG4gICAgfVxuICAgIGlmICghcmVwb3J0LnNwb3VzZU5ldFNhbGFyeSkge1xuICAgICAgcmVwb3J0LnNwb3VzZU5ldFNhbGFyeSA9IGNsaWVudERldGFpbHMuc3BvdXNlTW9udGhseUluY29tZTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVwb3J0O1xuICB9XG5cbiAgLyoqXG4gICAqIGZyZWUgbW9uZXkgYWZ0ZXIgZXhwZW5zZXNcbiAgICovXG4gIGdldE5ldEluY29tZVN1cnBsdXMocHJvZml0OiBudW1iZXIsIHJlcGF5bWVudEFtb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcHJvZml0ICsgdGhpcy5uZXRSZW50SW5jb21lICsgdGhpcy5uZXRTYWxhcnkgKyB0aGlzLnNwb3VzZU5ldFNhbGFyeSAtIHJlcGF5bWVudEFtb3VudFxuICAgICAgLSB0aGlzLmxvYW5SZXBheW1lbnRBbW91bnQgLSB0aGlzLm90aGVyTGlhYmlsaXRpZXMgLSB0aGlzLmxpdmluZ0V4cGVuc2VzXG4gIH1cblxuICAvKipcbiAgICogc3VycGx1cyBpbmNvbWUgdG8gY292ZXIgeW91ciBkZWJ0IG9ibGlnYXRpb25zXG4gICAqL1xuICBnZXROZXRTdXJwbHVzUmF0aW8ocHJvZml0OiBudW1iZXIsIHJlcGF5bWVudEFtb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoIShyZXBheW1lbnRBbW91bnQgJiYgdGhpcy5sb2FuUmVwYXltZW50QW1vdW50ICYmIHRoaXMub3RoZXJMaWFiaWxpdGllcykpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiAocHJvZml0ICsgdGhpcy5uZXRSZW50SW5jb21lICsgdGhpcy5uZXRTYWxhcnkgKyB0aGlzLnNwb3VzZU5ldFNhbGFyeSAtIHRoaXMubGl2aW5nRXhwZW5zZXMpXG4gICAgICAvIChyZXBheW1lbnRBbW91bnQgKyB0aGlzLmxvYW5SZXBheW1lbnRBbW91bnQgKyB0aGlzLm90aGVyTGlhYmlsaXRpZXMpO1xuICB9XG59XG4iXX0=
|
|
@@ -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
|
|
@@ -6030,6 +6030,9 @@ class BorrowingReport extends BorrowingReport$1 {
|
|
|
6030
6030
|
* surplus income to cover your debt obligations
|
|
6031
6031
|
*/
|
|
6032
6032
|
getNetSurplusRatio(profit, repaymentAmount) {
|
|
6033
|
+
if (!(repaymentAmount && this.loanRepaymentAmount && this.otherLiabilities)) {
|
|
6034
|
+
return 0;
|
|
6035
|
+
}
|
|
6033
6036
|
return (profit + this.netRentIncome + this.netSalary + this.spouseNetSalary - this.livingExpenses)
|
|
6034
6037
|
/ (repaymentAmount + this.loanRepaymentAmount + this.otherLiabilities);
|
|
6035
6038
|
}
|
|
@@ -20216,13 +20219,16 @@ class TransactionCalculationService {
|
|
|
20216
20219
|
});
|
|
20217
20220
|
}
|
|
20218
20221
|
/**
|
|
20219
|
-
* Get invoices
|
|
20222
|
+
* Get invoices paid amounts grouped by invoice id
|
|
20220
20223
|
*/
|
|
20221
|
-
|
|
20224
|
+
getInvoicePaidAmountById(allocations, invoices) {
|
|
20222
20225
|
const allocationsByTransactionId = allocations.groupBy('transaction.id');
|
|
20223
20226
|
const dictionary = new Dictionary([]);
|
|
20224
20227
|
invoices.toArray().forEach((invoice) => {
|
|
20225
|
-
|
|
20228
|
+
// fully paid if user marked invoice as paid with cash
|
|
20229
|
+
const amount = invoice.isPaidCash() ? invoice.grossPrice
|
|
20230
|
+
: allocationsByTransactionId.merge(invoice.itemsCollection.mapBy('transaction.id')).amount || 0;
|
|
20231
|
+
dictionary.add(invoice.id, amount);
|
|
20226
20232
|
});
|
|
20227
20233
|
return dictionary;
|
|
20228
20234
|
}
|