|
@ -446,7 +446,8 @@ export abstract class PortfolioCalculator { |
|
|
currentRateErrors.find(({ dataSource, symbol }) => { |
|
|
currentRateErrors.find(({ dataSource, symbol }) => { |
|
|
return dataSource === item.dataSource && symbol === item.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 }); |
|
|
errors.push({ dataSource: item.dataSource, symbol: item.symbol }); |
|
|
} |
|
|
} |
|
@ -896,9 +897,14 @@ export abstract class PortfolioCalculator { |
|
|
unitPrice |
|
|
unitPrice |
|
|
} of this.activities) { |
|
|
} of this.activities) { |
|
|
let currentTransactionPointItem: TransactionPointSymbol; |
|
|
let currentTransactionPointItem: TransactionPointSymbol; |
|
|
const oldAccumulatedSymbol = symbols[SymbolProfile.symbol]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const currency = SymbolProfile.currency; |
|
|
|
|
|
const dataSource = SymbolProfile.dataSource; |
|
|
const factor = getFactor(type); |
|
|
const factor = getFactor(type); |
|
|
|
|
|
const skipErrors = !!SymbolProfile.userId; // Skip errors for custom asset profiles
|
|
|
|
|
|
const symbol = SymbolProfile.symbol; |
|
|
|
|
|
|
|
|
|
|
|
const oldAccumulatedSymbol = symbols[symbol]; |
|
|
|
|
|
|
|
|
if (oldAccumulatedSymbol) { |
|
|
if (oldAccumulatedSymbol) { |
|
|
let investment = oldAccumulatedSymbol.investment; |
|
|
let investment = oldAccumulatedSymbol.investment; |
|
@ -918,32 +924,34 @@ export abstract class PortfolioCalculator { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
currentTransactionPointItem = { |
|
|
currentTransactionPointItem = { |
|
|
|
|
|
currency, |
|
|
|
|
|
dataSource, |
|
|
investment, |
|
|
investment, |
|
|
|
|
|
skipErrors, |
|
|
|
|
|
symbol, |
|
|
averagePrice: newQuantity.gt(0) |
|
|
averagePrice: newQuantity.gt(0) |
|
|
? investment.div(newQuantity) |
|
|
? investment.div(newQuantity) |
|
|
: new Big(0), |
|
|
: new Big(0), |
|
|
currency: SymbolProfile.currency, |
|
|
|
|
|
dataSource: SymbolProfile.dataSource, |
|
|
|
|
|
dividend: new Big(0), |
|
|
dividend: new Big(0), |
|
|
fee: oldAccumulatedSymbol.fee.plus(fee), |
|
|
fee: oldAccumulatedSymbol.fee.plus(fee), |
|
|
firstBuyDate: oldAccumulatedSymbol.firstBuyDate, |
|
|
firstBuyDate: oldAccumulatedSymbol.firstBuyDate, |
|
|
quantity: newQuantity, |
|
|
quantity: newQuantity, |
|
|
symbol: SymbolProfile.symbol, |
|
|
|
|
|
tags: oldAccumulatedSymbol.tags.concat(tags), |
|
|
tags: oldAccumulatedSymbol.tags.concat(tags), |
|
|
transactionCount: oldAccumulatedSymbol.transactionCount + 1 |
|
|
transactionCount: oldAccumulatedSymbol.transactionCount + 1 |
|
|
}; |
|
|
}; |
|
|
} else { |
|
|
} else { |
|
|
currentTransactionPointItem = { |
|
|
currentTransactionPointItem = { |
|
|
|
|
|
currency, |
|
|
|
|
|
dataSource, |
|
|
fee, |
|
|
fee, |
|
|
|
|
|
skipErrors, |
|
|
|
|
|
symbol, |
|
|
tags, |
|
|
tags, |
|
|
averagePrice: unitPrice, |
|
|
averagePrice: unitPrice, |
|
|
currency: SymbolProfile.currency, |
|
|
|
|
|
dataSource: SymbolProfile.dataSource, |
|
|
|
|
|
dividend: new Big(0), |
|
|
dividend: new Big(0), |
|
|
firstBuyDate: date, |
|
|
firstBuyDate: date, |
|
|
investment: unitPrice.mul(quantity).mul(factor), |
|
|
investment: unitPrice.mul(quantity).mul(factor), |
|
|
quantity: quantity.mul(factor), |
|
|
quantity: quantity.mul(factor), |
|
|
symbol: SymbolProfile.symbol, |
|
|
|
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
}; |
|
|
}; |
|
|
} |
|
|
} |
|
|