From df80c103b3840b579f91e9acbdc98942715ebf5b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 29 Jul 2026 17:47:25 +0200 Subject: [PATCH] Ignore future-dated account balances in the portfolio calculation --- .../app/account-balance/account-balance.service.ts | 2 +- apps/api/src/app/account/account.service.ts | 2 +- apps/api/src/app/activities/activities.service.ts | 7 ++++++- apps/api/src/helper/account.helper.ts | 13 ++++++++----- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/apps/api/src/app/account-balance/account-balance.service.ts b/apps/api/src/app/account-balance/account-balance.service.ts index 422907e082..29c7f28872 100644 --- a/apps/api/src/app/account-balance/account-balance.service.ts +++ b/apps/api/src/app/account-balance/account-balance.service.ts @@ -120,7 +120,7 @@ export class AccountBalanceService { const endOfTodayDate = endOfToday(); for (const { accountId, date, valueInBaseCurrency } of balances) { - if (isAccountBalanceInFuture(date, endOfTodayDate)) { + if (isAccountBalanceInFuture({ date, endOfTodayDate })) { continue; } diff --git a/apps/api/src/app/account/account.service.ts b/apps/api/src/app/account/account.service.ts index c2ed7b8fed..7f0451101c 100644 --- a/apps/api/src/app/account/account.service.ts +++ b/apps/api/src/app/account/account.service.ts @@ -139,7 +139,7 @@ export class AccountService { // The balances are ordered by date descending, hence the first account // balance which is not in the future reflects the current balance account.balances.find(({ date }) => { - return !isAccountBalanceInFuture(date, endOfTodayDate); + return !isAccountBalanceInFuture({ date, endOfTodayDate }); })?.value ?? 0, tags: isTagsIncluded ? (account.tags as unknown as { tag: Tag }[]).map(({ tag }) => { diff --git a/apps/api/src/app/activities/activities.service.ts b/apps/api/src/app/activities/activities.service.ts index 2fcfd5a7a2..7d6e822c52 100644 --- a/apps/api/src/app/activities/activities.service.ts +++ b/apps/api/src/app/activities/activities.service.ts @@ -472,7 +472,12 @@ export class ActivitiesService { let currentBalanceInBaseCurrency = 0; for (const balanceItem of balances) { - if (isAccountBalanceInFuture(balanceItem.date, endOfTodayDate)) { + if ( + isAccountBalanceInFuture({ + endOfTodayDate, + date: balanceItem.date + }) + ) { continue; } diff --git a/apps/api/src/helper/account.helper.ts b/apps/api/src/helper/account.helper.ts index 317b0c7ce8..8e7520d0a9 100644 --- a/apps/api/src/helper/account.helper.ts +++ b/apps/api/src/helper/account.helper.ts @@ -18,9 +18,12 @@ export function getWhereAccountBalanceNotInFuture(): Prisma.AccountBalanceWhereI }; } -export function isAccountBalanceInFuture( - aDate: Date, - aEndOfToday = endOfToday() -) { - return isAfter(aDate, aEndOfToday); +export function isAccountBalanceInFuture({ + date, + endOfTodayDate = endOfToday() +}: { + date: Date; + endOfTodayDate?: Date; +}) { + return isAfter(date, endOfTodayDate); }