|
@ -702,6 +702,7 @@ export class PortfolioService { |
|
|
averagePrice: undefined, |
|
|
averagePrice: undefined, |
|
|
dataProviderInfo: undefined, |
|
|
dataProviderInfo: undefined, |
|
|
dividendInBaseCurrency: undefined, |
|
|
dividendInBaseCurrency: undefined, |
|
|
|
|
|
stakeRewards: undefined, |
|
|
feeInBaseCurrency: undefined, |
|
|
feeInBaseCurrency: undefined, |
|
|
firstBuyDate: undefined, |
|
|
firstBuyDate: undefined, |
|
|
grossPerformance: undefined, |
|
|
grossPerformance: undefined, |
|
@ -730,7 +731,11 @@ export class PortfolioService { |
|
|
.filter((order) => { |
|
|
.filter((order) => { |
|
|
tags = tags.concat(order.tags); |
|
|
tags = tags.concat(order.tags); |
|
|
|
|
|
|
|
|
return order.type === 'BUY' || order.type === 'SELL'; |
|
|
return ( |
|
|
|
|
|
order.type === 'BUY' || |
|
|
|
|
|
order.type === 'SELL' || |
|
|
|
|
|
order.type === 'STAKE' |
|
|
|
|
|
); |
|
|
}) |
|
|
}) |
|
|
.map((order) => ({ |
|
|
.map((order) => ({ |
|
|
currency: order.SymbolProfile.currency, |
|
|
currency: order.SymbolProfile.currency, |
|
@ -786,6 +791,16 @@ export class PortfolioService { |
|
|
}) |
|
|
}) |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
const stakeRewards = getSum( |
|
|
|
|
|
orders |
|
|
|
|
|
.filter(({ type }) => { |
|
|
|
|
|
return type === 'STAKE'; |
|
|
|
|
|
}) |
|
|
|
|
|
.map(({ quantity }) => { |
|
|
|
|
|
return new Big(quantity); |
|
|
|
|
|
}) |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
// Convert investment, gross and net performance to currency of user
|
|
|
// Convert investment, gross and net performance to currency of user
|
|
|
const investment = this.exchangeRateDataService.toCurrency( |
|
|
const investment = this.exchangeRateDataService.toCurrency( |
|
|
position.investment?.toNumber(), |
|
|
position.investment?.toNumber(), |
|
@ -880,6 +895,7 @@ export class PortfolioService { |
|
|
averagePrice: averagePrice.toNumber(), |
|
|
averagePrice: averagePrice.toNumber(), |
|
|
dataProviderInfo: portfolioCalculator.getDataProviderInfos()?.[0], |
|
|
dataProviderInfo: portfolioCalculator.getDataProviderInfos()?.[0], |
|
|
dividendInBaseCurrency: dividendInBaseCurrency.toNumber(), |
|
|
dividendInBaseCurrency: dividendInBaseCurrency.toNumber(), |
|
|
|
|
|
stakeRewards: stakeRewards.toNumber(), |
|
|
feeInBaseCurrency: this.exchangeRateDataService.toCurrency( |
|
|
feeInBaseCurrency: this.exchangeRateDataService.toCurrency( |
|
|
fee.toNumber(), |
|
|
fee.toNumber(), |
|
|
SymbolProfile.currency, |
|
|
SymbolProfile.currency, |
|
@ -943,6 +959,7 @@ export class PortfolioService { |
|
|
averagePrice: 0, |
|
|
averagePrice: 0, |
|
|
dataProviderInfo: undefined, |
|
|
dataProviderInfo: undefined, |
|
|
dividendInBaseCurrency: 0, |
|
|
dividendInBaseCurrency: 0, |
|
|
|
|
|
stakeRewards: 0, |
|
|
feeInBaseCurrency: 0, |
|
|
feeInBaseCurrency: 0, |
|
|
firstBuyDate: undefined, |
|
|
firstBuyDate: undefined, |
|
|
grossPerformance: undefined, |
|
|
grossPerformance: undefined, |
|
@ -1403,7 +1420,7 @@ export class PortfolioService { |
|
|
let valueInBaseCurrencyOfEmergencyFundPositions = new Big(0); |
|
|
let valueInBaseCurrencyOfEmergencyFundPositions = new Big(0); |
|
|
|
|
|
|
|
|
for (const order of emergencyFundOrders) { |
|
|
for (const order of emergencyFundOrders) { |
|
|
if (order.type === 'BUY') { |
|
|
if (order.type === 'BUY' || order.type === 'STAKE') { |
|
|
valueInBaseCurrencyOfEmergencyFundPositions = |
|
|
valueInBaseCurrencyOfEmergencyFundPositions = |
|
|
valueInBaseCurrencyOfEmergencyFundPositions.plus( |
|
|
valueInBaseCurrencyOfEmergencyFundPositions.plus( |
|
|
order.valueInBaseCurrency |
|
|
order.valueInBaseCurrency |
|
@ -1714,7 +1731,7 @@ export class PortfolioService { |
|
|
userCurrency, |
|
|
userCurrency, |
|
|
userId, |
|
|
userId, |
|
|
withExcludedAccounts, |
|
|
withExcludedAccounts, |
|
|
types: ['BUY', 'SELL'] |
|
|
types: ['BUY', 'SELL', 'STAKE'] |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
if (orders.length <= 0) { |
|
|
if (orders.length <= 0) { |
|
|