diff --git a/apps/api/src/app/portfolio/portfolio.controller.ts b/apps/api/src/app/portfolio/portfolio.controller.ts index 2385b1bb9..748850204 100644 --- a/apps/api/src/app/portfolio/portfolio.controller.ts +++ b/apps/api/src/app/portfolio/portfolio.controller.ts @@ -96,23 +96,15 @@ export class PortfolioController { filterByTags }); - const { - accounts, - filteredValueInBaseCurrency, - filteredValueInPercentage, - hasErrors, - holdings, - platforms, - summary, - totalValueInBaseCurrency - } = await this.portfolioService.getDetails({ - dateRange, - filters, - impersonationId, - userId: this.request.user.id, - withLiabilities: true, - withSummary: true - }); + const { accounts, hasErrors, holdings, platforms, summary } = + await this.portfolioService.getDetails({ + dateRange, + filters, + impersonationId, + userId: this.request.user.id, + withLiabilities: true, + withSummary: true + }); if (hasErrors || hasNotDefinedValuesInObject(holdings)) { hasError = true; @@ -167,19 +159,21 @@ export class PortfolioController { 'currentGrossPerformanceWithCurrencyEffect', 'currentNetPerformance', 'currentNetPerformanceWithCurrencyEffect', + 'currentNetWorth', 'currentValue', 'dividendInBaseCurrency', 'emergencyFund', 'excludedAccountsAndActivities', 'fees', + 'filteredValueInBaseCurrency', 'fireWealth', 'interest', 'items', 'liabilities', - 'netWorth', 'totalBuy', 'totalInvestment', - 'totalSell' + 'totalSell', + 'totalValueInBaseCurrency' ]); } @@ -206,12 +200,9 @@ export class PortfolioController { return { accounts, - filteredValueInBaseCurrency, - filteredValueInPercentage, hasError, holdings, platforms, - totalValueInBaseCurrency, summary: portfolioSummary }; } diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index caa5b3c00..9880abcc4 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -644,6 +644,7 @@ export class PortfolioService { if (withSummary) { summary = await this.getSummary({ + filteredValueInBaseCurrency, holdings, impersonationId, userCurrency, @@ -661,12 +662,7 @@ export class PortfolioService { holdings, platforms, summary, - filteredValueInBaseCurrency: filteredValueInBaseCurrency.toNumber(), - filteredValueInPercentage: summary?.netWorth - ? filteredValueInBaseCurrency.div(summary.netWorth).toNumber() - : undefined, - hasErrors: currentPositions.hasErrors, - totalValueInBaseCurrency: summary?.netWorth + hasErrors: currentPositions.hasErrors }; } @@ -1724,6 +1720,7 @@ export class PortfolioService { private async getSummary({ balanceInBaseCurrency, emergencyFundPositionsValueInBaseCurrency, + filteredValueInBaseCurrency, holdings, impersonationId, userCurrency, @@ -1731,6 +1728,7 @@ export class PortfolioService { }: { balanceInBaseCurrency: number; emergencyFundPositionsValueInBaseCurrency: number; + filteredValueInBaseCurrency: Big; holdings: PortfolioDetails['holdings']; impersonationId: string; userCurrency: string; @@ -1912,7 +1910,6 @@ export class PortfolioService { interest, items, liabilities, - netWorth, totalBuy, totalSell, committedFunds: committedFunds.toNumber(), @@ -1924,12 +1921,17 @@ export class PortfolioService { .toNumber(), total: emergencyFund.toNumber() }, + filteredValueInBaseCurrency: filteredValueInBaseCurrency.toNumber(), + filteredValueInPercentage: netWorth + ? filteredValueInBaseCurrency.div(netWorth).toNumber() + : undefined, fireWealth: new Big(performanceInformation.performance.currentValue) .minus(emergencyFundPositionsValueInBaseCurrency) .toNumber(), ordersCount: activities.filter(({ type }) => { return type === 'BUY' || type === 'SELL'; - }).length + }).length, + totalValueInBaseCurrency: netWorth }; } diff --git a/apps/api/src/interceptors/redact-values-in-response.interceptor.ts b/apps/api/src/interceptors/redact-values-in-response.interceptor.ts index b1889cf9d..78ae918d2 100644 --- a/apps/api/src/interceptors/redact-values-in-response.interceptor.ts +++ b/apps/api/src/interceptors/redact-values-in-response.interceptor.ts @@ -49,7 +49,6 @@ export class RedactValuesInResponseInterceptor 'dividendInBaseCurrency', 'fee', 'feeInBaseCurrency', - 'filteredValueInBaseCurrency', 'grossPerformance', 'grossPerformanceWithCurrencyEffect', 'investment', @@ -58,7 +57,6 @@ export class RedactValuesInResponseInterceptor 'quantity', 'symbolMapping', 'totalBalanceInBaseCurrency', - 'totalValueInBaseCurrency', 'unitPrice', 'value', 'valueInBaseCurrency' diff --git a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html index 096271926..347767011 100644 --- a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html +++ b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -282,7 +282,7 @@ [isCurrency]="true" [locale]="locale" [unit]="baseCurrency" - [value]="isLoading ? undefined : summary?.netWorth" + [value]="isLoading ? undefined : summary?.totalValueInBaseCurrency" /> diff --git a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts index 330ae4227..67ad82316 100644 --- a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts @@ -281,7 +281,6 @@ export class AllocationsPageComponent implements OnDestroy, OnInit { this.platforms = {}; this.portfolioDetails = { accounts: {}, - filteredValueInPercentage: 0, holdings: {}, platforms: {}, summary: undefined diff --git a/apps/client/src/app/pages/portfolio/allocations/allocations-page.html b/apps/client/src/app/pages/portfolio/allocations/allocations-page.html index 312061775..04bf96f39 100644 --- a/apps/client/src/app/pages/portfolio/allocations/allocations-page.html +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.html @@ -18,7 +18,7 @@ [value]=" isLoading ? undefined - : portfolioDetails?.filteredValueInPercentage + : portfolioDetails?.summary?.filteredValueInPercentage " /> @@ -26,10 +26,11 @@ diff --git a/libs/common/src/lib/interfaces/portfolio-details.interface.ts b/libs/common/src/lib/interfaces/portfolio-details.interface.ts index 35a9cf6f8..611ed8056 100644 --- a/libs/common/src/lib/interfaces/portfolio-details.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-details.interface.ts @@ -13,8 +13,6 @@ export interface PortfolioDetails { valueInPercentage?: number; }; }; - filteredValueInBaseCurrency?: number; - filteredValueInPercentage?: number; holdings: { [symbol: string]: PortfolioPosition }; platforms: { [id: string]: { @@ -26,5 +24,4 @@ export interface PortfolioDetails { }; }; summary?: PortfolioSummary; - totalValueInBaseCurrency?: number; } diff --git a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts index aaf80c0cd..de04dc24c 100644 --- a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts @@ -13,13 +13,15 @@ export interface PortfolioSummary extends PortfolioPerformance { }; excludedAccountsAndActivities: number; fees: number; + filteredValueInBaseCurrency?: number; + filteredValueInPercentage?: number; fireWealth: number; firstOrderDate: Date; interest: number; items: number; liabilities: number; - netWorth: number; ordersCount: number; totalBuy: number; totalSell: number; + totalValueInBaseCurrency?: number; }