Bugfix/fix average buy price calculation (#204)

* Fix average buy price calculation

* Update changelog
This commit is contained in:
Thomas 2021-07-10 18:16:46 +02:00 committed by GitHub
parent f22991b090
commit f403807f2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 10 deletions

View File

@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed ### Fixed
- Fixed rendering of currency and platform in dialogs (account and transaction) - Fixed rendering of currency and platform in dialogs (account and transaction)
- Fixed an issue in the calculation of the average buy prices in the position detail chart
## 1.24.0 - 07.07.2021 ## 1.24.0 - 07.07.2021

View File

@ -18,6 +18,7 @@ import { REQUEST } from '@nestjs/core';
import { DataSource } from '@prisma/client'; import { DataSource } from '@prisma/client';
import { import {
add, add,
addMonths,
endOfToday, endOfToday,
format, format,
getDate, getDate,
@ -227,19 +228,18 @@ export class PortfolioService {
impersonationUserId || this.request.user.id impersonationUserId || this.request.user.id
); );
const positions = portfolio.getPositions(new Date())[aSymbol]; const position = portfolio.getPositions(new Date())[aSymbol];
if (positions) { if (position) {
let { const {
averagePrice, averagePrice,
currency, currency,
firstBuyDate, firstBuyDate,
investment, investment,
marketPrice,
quantity, quantity,
transactionCount transactionCount
} = portfolio.getPositions(new Date())[aSymbol]; } = position;
let marketPrice = position.marketPrice;
const orders = portfolio.getOrders(aSymbol); const orders = portfolio.getOrders(aSymbol);
const historicalData = await this.dataProviderService.getHistorical( const historicalData = await this.dataProviderService.getHistorical(
@ -267,13 +267,14 @@ export class PortfolioService {
isSameDay(currentDate, parseISO(orders[0]?.getDate())) || isSameDay(currentDate, parseISO(orders[0]?.getDate())) ||
isAfter(currentDate, parseISO(orders[0]?.getDate())) isAfter(currentDate, parseISO(orders[0]?.getDate()))
) { ) {
// Get snapshot of first day of month // Get snapshot of first day of next month
const snapshot = portfolio.get(setDate(currentDate, 1))[0] const snapshot = portfolio.get(
.positions[aSymbol]; addMonths(setDate(currentDate, 1), 1)
)?.[0]?.positions[aSymbol];
orders.shift(); orders.shift();
if (snapshot?.averagePrice) { if (snapshot?.averagePrice) {
currentAveragePrice = snapshot?.averagePrice; currentAveragePrice = snapshot.averagePrice;
} }
} }