package com.floreantpos.model; import java.util.Iterator; import java.util.List; import com.floreantpos.model.base.BaseTicketItemModifierGroup; public class TicketItemModifierGroup extends BaseTicketItemModifierGroup { private static final long serialVersionUID = 1L; /*[CONSTRUCTOR MARKER BEGIN]*/ public TicketItemModifierGroup () { super(); } /** * Constructor for primary key */ public TicketItemModifierGroup (java.lang.Integer id) { super(id); } /*[CONSTRUCTOR MARKER END]*/ public int countItems(boolean excludeNoModifier) { List<TicketItemModifier> ticketItemModifiers = getTicketItemModifiers(); if(ticketItemModifiers == null) return 0; int count = 0; for (TicketItemModifier modifier : ticketItemModifiers) { if (excludeNoModifier) { if (modifier.getModifierType() != TicketItemModifier.NO_MODIFIER) { count += modifier.getItemCount(); } } else { if (modifier.getModifierType() == TicketItemModifier.NO_MODIFIER) { count++; } else { count += modifier.getItemCount(); } } } return count; } public TicketItemModifier findTicketItemModifier(MenuModifier modifier) { List<TicketItemModifier> ticketItemModifiers = getTicketItemModifiers(); if (ticketItemModifiers == null) { return null; } else { for (TicketItemModifier ticketItemModifier : ticketItemModifiers) { if (modifier.getId().equals(ticketItemModifier.getItemId())) { return ticketItemModifier; } } } return null; } public TicketItemModifier addTicketItemModifier(MenuModifier menuModifier, int modifierType) { TicketItemModifier ticketItemModifier = new TicketItemModifier(); ticketItemModifier.setItemId(menuModifier.getId()); ticketItemModifier.setGroupId(menuModifier.getModifierGroup().getId()); ticketItemModifier.setItemCount(1); ticketItemModifier.setName(menuModifier.getName()); ticketItemModifier.setUnitPrice(menuModifier.getPrice()); ticketItemModifier.setExtraUnitPrice(menuModifier.getExtraPrice()); ticketItemModifier.setTaxRate(menuModifier.getTax() == null ? 0 : menuModifier.getTax().getRate()); ticketItemModifier.setModifierType(modifierType); ticketItemModifier.setShouldPrintToKitchen(menuModifier.isShouldPrintToKitchen()); ticketItemModifier.setParent(this); addToticketItemModifiers(ticketItemModifier); return ticketItemModifier; } public TicketItemModifier removeTicketItemModifier(TicketItemModifier ticketItemModifier) { List<TicketItemModifier> ticketItemModifiers = getTicketItemModifiers(); if(ticketItemModifiers == null) return ticketItemModifier; for (Iterator iter = ticketItemModifiers.iterator(); iter.hasNext();) { TicketItemModifier oldTicketItemModifier = (TicketItemModifier) iter.next(); if(oldTicketItemModifier.getItemId().equals(ticketItemModifier.getItemId())) { iter.remove(); return oldTicketItemModifier; } } return ticketItemModifier; } public double getSubtotal() { if(getTicketItemModifiers() == null) { return 0; } double subtotal = 0; List<TicketItemModifier> ticketItemModifiers = getTicketItemModifiers(); for (TicketItemModifier modifier : ticketItemModifiers) { /*switch(modifier.getModifierType()) { case TicketItemModifier.NORMAL_MODIFIER: subtotal += modifier.getPrice(); break; case TicketItemModifier.EXTRA_MODIFIER: int extraItemCount = Math.abs(getMaxQuantity() - modifier.getItemCount()); subtotal += (extraItemCount * modifier.getExtraPrice()); break; }*/ subtotal += modifier.calculateTotal(); } return subtotal; } public double getTax() { double tax = 0; if(getTicketItemModifiers() == null) { return tax; } List<TicketItemModifier> ticketItemModifiers = getTicketItemModifiers(); for (TicketItemModifier modifier : ticketItemModifiers) { double taxRate = modifier.getTaxRate(); double modifierSubtotal = modifier.calculateTotal(); if (taxRate > 0) { tax += (modifierSubtotal * taxRate / 100.0); } /*switch(modifier.getModifierType()) { case TicketItemModifier.EXTRA_MODIFIER: double taxRate = modifier.getTaxRate(); int extraItemCount = Math.abs(getMaxQuantity() - modifier.getItemCount()); double modifierSubtotal = (extraItemCount * modifier.getExtraPrice()); if (taxRate > 0) { tax += (modifierSubtotal * taxRate / 100.0); } break; }*/ } return tax; } public double getTotal() { return getSubtotal() + getTax(); } }