diff --git a/CHANGELOG.md b/CHANGELOG.md index 28d3b6ea0..8c66c9c07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Deprecated `firstBuyDate` in favor of `dateOfFirstActivity` in the endpoint `GET api/v1/portfolio/holding/:dataSource/:symbol` - Upgraded `countries-list` from version `3.2.0` to `3.2.2` ## 2.231.0 - 2026-01-17 diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index 3f8bd2cde..7e8e333b9 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -82,7 +82,7 @@ export class ImportService { filterBySymbol: symbol }); - const { firstBuyDate, historicalData } = holding; + const { dateOfFirstActivity, historicalData } = holding; const [{ accounts }, { activities }, [assetProfile], dividends] = await Promise.all([ @@ -95,7 +95,7 @@ export class ImportService { filters, userCurrency, userId, - startDate: parseDate(firstBuyDate) + startDate: parseDate(dateOfFirstActivity) }), this.symbolProfileService.getSymbolProfiles([ { @@ -106,7 +106,7 @@ export class ImportService { await this.dataProviderService.getDividends({ dataSource, symbol, - from: parseDate(firstBuyDate), + from: parseDate(dateOfFirstActivity), granularity: 'day', to: new Date() }) diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 5fc2224eb..9a6f6af62 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -923,6 +923,7 @@ export class PortfolioService { activitiesCount: transactionCount, averagePrice: averagePrice.toNumber(), dataProviderInfo: portfolioCalculator.getDataProviderInfos()?.[0], + dateOfFirstActivity: firstBuyDate, dividendInBaseCurrency: dividendInBaseCurrency.toNumber(), dividendYieldPercent: dividendYieldPercent.toNumber(), dividendYieldPercentWithCurrencyEffect: diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index 95c58d35a..427386796 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -116,11 +116,11 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { }; public dataProviderInfo: DataProviderInfo; public dataSource: MatTableDataSource; + public dateOfFirstActivity: string; public dividendInBaseCurrency: number; public dividendInBaseCurrencyPrecision = 2; public dividendYieldPercentWithCurrencyEffect: number; public feeInBaseCurrency: number; - public firstBuyDate: string; public hasPermissionToCreateOwnTag: boolean; public hasPermissionToReadMarketDataOfOwnAssetProfile: boolean; public historicalDataItems: LineChartItem[]; @@ -267,10 +267,10 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { activitiesCount, averagePrice, dataProviderInfo, + dateOfFirstActivity, dividendInBaseCurrency, dividendYieldPercentWithCurrencyEffect, feeInBaseCurrency, - firstBuyDate, historicalData, investmentInBaseCurrencyWithCurrencyEffect, marketPrice, @@ -298,6 +298,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { this.benchmarkDataItems = []; this.countries = {}; this.dataProviderInfo = dataProviderInfo; + this.dateOfFirstActivity = dateOfFirstActivity; this.dividendInBaseCurrency = dividendInBaseCurrency; if ( @@ -312,7 +313,6 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { dividendYieldPercentWithCurrencyEffect; this.feeInBaseCurrency = feeInBaseCurrency; - this.firstBuyDate = firstBuyDate; this.hasPermissionToReadMarketDataOfOwnAssetProfile = hasPermission( @@ -461,16 +461,16 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { } } - if (isToday(parseISO(this.firstBuyDate))) { + if (isToday(parseISO(this.dateOfFirstActivity))) { // Add average price this.historicalDataItems.push({ - date: this.firstBuyDate, + date: this.dateOfFirstActivity, value: this.averagePrice }); // Add benchmark 1 this.benchmarkDataItems.push({ - date: this.firstBuyDate, + date: this.dateOfFirstActivity, value: averagePrice }); @@ -501,7 +501,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { if ( this.benchmarkDataItems[0]?.value === undefined && - isSameMonth(parseISO(this.firstBuyDate), new Date()) + isSameMonth(parseISO(this.dateOfFirstActivity), new Date()) ) { this.benchmarkDataItems[0].value = this.averagePrice; } diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html index f52286160..f9329dbfb 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -215,7 +215,7 @@ [deviceType]="data.deviceType" [isDate]="true" [locale]="data.locale" - [value]="firstBuyDate" + [value]="dateOfFirstActivity" >First Activity @@ -400,7 +400,7 @@