Skip to content

whole PurchaseCalculator class #44

Merged
merged 1 commit into from
Feb 20, 2026
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,67 @@
package edu.ntnu.idi.idatt2003.g40.mappe;

public class PurchaseCalculator {

import java.math.BigDecimal;


/**
* Calculator for purchase transactions.
* <p>
* Uses the share's purchase price and quantity to calculate:
* gross value, commission, tax and total cost.
* </p>
*/
public class PurchaseCalculator implements TransactionCalculator {

private static final BigDecimal COMMISSION_RATE = new BigDecimal("0.005"); // 0.5%

private final BigDecimal purchasePrice;
private final BigDecimal quantity;

/**
* Creates a new {@code PurchaseCalculator} based on a share.
*
* @param share the share to base calculations on
*/
public PurchaseCalculator(Share share) {
this.purchasePrice = share.getPurchasePrice();
this.quantity = share.getQuantity();
}

/**
* {@inheritDoc}
* Gross value = purchasePrice * quantity.
*/
@Override
public BigDecimal calculateGross() {
return purchasePrice.multiply(quantity);
}

/**
* {@inheritDoc}
* Commission = 0.5% of gross value.
*/
@Override
public BigDecimal calculateCommission() {
return calculateGross().multiply(COMMISSION_RATE);
}

/**
* {@inheritDoc}
* No tax on purchases.
*/
@Override
public BigDecimal calculateTax() {
return BigDecimal.ZERO;
}

/**
* {@inheritDoc}
* Total cost = gross + commission + tax.
*/
@Override
public BigDecimal calculateTotal() {
return calculateGross()
.add(calculateCommission())
.add(calculateTax());
}
}