package com.floreantpos.jreports; import java.util.ArrayList; import java.util.List; import com.floreantpos.model.Ticket; import com.floreantpos.model.TicketItem; import com.floreantpos.model.TicketItemModifier; import com.floreantpos.model.TicketItemModifierGroup; public class KitchenTicketDataSource extends AbstractReportDataSource { public KitchenTicketDataSource() { super(new String[] {"itemNo", "itemName", "itemQty"}); } public KitchenTicketDataSource(Ticket ticket) { super(new String[] {"itemNo", "itemName", "itemQty"}); setTicket(ticket); } public void setTicket(Ticket ticket) { ArrayList<Row> rows = new ArrayList<Row>(); List<TicketItem> ticketItems = ticket.getTicketItems(); if (ticketItems != null) { for (TicketItem ticketItem : ticketItems) { if(ticketItem.isShouldPrintToKitchen() && !ticketItem.isPrintedToKitchen()) { Row row1 = new Row(ticketItem.getItemCount(), ticketItem.getName(), ticketItem.getId()); rows.add(row1); } ticketItem.setPrintedToKitchen(true); List<TicketItemModifierGroup> modifierGroups = ticketItem.getTicketItemModifierGroups(); if (modifierGroups != null) { for (TicketItemModifierGroup modifierGroup : modifierGroups) { List<TicketItemModifier> modifiers = modifierGroup.getTicketItemModifiers(); if (modifiers != null) { for (TicketItemModifier modifier : modifiers) { if(!modifier.isShouldPrintToKitchen() || modifier.isPrintedToKitchen()) { continue; } modifier.setPrintedToKitchen(true); String name = " - " + modifier.getName(); if (modifier.getModifierType() == TicketItemModifier.EXTRA_MODIFIER) { name = " - Extra " + name; } Row row = new Row(); row.setItemCount(modifier.getItemCount()); row.setItemName(name); row.setItemNo(modifier.getId()); rows.add(row); } } } } } } setRows(rows); } public Object getValueAt(int rowIndex, int columnIndex) { Row item = (Row) rows.get(rowIndex); switch(columnIndex) { case 0: return String.valueOf(item.getItemNo()); case 1: return item.getItemName(); case 2: return String.valueOf(item.getItemCount()); } return null; } private class Row { private int itemCount; private String itemName; private int itemNo; public Row() { super(); } public Row(int itemCount, String itemName, int itemNo) { super(); this.itemCount = itemCount; this.itemName = itemName; this.itemNo = itemNo; } public int getItemCount() { return itemCount; } public void setItemCount(int itemCount) { this.itemCount = itemCount; } public String getItemName() { return itemName; } public void setItemName(String itemName) { this.itemName = itemName; } public int getItemNo() { return itemNo; } public void setItemNo(int itemNo) { this.itemNo = itemNo; } } }