diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts index d2b3c0625..ac77fd111 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts @@ -405,6 +405,7 @@ export abstract class PortfolioCalculator { feeInBaseCurrency, timeWeightedInvestment, timeWeightedInvestmentWithCurrencyEffect, + assetSubClass: item.assetSubClass, dividend: totalDividend, dividendInBaseCurrency: totalDividendInBaseCurrency, averagePrice: item.averagePrice, diff --git a/apps/api/src/app/portfolio/interfaces/transaction-point-symbol.interface.ts b/apps/api/src/app/portfolio/interfaces/transaction-point-symbol.interface.ts index d81b67ce6..14e2e1f37 100644 --- a/apps/api/src/app/portfolio/interfaces/transaction-point-symbol.interface.ts +++ b/apps/api/src/app/portfolio/interfaces/transaction-point-symbol.interface.ts @@ -1,8 +1,8 @@ -import { DataSource, Tag } from '@prisma/client'; +import { AssetSubClass, DataSource, Tag } from '@prisma/client'; import { Big } from 'big.js'; export interface TransactionPointSymbol { - assetSubClass?: string; + assetSubClass: AssetSubClass; averagePrice: Big; currency: string; dataSource: DataSource; diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 79afeefd0..ca756fd75 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -564,6 +564,7 @@ export class PortfolioService { } for (const { + assetSubClass, currency, dividend, firstBuyDate, @@ -607,6 +608,7 @@ export class PortfolioService { } holdings[symbol] = { + assetSubClass, currency, markets, marketsAdvanced, @@ -618,7 +620,6 @@ export class PortfolioService { ? 0 : valueInBaseCurrency.div(filteredValueInBaseCurrency).toNumber(), assetClass: assetProfile?.assetClass, - assetSubClass: assetProfile?.assetSubClass, countries: assetProfile?.countries, dataSource: assetProfile?.dataSource, dateOfFirstActivity: parseDate(firstBuyDate), @@ -640,7 +641,10 @@ export class PortfolioService { }; }) ?? [], investment: investment.toNumber(), - name: assetProfile?.name, + name: + assetSubClass === AssetSubClass.CASH + ? `${symbol} (Cash)` + : assetProfile?.name, netPerformance: netPerformance?.toNumber() ?? 0, netPerformancePercent: netPerformancePercentage?.toNumber() ?? 0, netPerformancePercentWithCurrencyEffect: diff --git a/libs/common/src/lib/models/timeline-position.ts b/libs/common/src/lib/models/timeline-position.ts index f683c0951..0dce72b21 100644 --- a/libs/common/src/lib/models/timeline-position.ts +++ b/libs/common/src/lib/models/timeline-position.ts @@ -4,11 +4,13 @@ import { } from '@ghostfolio/common/class-transformer'; import { DateRange } from '@ghostfolio/common/types'; -import { DataSource, Tag } from '@prisma/client'; +import { AssetSubClass, DataSource, Tag } from '@prisma/client'; import { Big } from 'big.js'; import { Transform, Type } from 'class-transformer'; export class TimelinePosition { + assetSubClass: AssetSubClass; + @Transform(transformToBig, { toClassOnly: true }) @Type(() => Big) averagePrice: Big;