From 28fa33e54aaa9d8fb66c2b780d7cd6b76e8dcdfd Mon Sep 17 00:00:00 2001 From: pawelsa Date: Thu, 14 May 2026 23:36:58 +0200 Subject: [PATCH] fix(Portfolio): Profit calculation methids --- .../ntnu/idi/idatt/model/portfolio/Portfolio.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/edu/ntnu/idi/idatt/model/portfolio/Portfolio.java b/src/main/java/edu/ntnu/idi/idatt/model/portfolio/Portfolio.java index 4eb2a21..78a591b 100644 --- a/src/main/java/edu/ntnu/idi/idatt/model/portfolio/Portfolio.java +++ b/src/main/java/edu/ntnu/idi/idatt/model/portfolio/Portfolio.java @@ -74,19 +74,23 @@ public BigDecimal getOwnedAmount(String symbol) { } public BigDecimal getProfitFromStock(String symbol) { - return getShares(symbol).stream().map(s -> s.getProfit()) - .reduce(BigDecimal.ZERO, BigDecimal::add); + return getShares(symbol).stream().map(s -> { + BigDecimal total = new SaleCalculator(s).calculateTotal(); + BigDecimal buyPrice = s.getQuantity().multiply(s.getPurchasePrice()); + + return total.subtract(buyPrice); + }).reduce(BigDecimal.ZERO, BigDecimal::add); } public BigDecimal getChangeFromStock(String symbol) { BigDecimal profitTotal = getProfitFromStock(symbol); - BigDecimal costTotal = getShares(symbol).stream().map(s -> s.getPurchasePrice()) + BigDecimal costTotal = getShares(symbol).stream().map(s -> s.getPurchasePrice().multiply(s.getQuantity())) .reduce(BigDecimal.ZERO, BigDecimal::add); if (costTotal.compareTo(BigDecimal.ZERO) <= 0) return BigDecimal.ZERO; - return profitTotal.divide(costTotal, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); + return profitTotal.divide(costTotal, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); } /**