Money tracker: accounts can be left out of total wealth (include_in_total)
Deploy production / deploy (push) Successful in 2m32s
Deploy production / deploy (push) Successful in 2m32s
Adds money.accounts.include_in_total (default true). Excluded accounts keep their own balance and line, but are left out of net worth, invested, this month, the projection and the total/All accounts lines.
This commit is contained in:
1 parent
6f82d1350e
commit
a022c45499
7 files changed
+13822
-14
No files matched your search
@@ -280,4 +280,32 @@ describe('history range', () => {
|
||||
]);
|
||||
expect(clipSeries(series, null)).toBe(series);
|
||||
});
|
||||
|
||||
it('leaves accounts with includeInTotal false out of the totals but keeps their own line', () => {
|
||||
const accounts = [
|
||||
{ id: 1, name: 'Bank', kind: 'spendable', openingBalanceCents: 1000 },
|
||||
{ id: 2, name: 'Parents', kind: 'spendable', openingBalanceCents: 0, includeInTotal: false }
|
||||
];
|
||||
const actual = [
|
||||
{ accountId: 2, date: '2019-03-01', amountCents: 1_000_000 },
|
||||
{ accountId: 2, date: '2019-04-01', amountCents: -1_000_000 },
|
||||
{ accountId: 1, date: '2019-04-01', amountCents: 500 }
|
||||
];
|
||||
const series = balanceSeries(accounts, actual);
|
||||
expect(series[1].points.map((point) => point.value)).toEqual([1_000_000, 0]);
|
||||
expect(series.at(-1)!.points.map((point) => point.value)).toEqual([1000, 1500]);
|
||||
const balances = accountBalances(accounts, actual);
|
||||
const future = [
|
||||
{ accountId: 2, date: '2026-10-01', amountCents: 9999 },
|
||||
{ accountId: 1, date: '2026-10-01', amountCents: 100 }
|
||||
];
|
||||
const projection = wealthProjection(accounts, balances, future, [], [], null, '2026-09-23');
|
||||
expect(projection[0].points[0].value).toBe(1500);
|
||||
expect(projection[0].points.at(-1)!.value).toBe(1600);
|
||||
const [, spendable] = wealthTimeline(accounts, actual, projection, '2026-09-23', 'split');
|
||||
expect(spendable.points.slice(0, 2).map((point) => point.value)).toEqual([1000, 1500]);
|
||||
const byAccount = wealthTimeline(accounts, actual, projection, '2026-09-23', 'accounts');
|
||||
expect(byAccount.map((line) => line.label)).toEqual(['Bank', 'Parents', 'Total']);
|
||||
expect(byAccount.at(-1)!.points[0].value).toBe(1000);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user