Browse Source

feat(api): add synthetic activities into calculator

pull/5650/head
KenTandrian 5 days ago
parent
commit
2bfd92cb9c
  1. 21
      apps/api/src/app/portfolio/portfolio.service.ts

21
apps/api/src/app/portfolio/portfolio.service.ts

@ -575,6 +575,7 @@ export class PortfolioService {
(user.settings?.settings as UserSettings)?.emergencyFund ?? 0
);
// Activities for non-cash assets
const { activities } =
await this.orderService.getOrdersForPortfolioCalculator({
filters,
@ -582,23 +583,29 @@ export class PortfolioService {
userId
});
const portfolioCalculator = this.calculatorFactory.createCalculator({
activities,
// Synthetic activities for cash
const cashDetails = await this.accountService.getCashDetails({
filters,
userId,
calculationType: this.getUserPerformanceCalculationType(user),
currency: userCurrency
});
const cashActivities = await this.getCashActivities({
cashDetails,
userCurrency,
userId
});
const { createdAt, currentValueInBaseCurrency, hasErrors, positions } =
await portfolioCalculator.getSnapshot();
const cashDetails = await this.accountService.getCashDetails({
const portfolioCalculator = this.calculatorFactory.createCalculator({
filters,
userId,
activities: [...activities, ...cashActivities],
calculationType: this.getUserPerformanceCalculationType(user),
currency: userCurrency
});
const { createdAt, currentValueInBaseCurrency, hasErrors, positions } =
await portfolioCalculator.getSnapshot();
const holdings: PortfolioDetails['holdings'] = {};
const totalValueInBaseCurrency = currentValueInBaseCurrency.plus(

Loading…
Cancel
Save