package com.topsun.posclient.sales.ui.print;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import com.topsun.posclient.common.AppConstants;
import com.topsun.posclient.common.POSClientApp;
import com.topsun.posclient.common.POSException;
import com.topsun.posclient.common.ProjectUtil;
import com.topsun.posclient.common.service.IBaseService;
import com.topsun.posclient.common.service.impl.BaseServiceImpl;
import com.topsun.posclient.datamodel.Invoice;
import com.topsun.posclient.datamodel.PartSales;
import com.topsun.posclient.datamodel.RetailFP;
import com.topsun.posclient.sales.ui.gold.PartSalesManager;
/**
* @author Dong
*
*/
public class SamplePrintProcessor implements IPrintProcessor{
private Invoice currentInvoice;
private PartSales partSales;
IBaseService baseService = new BaseServiceImpl();
public SamplePrintProcessor(){}
public SamplePrintProcessor(Invoice currentInvoice, PartSales partSales){
this.currentInvoice = currentInvoice;
this.partSales = partSales;
}
public RetailFP process(int indexPage, int totalPage, String payCompany, String invoiceNumber,String invoiceCode, String invoiceAmount) throws POSException {
RetailFP retailFP = new RetailFP();
Invoice invoice = baseService.getInvoiceByNum(invoiceNumber, invoiceCode);
if(null == invoice){
throw new POSException("本地发票数据为空");
}
retailFP.setFPDM(invoice.getFPDM());
retailFP.setFPH(invoice.getFPH());
retailFP.setFPMSID(String.valueOf(invoice.getID()));
retailFP.setItemCode(partSales.getItemList().get(indexPage - 1).getItemCode());
retailFP.setItemID(String.valueOf(partSales.getItemList().get(indexPage - 1).getId()));
retailFP.setKPRID(payCompany);
retailFP.setPOS(POSClientApp.get().getSysConfig().getPosNo());
retailFP.setShopID(POSClientApp.get().getSysConfig().getOwnerShop());
retailFP.setUsedDate(ProjectUtil.getCurrentDateByFormat(null));
// 退货设置原发票
if (partSales.getSalesType() == AppConstants.SALES_TYPE_RETURNED
|| partSales.getSalesType() == AppConstants.SALES_TYPE_GOLDTIMEOUT) {
retailFP.setOldFPH("");
}
if (partSales.getSalesType() == AppConstants.SALES_TYPE_RETURNED){
Calendar cal = Calendar.getInstance();
int currentMonth = cal.get(Calendar.MONTH) + 1;
Calendar cal1 = ProjectUtil.getCalendar(partSales.getSalesDate());
int salesMonth = cal1.get(Calendar.MONTH) + 1;
if(currentMonth != salesMonth){
//如果是退货就判断一下是否为当月,还是上月
//当月为废票-4
retailFP.setType("3");
}else{
retailFP.setType("4");
}
}else{
retailFP.setType("2");
}
retailFP.setInvoiceAmount(ProjectUtil.formatString(invoiceAmount).toString());
int printNum = PartSalesManager.getInstance().getPrintNum();
PartSalesManager.getInstance().setPrintNum(printNum + 1);
// 打印成功删除发票号码数据
baseService.deleteInvoiceNumber(invoiceNumber);
return retailFP;
}
/* (non-Javadoc)
* @see com.topsun.posclient.sales.ui.print.IPrintProcessor#deleteBeforeFP(java.lang.String)
*/
public void deleteBeforeFP(Invoice delInvoice) throws POSException {
if(null == delInvoice || null == delInvoice.getLastFPH() || "".equals(delInvoice.getLastFPH())){
return;
}
allLastInvoice = new ArrayList<Invoice>();
List<Invoice> delInvoices = getAllLastInvocice(delInvoice.getLastFPH());
if(null == delInvoices || delInvoices.size() == 0){
return;
}
for(Invoice del : delInvoices){
baseService.deleteInvoiceNumber(del.getFPH());
}
}
List<Invoice> allLastInvoice = new ArrayList<Invoice>();
private List<Invoice> getAllLastInvocice(String fph) throws POSException{
Invoice invoice = baseService.getInvoice(fph);
if(null == invoice){
return allLastInvoice;
}
allLastInvoice.add(invoice);
if(!"".equals(invoice.getLastFPH())){
getAllLastInvocice(invoice.getLastFPH());
}
return allLastInvoice;
}
public Invoice getCurrentInvoice() {
return currentInvoice;
}
public void setCurrentInvoice(Invoice currentInvoice) {
this.currentInvoice = currentInvoice;
}
public PartSales getPartSales() {
return partSales;
}
public void setPartSales(PartSales partSales) {
this.partSales = partSales;
}
}