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; } }