Browse Source

Skip errors for custom asset profiles

pull/5175/head
Thomas Kaul 1 month ago
parent
commit
71910c9e02
  1. 24
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  2. 2
      apps/api/src/app/portfolio/interfaces/portfolio-order.interface.ts
  3. 1
      apps/api/src/app/portfolio/interfaces/transaction-point-symbol.interface.ts

24
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
};
}

2
apps/api/src/app/portfolio/interfaces/portfolio-order.interface.ts

@ -6,7 +6,7 @@ export interface PortfolioOrder extends Pick<Activity, 'tags' | 'type'> {
quantity: Big;
SymbolProfile: Pick<
Activity['SymbolProfile'],
'currency' | 'dataSource' | 'name' | 'symbol'
'currency' | 'dataSource' | 'name' | 'symbol' | 'userId'
>;
unitPrice: Big;
}

1
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;

Loading…
Cancel
Save