package com.floreantpos.model; import java.util.List; import com.floreantpos.model.base.BaseTicketItemModifier; public class TicketItemModifier extends BaseTicketItemModifier { private static final long serialVersionUID = 1L; public final static int MODIFIER_NOT_INITIALIZED = 0; public final static int NORMAL_MODIFIER = 1; public final static int NO_MODIFIER = 2; public final static int EXTRA_MODIFIER = 3; /*[CONSTRUCTOR MARKER BEGIN]*/ public TicketItemModifier () { super(); } /** * Constructor for primary key */ public TicketItemModifier (java.lang.Integer id) { super(id); } /*[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(); } private int getPreviousItemsCount() { TicketItemModifierGroup ticketItemModifierGroup = getParent(); List<TicketItemModifier> ticketItemModifiers = ticketItemModifierGroup.getTicketItemModifiers(); int count = 0; for (TicketItemModifier modifier : ticketItemModifiers) { if (modifier == this) { return count; } if (modifier.getModifierType() != TicketItemModifier.NO_MODIFIER) { count += modifier.getItemCount(); } } return count; } double calculateTotal() { double total = 0; TicketItemModifierGroup ticketItemModifierGroup = getParent(); if (ticketItemModifierGroup == null) { setTotalAmount(total); return total; } int previousItemCount = getPreviousItemsCount(); int maxItemCount = ticketItemModifierGroup.getMaxQuantity(); int normalItemCount = 0; int extraItemCount = 0; if (previousItemCount == 0) { if (getItemCount() <= maxItemCount) { normalItemCount = getItemCount(); extraItemCount = 0; } else { normalItemCount = maxItemCount; extraItemCount = getItemCount() - maxItemCount; } } else { maxItemCount = maxItemCount - previousItemCount; if (maxItemCount < 0) maxItemCount = 0; if (getItemCount() <= maxItemCount) { normalItemCount = getItemCount(); extraItemCount = 0; } else { normalItemCount = maxItemCount; extraItemCount = getItemCount() - maxItemCount; } } total = normalItemCount * getUnitPrice(); total += extraItemCount * getExtraUnitPrice(); setTotalAmount(total); return total; } }