From 71910c9e02cf39ba8b7645f8e9d5e9a476b53fea Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 16 Jul 2025 19:25:06 +0200 Subject: [PATCH] Skip errors for custom asset profiles --- .../calculator/portfolio-calculator.ts | 24 ++++++++++++------- .../interfaces/portfolio-order.interface.ts | 2 +- .../transaction-point-symbol.interface.ts | 1 + 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts index ac7e02027..185c1cd80 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts @@ -446,7 +446,8 @@ export abstract class PortfolioCalculator { currentRateErrors.find(({ dataSource, symbol }) => { return dataSource === item.dataSource && symbol === item.symbol; })) && - item.investment.gt(0) + item.investment.gt(0) && + item.skipErrors === false ) { errors.push({ dataSource: item.dataSource, symbol: item.symbol }); } @@ -896,9 +897,14 @@ export abstract class PortfolioCalculator { unitPrice } of this.activities) { let currentTransactionPointItem: TransactionPointSymbol; - const oldAccumulatedSymbol = symbols[SymbolProfile.symbol]; + const currency = SymbolProfile.currency; + const dataSource = SymbolProfile.dataSource; const factor = getFactor(type); + const skipErrors = !!SymbolProfile.userId; // Skip errors for custom asset profiles + const symbol = SymbolProfile.symbol; + + const oldAccumulatedSymbol = symbols[symbol]; if (oldAccumulatedSymbol) { let investment = oldAccumulatedSymbol.investment; @@ -918,32 +924,34 @@ export abstract class PortfolioCalculator { } currentTransactionPointItem = { + currency, + dataSource, investment, + skipErrors, + symbol, averagePrice: newQuantity.gt(0) ? investment.div(newQuantity) : new Big(0), - currency: SymbolProfile.currency, - dataSource: SymbolProfile.dataSource, dividend: new Big(0), fee: oldAccumulatedSymbol.fee.plus(fee), firstBuyDate: oldAccumulatedSymbol.firstBuyDate, quantity: newQuantity, - symbol: SymbolProfile.symbol, tags: oldAccumulatedSymbol.tags.concat(tags), transactionCount: oldAccumulatedSymbol.transactionCount + 1 }; } else { currentTransactionPointItem = { + currency, + dataSource, fee, + skipErrors, + symbol, tags, averagePrice: unitPrice, - currency: SymbolProfile.currency, - dataSource: SymbolProfile.dataSource, dividend: new Big(0), firstBuyDate: date, investment: unitPrice.mul(quantity).mul(factor), quantity: quantity.mul(factor), - symbol: SymbolProfile.symbol, transactionCount: 1 }; } diff --git a/apps/api/src/app/portfolio/interfaces/portfolio-order.interface.ts b/apps/api/src/app/portfolio/interfaces/portfolio-order.interface.ts index 63a936c32..1c53430f6 100644 --- a/apps/api/src/app/portfolio/interfaces/portfolio-order.interface.ts +++ b/apps/api/src/app/portfolio/interfaces/portfolio-order.interface.ts @@ -6,7 +6,7 @@ export interface PortfolioOrder extends Pick { quantity: Big; SymbolProfile: Pick< Activity['SymbolProfile'], - 'currency' | 'dataSource' | 'name' | 'symbol' + 'currency' | 'dataSource' | 'name' | 'symbol' | 'userId' >; unitPrice: Big; } 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 d15d02d3a..0d648322f 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 @@ -10,6 +10,7 @@ export interface TransactionPointSymbol { firstBuyDate: string; investment: Big; quantity: Big; + skipErrors: boolean; symbol: string; tags?: Tag[]; transactionCount: number;