From 853b86421b211c907cc557223667164925a0ba4a Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Sat, 10 Jul 2021 15:37:27 +0200 Subject: [PATCH] Fix average buy price calculation --- .../src/app/portfolio/portfolio.service.ts | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 71fcadd12..6493bf088 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -18,6 +18,7 @@ import { REQUEST } from '@nestjs/core'; import { DataSource } from '@prisma/client'; import { add, + addMonths, endOfToday, format, getDate, @@ -227,19 +228,18 @@ export class PortfolioService { impersonationUserId || this.request.user.id ); - const positions = portfolio.getPositions(new Date())[aSymbol]; + const position = portfolio.getPositions(new Date())[aSymbol]; - if (positions) { - let { + if (position) { + const { averagePrice, currency, firstBuyDate, investment, - marketPrice, quantity, transactionCount - } = portfolio.getPositions(new Date())[aSymbol]; - + } = position; + let marketPrice = position.marketPrice; const orders = portfolio.getOrders(aSymbol); const historicalData = await this.dataProviderService.getHistorical( @@ -267,13 +267,14 @@ export class PortfolioService { isSameDay(currentDate, parseISO(orders[0]?.getDate())) || isAfter(currentDate, parseISO(orders[0]?.getDate())) ) { - // Get snapshot of first day of month - const snapshot = portfolio.get(setDate(currentDate, 1))[0] - .positions[aSymbol]; + // Get snapshot of first day of next month + const snapshot = portfolio.get( + addMonths(setDate(currentDate, 1), 1) + )?.[0]?.positions[aSymbol]; orders.shift(); if (snapshot?.averagePrice) { - currentAveragePrice = snapshot?.averagePrice; + currentAveragePrice = snapshot.averagePrice; } }