From 0dc61230bb2be9d0cafc454719309df6719aeebf Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 19 Sep 2026 20:31:52 +0200 Subject: [PATCH] Harden getOrdersWithMarketPrices of the portfolio calculator base class --- .../app/portfolio/calculator/portfolio-calculator.ts | 11 ++++++++++- .../portfolio/calculator/roai/portfolio-calculator.ts | 9 ++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts index 32e2bf106f..e64757763d 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts @@ -858,9 +858,18 @@ export abstract class PortfolioCalculator { unitPriceAtEndDate: Big; unitPriceAtStartDate: Big; }): PortfolioOrderItem[] { + if (orders.length <= 0) { + return []; + } + const assetProfileIdentifier = getAssetProfileIdentifier(assetProfile); const dateStringOfFirstActivity = orders[0].date; - const ordersWithMarketPrices = [...orders]; + + // Copy the items as they are enriched below. A shallow copy is sufficient + // because only top-level properties are written. + const ordersWithMarketPrices = orders.map((order) => { + return { ...order }; + }); // Add a synthetic order at the start and the end date ordersWithMarketPrices.push({ diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts index 6f73f6990d..873bffd4a8 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts @@ -183,13 +183,8 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator { symbol }); - // Copy the items as they are enriched below. A shallow copy is sufficient - // because only top-level properties are written. - let orders: PortfolioOrderItem[] = ( - this.activitiesByAssetProfileIdentifier[assetProfileIdentifier] ?? [] - ).map((activity) => { - return { ...activity }; - }); + let orders: PortfolioOrderItem[] = + this.activitiesByAssetProfileIdentifier[assetProfileIdentifier] ?? []; const isCash = orders[0]?.assetProfile?.assetSubClass === 'CASH';