|
|
@ -1302,12 +1302,11 @@ export class PortfolioService { |
|
|
|
}: { |
|
|
|
activities: OrderWithAccount[]; |
|
|
|
date?: Date; |
|
|
|
|
|
|
|
userCurrency: string; |
|
|
|
}) { |
|
|
|
return activities |
|
|
|
.filter((activity) => { |
|
|
|
// Filter out all activities before given date and type dividend
|
|
|
|
// Filter out all activities before given date (drafts) and type dividend
|
|
|
|
return ( |
|
|
|
isBefore(date, new Date(activity.date)) && |
|
|
|
activity.type === TypeOfOrder.DIVIDEND |
|
|
@ -1431,7 +1430,7 @@ export class PortfolioService { |
|
|
|
}) { |
|
|
|
return activities |
|
|
|
.filter((activity) => { |
|
|
|
// Filter out all activities before given date
|
|
|
|
// Filter out all activities before given date (drafts)
|
|
|
|
return isBefore(date, new Date(activity.date)); |
|
|
|
}) |
|
|
|
.map(({ fee, SymbolProfile }) => { |
|
|
@ -1478,19 +1477,37 @@ export class PortfolioService { |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
private getItems(orders: OrderWithAccount[], date = new Date(0)) { |
|
|
|
return orders |
|
|
|
.filter((order) => { |
|
|
|
// Filter out all orders before given date and type item
|
|
|
|
private getItems(activities: OrderWithAccount[], date = new Date(0)) { |
|
|
|
return activities |
|
|
|
.filter((activity) => { |
|
|
|
// Filter out all activities before given date (drafts) and type item
|
|
|
|
return ( |
|
|
|
isBefore(date, new Date(order.date)) && |
|
|
|
order.type === TypeOfOrder.ITEM |
|
|
|
isBefore(date, new Date(activity.date)) && |
|
|
|
activity.type === TypeOfOrder.ITEM |
|
|
|
); |
|
|
|
}) |
|
|
|
.map((order) => { |
|
|
|
.map(({ quantity, SymbolProfile, unitPrice }) => { |
|
|
|
return this.exchangeRateDataService.toCurrency( |
|
|
|
new Big(order.quantity).mul(order.unitPrice).toNumber(), |
|
|
|
order.SymbolProfile.currency, |
|
|
|
new Big(quantity).mul(unitPrice).toNumber(), |
|
|
|
SymbolProfile.currency, |
|
|
|
this.request.user.Settings.settings.baseCurrency |
|
|
|
); |
|
|
|
}) |
|
|
|
.reduce( |
|
|
|
(previous, current) => new Big(previous).plus(current), |
|
|
|
new Big(0) |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
private getLiabilities(activities: OrderWithAccount[]) { |
|
|
|
return activities |
|
|
|
.filter(({ type }) => { |
|
|
|
return type === TypeOfOrder.LIABILITY; |
|
|
|
}) |
|
|
|
.map(({ quantity, SymbolProfile, unitPrice }) => { |
|
|
|
return this.exchangeRateDataService.toCurrency( |
|
|
|
new Big(quantity).mul(unitPrice).toNumber(), |
|
|
|
SymbolProfile.currency, |
|
|
|
this.request.user.Settings.settings.baseCurrency |
|
|
|
); |
|
|
|
}) |
|
|
@ -1601,6 +1618,7 @@ export class PortfolioService { |
|
|
|
const fees = this.getFees({ activities, userCurrency }).toNumber(); |
|
|
|
const firstOrderDate = activities[0]?.date; |
|
|
|
const items = this.getItems(activities).toNumber(); |
|
|
|
const liabilities = this.getLiabilities(activities).toNumber(); |
|
|
|
|
|
|
|
const totalBuy = this.getTotalByType(activities, userCurrency, 'BUY'); |
|
|
|
const totalSell = this.getTotalByType(activities, userCurrency, 'SELL'); |
|
|
@ -1633,6 +1651,7 @@ export class PortfolioService { |
|
|
|
.plus(performanceInformation.performance.currentValue) |
|
|
|
.plus(items) |
|
|
|
.plus(excludedAccountsAndActivities) |
|
|
|
.minus(liabilities) |
|
|
|
.toNumber(); |
|
|
|
|
|
|
|
const daysInMarket = differenceInDays(new Date(), firstOrderDate); |
|
|
@ -1659,6 +1678,7 @@ export class PortfolioService { |
|
|
|
fees, |
|
|
|
firstOrderDate, |
|
|
|
items, |
|
|
|
liabilities, |
|
|
|
netWorth, |
|
|
|
totalBuy, |
|
|
|
totalSell, |
|
|
|