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)); } /**