TavernerPOS - Source Code
Clone:
git clone http://www.librarysmith.co.uk/tavernerPOS
package com.floreantpos.report;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.floreantpos.model.CouponAndDiscount;
import com.floreantpos.model.Ticket;
import com.floreantpos.model.TicketCouponAndDiscount;
import com.floreantpos.swing.ListTableModel;
public class SalesExceptionReport {
private Date fromDate;
private Date toDate;
private Date reportTime;
private List<VoidData> voidedTickets = new ArrayList<VoidData>();
private Map<Integer, DiscountData> disountMap = new HashMap<Integer, DiscountData>();
public void addVoidToVoidData(Ticket ticket) {
double amount = ticket.getSubtotalAmount();
String voidReason = ticket.getVoidReason();
/*boolean found = false;
for (VoidData voidData : voidedTickets) {
if (voidData.getReasonCode().equalsIgnoreCase(voidReason)) {
voidData.setCount(voidData.getCount() + 1);
voidData.setAmount(voidData.getAmount() + amount);
found = true;
break;
}
}*/
//if (!found) {
VoidData voidData = new VoidData();
voidData.id = ticket.getId();
voidData.setReasonCode(voidReason);
voidData.setCount(1);
voidData.setAmount(amount);
voidData.wasted = ticket.isWasted();
voidedTickets.add(voidData);
//}
}
public void addDiscountData(Ticket ticket) {
List<TicketCouponAndDiscount> discounts = ticket.getCouponAndDiscounts();
if (discounts != null) {
for (TicketCouponAndDiscount discount : discounts) {
String name = discount.getName();
DiscountData discountData = disountMap.get(discount.getCouponAndDiscountId());
if (discountData == null) {
discountData = new DiscountData();
discountData.code = discount.getCouponAndDiscountId();
discountData.name = name;
disountMap.put(discount.getCouponAndDiscountId(), discountData);
}
discountData.totalCount = ++discountData.totalCount;
discountData.totalDiscount = discountData.totalDiscount + discount.getValue();
discountData.totalGuest = discountData.totalGuest + ticket.getNumberOfGuests();
discountData.totalNetSales = discountData.totalNetSales + ticket.getSubtotalAmount();
discountData.partySize = (double) (discountData.totalGuest / (double) discountData.totalCount);
discountData.checkSize = (double) (discountData.totalNetSales / (double) discountData.totalCount);
}
}
}
public void addEmptyDiscounts(List<CouponAndDiscount> discounts) {
if(discounts != null) {
for (CouponAndDiscount discount : discounts) {
String name = discount.getName();
DiscountData discountData = disountMap.get(discount.getId());
if (discountData == null) {
discountData = new DiscountData();
discountData.code = discount.getId();
discountData.name = name;
disountMap.put(discount.getId(), discountData);
}
}
}
}
public static class VoidData {
Integer id;
private String reasonCode;
private int count;
private double amount;
boolean wasted;
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getReasonCode() {
return reasonCode;
}
public void setReasonCode(String reasonCode) {
this.reasonCode = reasonCode;
}
}
public static class DiscountData {
private int code;
private String name;
private int totalCount;
private double totalDiscount;
private double totalNetSales;
private double totalGuest;
private double partySize;
private double checkSize;
private double countPercentage;
private double ratioDNet;
public double getCheckSize() {
return checkSize;
}
public void setCheckSize(double checkSize) {
this.checkSize = checkSize;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public double getCountPercentage() {
return countPercentage;
}
public void setCountPercentage(double countPercentage) {
this.countPercentage = countPercentage;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPartySize() {
return partySize;
}
public void setPartySize(double partySize) {
this.partySize = partySize;
}
public double getRatioDNet() {
return ratioDNet;
}
public void setRatioDNet(double ratioDNet) {
this.ratioDNet = ratioDNet;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public double getTotalDiscount() {
return totalDiscount;
}
public void setTotalDiscount(double totalDiscount) {
this.totalDiscount = totalDiscount;
}
public double getTotalGuest() {
return totalGuest;
}
public void setTotalGuest(double totalGuest) {
this.totalGuest = totalGuest;
}
public double getTotalNetSales() {
return totalNetSales;
}
public void setTotalNetSales(double totalNetSales) {
this.totalNetSales = totalNetSales;
}
}
/**
* @param args
*/
public static void main(String[] args) {
}
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 Date getToDate() {
return toDate;
}
public void setToDate(Date toDate) {
this.toDate = toDate;
}
public VoidTableModel getVoidTableModel() {
VoidTableModel model = new VoidTableModel();
model.setRows(this.voidedTickets);
return model;
}
public DiscountTableModel getDiscountTableModel() {
DiscountTableModel model = new DiscountTableModel();
ArrayList list = new ArrayList(disountMap.values());
model.setRows(list);
return model;
}
public class VoidTableModel extends ListTableModel {
public VoidTableModel() {
setColumnNames(new String[] { "code", "reason", "wast", "qty", "amount" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
}
public Object getValueAt(int rowIndex, int columnIndex) {
VoidData data = (VoidData) rows.get(rowIndex);
switch (columnIndex) {
case 0:
return String.valueOf(data.id);
case 1:
return data.getReasonCode();
case 2:
return data.wasted ? "Y" : "N"; //$NON-NLS-1$ //$NON-NLS-2$
case 3:
return String.valueOf(data.getCount());
case 4:
return data.getAmount();
}
return null;
}
}
public class DiscountTableModel extends ListTableModel {
public DiscountTableModel() {
setColumnNames(new String[] { "no", "name", "code", "totalCount", "totalDiscount", "totalNetSales", "totalGuests", "partySize", "checkSize", "countPercent", "ratioDnet" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ //$NON-NLS-11$
}
public Object getValueAt(int rowIndex, int columnIndex) {
DiscountData data = (DiscountData) rows.get(rowIndex);
switch (columnIndex) {
case 0:
return data.code;
case 1:
return data.name;
case 2:
return data.code;
case 3:
return data.totalCount;
case 4:
return data.totalDiscount;
case 5:
return data.totalNetSales;
case 6:
return data.totalGuest;
case 7:
return data.partySize;
case 8:
return data.checkSize;
case 9:
return data.countPercentage;
case 10:
return data.ratioDNet;
}
return null;
}
}
}
- Details
- Last Updated: Monday, 04 April 2016 02:04
- Hits: 37016165