Skip to content

Commit

Permalink
Merge pull request #44 from Team-40-IDATT2003/enhancement/29-purchase…
Browse files Browse the repository at this point in the history
…calculator-class

whole PurchaseCalculator class
  • Loading branch information
tommyah authored Feb 20, 2026
2 parents f3e7f30 + d993590 commit 1547ab9
Showing 1 changed file with 64 additions and 2 deletions.
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());
}
}

0 comments on commit 1547ab9

Please sign in to comment.