package com.floreantpos.model; import java.util.List; import com.floreantpos.model.base.BaseTicketItem; public class TicketItem extends BaseTicketItem { private static final long serialVersionUID = 1L; /*[CONSTRUCTOR MARKER BEGIN]*/ public TicketItem () { super(); } /** * Constructor for primary key */ public TicketItem (java.lang.Integer id) { super(id); } /** * Constructor for required fields */ public TicketItem ( java.lang.Integer id, com.floreantpos.model.Ticket ticket) { super ( id, ticket); } /*[CONSTRUCTOR MARKER END]*/ private int tableRowNum; public int getTableRowNum() { return tableRowNum; } public void setTableRowNum(int tableRowNum) { this.tableRowNum = tableRowNum; } @Override public String toString() { return getName(); } public TicketItemModifierGroup findTicketItemModifierGroup(MenuModifier menuModifier, boolean createNew) { MenuItemModifierGroup menuItemModifierGroup = menuModifier.getMenuItemModifierGroup(); List<TicketItemModifierGroup> ticketItemModifierGroups = getTicketItemModifierGroups(); if (ticketItemModifierGroups != null) { for (TicketItemModifierGroup ticketItemModifierGroup : ticketItemModifierGroups) { if (ticketItemModifierGroup.getModifierGroupId().equals(menuItemModifierGroup.getId())) { return ticketItemModifierGroup; } } } TicketItemModifierGroup ticketItemModifierGroup = new TicketItemModifierGroup(); ticketItemModifierGroup.setModifierGroupId(menuItemModifierGroup.getId()); ticketItemModifierGroup.setMinQuantity(menuItemModifierGroup.getMinQuantity()); ticketItemModifierGroup.setMaxQuantity(menuItemModifierGroup.getMaxQuantity()); ticketItemModifierGroup.setParent(this); addToticketItemModifierGroups(ticketItemModifierGroup); return ticketItemModifierGroup; } double calculateSubtotal(boolean includeModifierPrice) { double subTotalAmount = getUnitPrice() * getItemCount(); setSubtotalAmountWithoutModifiers(subTotalAmount); if (includeModifierPrice) { List<TicketItemModifierGroup> ticketItemModifierGroups = getTicketItemModifierGroups(); if (ticketItemModifierGroups != null) { for (TicketItemModifierGroup ticketItemModifierGroup : ticketItemModifierGroups) { subTotalAmount += ticketItemModifierGroup.getSubtotal(); } } setSubtotalAmount(subTotalAmount); } return subTotalAmount; } double calculateDiscount() { double subtotal = calculateSubtotal(false); double discountRate = getDiscountRate(); double discount = 0; if (discountRate > 0) { discount = subtotal * discountRate / 100.0; } setDiscountAmount(discount); return discount; } double calculateTax(boolean includeModifierTax) { double subtotalItemPrice = calculateSubtotal(false) - calculateDiscount(); double taxRate = getTaxRate(); double tax = 0; if (taxRate > 0) { tax = subtotalItemPrice * taxRate / 100.0; } setTaxAmountWithoutModifiers(tax); if (includeModifierTax) { List<TicketItemModifierGroup> ticketItemModifierGroups = getTicketItemModifierGroups(); if (ticketItemModifierGroups != null) { for (TicketItemModifierGroup ticketItemModifierGroup : ticketItemModifierGroups) { tax += ticketItemModifierGroup.getTax(); } } setTaxAmount(tax); } return tax; } double calculateTotal(boolean includeModifiers) { double totalPrice = getUnitPrice() * getItemCount(); totalPrice -= calculateDiscount(); double taxRate = getTaxRate(); double tax = 0; if (taxRate > 0) { tax = totalPrice * taxRate / 100.0; } totalPrice += tax; setTotalAmountWithoutModifiers(totalPrice); if (includeModifiers) { List<TicketItemModifierGroup> ticketItemModifierGroups = getTicketItemModifierGroups(); if (ticketItemModifierGroups != null) { for (TicketItemModifierGroup ticketItemModifierGroup : ticketItemModifierGroups) { totalPrice += ticketItemModifierGroup.getTotal(); } } setTotalAmount(totalPrice); } return totalPrice; } }