package lk.ac.pdn.ceit.pos.entities; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; public class Bill { private List lineItems = new ArrayList<>(); private Cashier cashier; private int id; private BigDecimal total = new BigDecimal("0.00"); private BigDecimal tax; private BigDecimal cashByCustomer; private BigDecimal balance; public Bill() { } public Cashier getCashier() { return cashier; } public void setCashier(Cashier cashier) { this.cashier = cashier; } public int getId() { return id; } public void setId(int id) { this.id = id; } public BigDecimal getTotal() { return total; } public BigDecimal getTax() { return tax; } public void setTax(BigDecimal tax) { this.tax = tax; } public BigDecimal getCashByCustomer() { return cashByCustomer; } public void setCashByCustomer(BigDecimal cashByCustomer) { this.cashByCustomer = cashByCustomer; } public BigDecimal getBalance() { return balance; } @Override public String toString() { return "Bill [id=" + id + ", total=" + total + ", tax=" + tax + ", cashByCustomer=" + cashByCustomer + ", balance=" + balance + "]"; } public void addLineItem(LineItem lineItem) { lineItems.add(lineItem); // Update total for (LineItem _lineItem : lineItems) { total = total.add(_lineItem.getUnitPrice().multiply(BigDecimal.valueOf(_lineItem.getQuantity()))); } } public List getLineItems() { // TODO: Do a deep copy and return to avoid external modification of line items. // We return an immutable copy to avoid external world adding LineItems. return List.copyOf(lineItems); } }