package com.floreantpos.model; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.floreantpos.bo.ui.explorer.ListTableModel; import com.floreantpos.main.Application; public class TipsCashoutReport { private String server; private Date fromDate; private Date toDate; private Date reportTime; private int cashTipsCount; private double cashTipsAmount; private int chargedTipsCount; private double chargedTipsAmount; private double totalTips; private double averageTips; private double paidTips; private double tipsDue; private List<TipsCashoutReportData> datas; public Date getFromDate() { return fromDate; } public void setFromDate(Date fromDate) { this.fromDate = fromDate; } public Date getReportTime() { return reportTime; } public void setReportTime(Date reportTime) { this.reportTime = reportTime; } public String getServer() { return server; } public void setServer(String server) { this.server = server; } public Date getToDate() { return toDate; } public void setToDate(Date toDate) { this.toDate = toDate; } public void addReportData(TipsCashoutReportData data) { if (datas == null) { datas = new ArrayList<TipsCashoutReportData>(); } datas.add(data); } public List<TipsCashoutReportData> getDatas() { return datas; } public void calculateOthers() { if(datas == null) { return; } for (TipsCashoutReportData data : datas) { if("*CASH*".equals(data.getSaleType())) { ++cashTipsCount; cashTipsAmount += data.getTips(); } else { ++chargedTipsCount; chargedTipsAmount += data.getTips(); } totalTips += data.getTips(); if(data.isPaid()) { ++paidTips; } else { tipsDue += data.getTips(); } } averageTips = totalTips / datas.size(); } public static class TipsCashoutReportData { private Integer ticketId; private String saleType; private Double ticketTotal; private Double tips; private boolean paid; public String getSaleType() { return saleType; } public void setSaleType(String saleType) { this.saleType = saleType; if(this.saleType == null) { this.saleType = "*CASH*"; } else { this.saleType = this.saleType.replaceAll("_", " "); } } public Integer getTicketId() { return ticketId; } public void setTicketId(Integer ticketId) { this.ticketId = ticketId; } public Double getTicketTotal() { return ticketTotal; } public void setTicketTotal(Double ticketTotal) { this.ticketTotal = ticketTotal; } public Double getTips() { return tips; } public void setTips(Double tips) { this.tips = tips; } public boolean isPaid() { return paid; } public void setPaid(boolean paid) { this.paid = paid; } } public static class TipsCashoutReportTableModel extends ListTableModel { public TipsCashoutReportTableModel(List<TipsCashoutReportData> datas) { super(new String[] {"Ref#", "CD Type", "Total", "Tips"}, datas); } public Object getValueAt(int rowIndex, int columnIndex) { TipsCashoutReportData data = (TipsCashoutReportData) rows.get(rowIndex); switch(columnIndex) { case 0: return data.getTicketId(); case 1: return data.getSaleType(); case 2: return Application.formatNumber(data.getTicketTotal()); case 3: return Application.formatNumber(data.getTips()); } return null; } } public double getAverageTips() { return averageTips; } public void setAverageTips(double averageTips) { this.averageTips = averageTips; } public int getCashTipsCount() { return cashTipsCount; } public void setCashTipsCount(int cashTipsCount) { this.cashTipsCount = cashTipsCount; } public int getChargedTipsCount() { return chargedTipsCount; } public void setChargedTipsCount(int chargedTipsCount) { this.chargedTipsCount = chargedTipsCount; } public double getPaidTips() { return paidTips; } public void setPaidTips(double paidTips) { this.paidTips = paidTips; } public double getTotalTips() { return totalTips; } public void setTotalTips(double totalTips) { this.totalTips = totalTips; } public double getCashTipsAmount() { return cashTipsAmount; } public void setCashTipsAmount(double cashTipsAmount) { this.cashTipsAmount = cashTipsAmount; } public double getChargedTipsAmount() { return chargedTipsAmount; } public void setChargedTipsAmount(double chargedTipsAmount) { this.chargedTipsAmount = chargedTipsAmount; } public double getTipsDue() { return tipsDue; } public void setTipsDue(double tipsDue) { this.tipsDue = tipsDue; } }