package com.topsun.posclient.sales.core; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import com.co.lane.print.test.OrderBean; import com.co.lane.print.test.OrderItem; import com.co.lane.print.test.OrderOldItem; import com.topsun.posclient.common.AppConstants; import com.topsun.posclient.common.POSClientApp; import com.topsun.posclient.common.ProjectUtil; import com.topsun.posclient.datamodel.CashierModel; import com.topsun.posclient.datamodel.Item; import com.topsun.posclient.datamodel.PartSales; /** * 零售打印数据处理 * * @author Dong * */ public class PartSalesPrintData { private String payCompany; private String itemName; private String invoiceNumber; private String invoiceCode; private BigDecimal invoiceAmount; private int pageIndex; List<OrderItem> listOrderItem; List<OrderOldItem> listOrderOldItem; /** * 根据页数获取打印数据对象 * @param currentPage * @param payCompany * @param partSales * @return */ public OrderBean getOrderBeanPrintData(int currentPage, String payCompany, PartSales partSales){ if(null == partSales || null == partSales.getItemList() || partSales.getItemList().size() == 0){ return null; } OrderBean printData = null; List<Item> items = partSales.getItemList(); //Filter print items List<Item> printItems = new ArrayList<Item>(); for(int i=0; i<items.size(); i++){ if(items.get(i).getItemType().equals(AppConstants.ITEM_TYPE_OLDGOLD)){ continue; } // add by tandong 在计算当前打印对象时,如果是换货的情况要排除被换购的旧品 if(partSales.getSalesType() == AppConstants.SALES_TYPE_EXECHANGE){ if(items.get(i).getItemType().equals(AppConstants.ITEM_TYPE_RETURNED)){ continue; } } // add by tandong printItems.add(items.get(i)); } printData = new OrderBean(); printData.setDocNum(partSales.getDocNum()); printData.setInvoiceCode(partSales.getInvoiceCode()); printData.setInvoiceNum(partSales.getInvoiceNumber()); printData.setInvoiceDate(ProjectUtil.getDateString(Calendar.getInstance().getTime())); // printData.setInvoiceDate(ProjectUtil.getDateString(partSales.getSalesDate())); //如果是换货的话,开票金额按合计金额乘以单品在所有换购新品中的比例算 if(partSales.getSalesType() == AppConstants.SALES_TYPE_EXECHANGE){ BigDecimal sumAmount = getPrintInvoiceAmountForExechange(printItems.get(currentPage -1), partSales, currentPage); printData.setSum(ProjectUtil.toChinese(sumAmount)); printData.setSumAmount(sumAmount); }else{ //解决没有重现的因为打印出现数组越界问题 if((currentPage - 1) >= printItems.size() ){ printData.setSum(ProjectUtil.toChinese(0)); printData.setSumAmount(new BigDecimal(0)); }else{ BigDecimal sumAmount = getPrintInvoiceAmount(printItems.get(currentPage -1), partSales, currentPage); printData.setSum(ProjectUtil.toChinese(sumAmount)); printData.setSumAmount(sumAmount); } } if(partSales.getSalesType() == AppConstants.SALES_TYPE_GOLDTIMEOUT){ printData.setBusType(printItems.get(currentPage - 1).getMatrnName()); }else{ printData.setBusType(printItems.get(currentPage - 1).getItemName()); } if(null != partSales.getVipUser() && null != partSales.getVipUser().getMenberName()){ printData.setPayComp(partSales.getVipUser().getMenberName()); }else{ printData.setPayComp(payCompany); } printData.setJE(POSClientApp.get().getLoginUser().getUserName()); printData.setYE(printItems.get(currentPage - 1).getCashierName()); printData.setSE(POSClientApp.get().getLoginUser().getUserName()); //换货处理,在添加打印项时,过滤掉被换购的原始单品 List<Item> printNewItems = new ArrayList<Item>(); for(Item ii : partSales.getItemList()){ if(ii.getItemType().equals(AppConstants.ITEM_TYPE_RETURNED)){ if(partSales.getSalesType() == AppConstants.SALES_TYPE_EXECHANGE){ continue; }else{ printNewItems.add(ii); } }else if(ii.getItemType().equals(AppConstants.ITEM_TYPE_OLDGOLD)){ continue; }else{ printNewItems.add(ii); } } printData.setGH(printNewItems.get(currentPage - 1).getZoneName()); printData.setListOrderItem(getOrderItemList(printNewItems.get(currentPage - 1))); printData.setListOrderOldItem(getOrderOldItemList(partSales, printItems.get(currentPage - 1))); //设置发票抵扣金额 BigDecimal dkAdd = new BigDecimal(0); for(OrderOldItem orderBean : printData.getListOrderOldItem()){ dkAdd = dkAdd.add(ProjectUtil.formatString(orderBean.getDK())); } printData.setDKTotal(ProjectUtil.formatAmount(null, dkAdd)); return printData; } public BigDecimal getPrintDKAmountTotal(PartSales partSales){ BigDecimal countAmount = partSales.getCountAmount(); BigDecimal dkAmountCount = new BigDecimal(0); for(Item oldItem : partSales.getItemList()){ if(oldItem.getItemType().equals(AppConstants.ITEM_TYPE_OLDGOLD)){ dkAmountCount = dkAmountCount.add(oldItem.getFactAmount()); } } if(dkAmountCount.compareTo(countAmount) == 1){ dkAmountCount = countAmount; } // BigDecimal point = item.getFactAmount().divide(countAmount, 2, BigDecimal.ROUND_HALF_UP); // return dkAmountCount.multiply(point); return dkAmountCount; } /** * 换货时获取开票金额,和其他销售类型获取开票金额不一样,换货时开票金额为所有结算方式(开票)之和,分摊到每个换购的新品中 * @param item * @param partSales * @param indexPage * @return */ public BigDecimal getPrintInvoiceAmountForExechange(Item item, PartSales partSales, int indexPage){ BigDecimal countAmount = partSales.getFactTotalAmount(); if(countAmount.compareTo(new BigDecimal(0)) == 0){ countAmount = partSales.getCountAmount(); } BigDecimal invoiceAmountCount = new BigDecimal(0); //整单实收金额=0;返回开票金额为0 if(countAmount.compareTo(new BigDecimal(0)) == 0){ return new BigDecimal(0); } BigDecimal newItemAmountCount = new BigDecimal(0); //单品在整单中的权重值 for(Item iii : partSales.getItemList()){ if(iii.getItemType().equals(AppConstants.ITEM_TYPE_RETURNED_NEW)){ newItemAmountCount = newItemAmountCount.add(iii.getFactAmount()); } } BigDecimal point = item.getFactAmount().divide(newItemAmountCount, 4, BigDecimal.ROUND_HALF_UP); //所有开票收款方式之和 List<CashierModel> cms = partSales.getCashierModelList(); for(CashierModel cm : cms){ if(cm.getIsPrint() == 0){ continue; } invoiceAmountCount = invoiceAmountCount.add(cm.getAmount()); } if(invoiceAmountCount.compareTo(new BigDecimal(0)) == 0){ return new BigDecimal(0); } //所有开票项的合计金额 >= 实收金额 if(invoiceAmountCount.compareTo(countAmount) == 1 || invoiceAmountCount.compareTo(countAmount) == 0){ invoiceAmountCount = countAmount;//总开票金额 = 实收金额 } BigDecimal ret = new BigDecimal(0); ret = invoiceAmountCount.multiply(point); return ret; } /** * 获取开票金额 * @param item * @param partSales * @return */ public BigDecimal getPrintInvoiceAmount(Item item, PartSales partSales, int indexPage){ System.out.println(""); System.out.println("获取开票金额,单品的实售金额为:"+item.getFactAmount()); BigDecimal invoiceAmount = item.getFactAmount();//开票金额等于单品的实售金额 BigDecimal countAmount = partSales.getFactTotalAmount(); if(null == countAmount || countAmount.compareTo(new BigDecimal(0)) == 0){ countAmount = partSales.getCountAmount(); } BigDecimal invoiceAmountCount = new BigDecimal(0); //整单实收金额=0;返回开票金额为0 if(null == countAmount || countAmount.compareTo(new BigDecimal(0)) == 0){ return new BigDecimal(0); } //所有开票收款方式之和 List<CashierModel> cms = partSales.getCashierModelList(); if(null == cms){ return new BigDecimal(0); } for(CashierModel cm : cms){ if(cm.getIsPrint() == 0){//不开票 continue; } invoiceAmountCount = invoiceAmountCount.add(cm.getAmount()); } if(invoiceAmountCount.compareTo(new BigDecimal(0)) == -1 || invoiceAmountCount.compareTo(new BigDecimal(0)) == 0){ return new BigDecimal(0); } //所有开票项的合计金额 >= 实收金额 if(invoiceAmountCount.compareTo(countAmount) == 1 || invoiceAmountCount.compareTo(countAmount) == 0){ invoiceAmountCount = countAmount;//总开票金额 = 实收金额 } if(invoiceAmountCount.compareTo(countAmount) == 0){//开票总金额=合计金额(不需要按权重分) invoiceAmount = item.getFactAmount(); }else{ BigDecimal noInvoiceAmountCount = countAmount.subtract(invoiceAmountCount);//不开票总金额,分配到每个单品 if(indexPage == SalesDataUtilHelper.getPrintPageCount(partSales)){//最后一个单品 if(item.isChaiPiao()){//如果是拆票之后的Item BigDecimal noInvoiceItem = SalesDataUtilHelper.getNoInvoiceAmountForLastCPItem(item.getItemCode(), partSales, noInvoiceAmountCount); invoiceAmount = invoiceAmount.subtract(noInvoiceItem); }else{ BigDecimal noInvoiceItem = SalesDataUtilHelper.getNoInvoiceAmountForLastItem(item.getItemCode(), partSales, noInvoiceAmountCount); invoiceAmount = invoiceAmount.subtract(noInvoiceItem); } }else{ if(item.isChaiPiao()){//如果是拆票之后的Item BigDecimal noInvoiceItem = SalesDataUtilHelper.getNoInvoiceAmountForCPItem(item.getItemCode(), partSales, noInvoiceAmountCount); invoiceAmount = invoiceAmount.subtract(noInvoiceItem); }else{ BigDecimal noInvoiceItem = SalesDataUtilHelper.getNoInvoiceAmountForItem(item, partSales, noInvoiceAmountCount); invoiceAmount = invoiceAmount.subtract(noInvoiceItem); } } } //减去该单品的旧金抵扣金额 if(item.isChaiPiao()){//被拆票的Item,如果是10W的不用减去旧金抵扣和其他直接返回factAmount作为开票金额 if(item.getFactAmount().compareTo(new BigDecimal(100000)) == 0){ return invoiceAmount; }else{ //减去旧金抵扣 //被拆票之后的最后一个单品 if(indexPage == SalesDataUtilHelper.getPrintPageCount(partSales)){ invoiceAmount = invoiceAmount.subtract(SalesDataUtilHelper.getOldAmountForLastCPItem(item.getItemCode(), partSales)); }else{ invoiceAmount = invoiceAmount.subtract(SalesDataUtilHelper.getOldAmountForCPItem(item.getItemCode(), partSales)); } } }else{//没有拆票的直接减去旧金 invoiceAmount = invoiceAmount.subtract(SalesDataUtil.getOldAmountForItem(item, indexPage-1, partSales)); //如果是会员销售,开票金额-会员分摊到改单品的积分抵扣金额 if(partSales.isVip()){ //计算所有单品的合计金额 BigDecimal count = new BigDecimal(0); for(Item ii : partSales.getItemList()){ if(ii.getItemType().equals(AppConstants.ITEM_TYPE_OLDGOLD)){ continue; } count = count.add(item.getFactAmount()); } BigDecimal ponintDisAdd = new BigDecimal(0);//积分抵扣累计 if(indexPage == SalesDataUtilHelper.getPrintPageCount(partSales)){//最后一个单品的积分抵扣 for(Item i : partSales.getItemList()){ if(i.getItemCode().equals(item.getItemCode()) && i.getId() == i.getId()){ invoiceAmount = invoiceAmount.subtract(ponintDisAdd); }else{ BigDecimal itemPoint = item.getFactAmount().divide(count, 4, BigDecimal.ROUND_HALF_UP); ponintDisAdd = ponintDisAdd.add((null == partSales.getMemberAmount()?new BigDecimal(0):partSales.getMemberAmount()).multiply(itemPoint)); } } }else{ BigDecimal itemPoint = item.getFactAmount().divide(count, 4, BigDecimal.ROUND_HALF_UP);//当前单品分配到的会员积分抵扣金额权重值 invoiceAmount = invoiceAmount.subtract(null == partSales.getMemberAmount()?new BigDecimal(0):partSales.getMemberAmount().multiply(itemPoint)); } } } invoiceAmount = invoiceAmount.setScale(2, BigDecimal.ROUND_HALF_UP); return invoiceAmount; } /** * 获取打印的旧金集合,换货的时候为被换的单品集合,显示在打印纸的下面列表中 * @param partSales 销售信息 * @return 旧金集合 */ public List<OrderOldItem> getOrderOldItemList(PartSales partSales, Item currentPrintItem ){ List<OrderOldItem> listOrderOldItem = new ArrayList<OrderOldItem>(); for(Item item : partSales.getItemList()){ //退换货的时候 if(null == item.getItemType()){ return listOrderOldItem; } if(item.getItemType().equals(AppConstants.ITEM_TYPE_RETURNED) || item.getItemType().equals(AppConstants.ITEM_TYPE_UNRETURNED) || item.getItemType().equals(AppConstants.ITEM_TYPE_OLDGOLD)){ OrderOldItem ooItem = new OrderOldItem(); BigDecimal cjz = null == item.getZDPZL()?new BigDecimal(0):item.getZDPZL(); cjz.setScale(2, BigDecimal.ROUND_HALF_UP); ooItem.setCJZ(ProjectUtil.formatAmount(null, cjz)); ooItem.setCS(item.getZSJCS()); ooItem.setDK(ProjectUtil.formatAmount(null, getOrderItemDKAmount(partSales,currentPrintItem,item))); ooItem.setFFF(ProjectUtil.formatAmount(null,null == item.getFactZJGF()?new BigDecimal(0):item.getFactZJGF())); ooItem.setHSB(""); ooItem.setItemCode(item.getItemCode()); ooItem.setItemName(item.getItemName()); ooItem.setJZ(item.getZDPYZL().toString()); //退货和无源退货金额打印负数 ooItem.setPC(ProjectUtil.formatAmount(null, item.getFactAmount())); ooItem.setQty("1"); ooItem.setZJZ(""); listOrderOldItem.add(ooItem); } } return listOrderOldItem; } /** * 获取当前打印的Item的抵扣金额 * @param partSales 销售信息 * @param orderItem 当前的打印数据 * @param orderOldItem 当前打印的旧金数据 * @return 抵扣金额(按照权重分配) */ private BigDecimal getOrderItemDKAmount(PartSales partSales, Item currentPrintItem, Item oldItem){ BigDecimal dkAmount = new BigDecimal(0); if(partSales.getCountAmount().compareTo(new BigDecimal(0)) == 0){ return dkAmount; } BigDecimal newItemAmountCount = new BigDecimal(0); for(Item iii : partSales.getItemList()){ if(iii.getItemType().equals(AppConstants.ITEM_TYPE_OLDGOLD)){ continue; } if(iii.getItemType().equals(AppConstants.ITEM_TYPE_RETURNED)){ if(partSales.getSalesType() == AppConstants.SALES_TYPE_EXECHANGE){ continue; } } newItemAmountCount = newItemAmountCount.add(iii.getFactAmount()); } BigDecimal point = currentPrintItem.getFactAmount().divide(newItemAmountCount, 4, BigDecimal.ROUND_HALF_UP); if(partSales.getSalesType() == AppConstants.SALES_TYPE_EXECHANGE || partSales.getSalesType() == AppConstants.SALES_TYPE_RETURNED){ dkAmount = oldItem.getPayAmount().multiply(point); }else{ dkAmount = oldItem.getFactAmount().multiply(point); } return dkAmount; } /** * 获取打印的新品列表,显示在打印的纸张上面 * @param item 单品 * @return */ private List<OrderItem> getOrderItemList(Item item){ List<OrderItem> listOrderItem = new ArrayList<OrderItem>(); if(!item.getItemType().equals(AppConstants.ITEM_TYPE_RETURNED) && !item.getItemType().equals(AppConstants.ITEM_TYPE_UNRETURNED) && !item.getItemType().equals(AppConstants.ITEM_TYPE_OLDGOLD)){ OrderItem item1 = new OrderItem(); item1.setItemCode(item.getItemCode()); item1.setItemName(item.getItemName()); item1.setQty("1"); item1.setCS(item.getZSJCS()); item1.setJZ(null == item.getZDPZL()?"":item.getZDPZL().toString()); item1.setFZ(null == item.getZFZZZL()?"":item.getZFZZZL().toString()); item1.setPC(ProjectUtil.formatAmount(null, item.getPrice())); item1.setJGF(ProjectUtil.formatAmount(null, item.getZJGF())); item1.setYS(ProjectUtil.formatAmount(null, item.getSalesAmount())); item1.setSS(ProjectUtil.formatAmount(null, item.getFactAmount())); item1.setYJ(item.getZCSBJ()); item1.setMO(item.getZYTM()); listOrderItem.add(item1); } return listOrderItem; } /** * 打印时,转换partSales,主要是拆票处理 * @param partSales * @return */ public PartSales convertPartSalesForChaiPiao(PartSales partSales){ PartSales printPartSales = new PartSales(); printPartSales.setBalloter(partSales.getBalloter()); printPartSales.setBookDocNum(partSales.getBookDocNum()); printPartSales.setCashBackAmount(partSales.getCashBackAmount()); printPartSales.setCashierModelList(partSales.getCashierModelList()); printPartSales.setCountAmount(partSales.getCountAmount()); printPartSales.setDiscountAccount(partSales.getDiscountAccount()); printPartSales.setDiscountAmount(partSales.getDiscountAmount()); printPartSales.setDiscountRate(partSales.getDiscountRate()); printPartSales.setDiscountToZero(partSales.getDiscountToZero()); printPartSales.setDocNum(partSales.getDocNum()); printPartSales.setFactTotalAmount(partSales.getFactTotalAmount()); printPartSales.setInvoiceCode(partSales.getInvoiceCode()); printPartSales.setInvoiceNumber(partSales.getInvoiceNumber()); printPartSales.setIsReplace(partSales.getIsReplace()); printPartSales.setIsReturn(partSales.getIsReturn()); printPartSales.setItemList(new ArrayList<Item>()); printPartSales.setMemberAmount(partSales.getMemberAmount()); printPartSales.setMlimit(partSales.isMlimit()); printPartSales.setMratio(partSales.isMratio()); printPartSales.setOgDocNum(partSales.getOgDocNum()); printPartSales.setSalesDate(partSales.getSalesDate()); printPartSales.setSalesType(partSales.getSalesType()); printPartSales.setShopId(partSales.getShopId()); printPartSales.setSourceNum(partSales.getSourceNum()); printPartSales.setUsePoint(partSales.getUsePoint()); printPartSales.setVip(partSales.isVip()); printPartSales.setVipUser(partSales.getVipUser()); printPartSales.setOldDocNum(partSales.getOldDocNum()); List<Item> itemList = partSales.getItemList(); //如果销售类型为换货,被换购的单品就不需要打印发票所以直接continue遍历下一个单品 if(partSales.getSalesType() == AppConstants.SALES_TYPE_EXECHANGE){ for(int i=0; i<itemList.size(); i++){ if(itemList.get(i).getItemType().equals(AppConstants.ITEM_TYPE_RETURNED)){ continue; }else{ setPrintPartSales(printPartSales,partSales, i); } } }else{ for(int i=0; i<itemList.size(); i++){ if(itemList.get(i).getItemType().equals(AppConstants.ITEM_TYPE_OLDGOLD)){ printPartSales.getItemList().add(itemList.get(i)); }else{ setPrintPartSales(printPartSales,partSales, i); } } } return printPartSales; } /** * 对象转换,零售对象转换,在开发票时,排除旧金和退货 * @param partSales * @return */ public PartSales convertPartSalesForFP(PartSales partSales){ PartSales printPartSales = new PartSales(); printPartSales.setBalloter(partSales.getBalloter()); printPartSales.setBookDocNum(partSales.getBookDocNum()); printPartSales.setCashBackAmount(partSales.getCashBackAmount()); printPartSales.setCashierModelList(partSales.getCashierModelList()); printPartSales.setCountAmount(partSales.getCountAmount()); printPartSales.setDiscountAccount(partSales.getDiscountAccount()); printPartSales.setDiscountAmount(partSales.getDiscountAmount()); printPartSales.setDiscountRate(partSales.getDiscountRate()); printPartSales.setDiscountToZero(partSales.getDiscountToZero()); printPartSales.setDocNum(partSales.getDocNum()); printPartSales.setFactTotalAmount(partSales.getFactTotalAmount()); printPartSales.setInvoiceCode(partSales.getInvoiceCode()); printPartSales.setInvoiceNumber(partSales.getInvoiceNumber()); printPartSales.setIsReplace(partSales.getIsReplace()); printPartSales.setIsReturn(partSales.getIsReturn()); printPartSales.setItemList(new ArrayList<Item>()); printPartSales.setMemberAmount(partSales.getMemberAmount()); printPartSales.setMlimit(partSales.isMlimit()); printPartSales.setMratio(partSales.isMratio()); printPartSales.setOgDocNum(partSales.getOgDocNum()); printPartSales.setSalesDate(partSales.getSalesDate()); printPartSales.setSalesType(partSales.getSalesType()); printPartSales.setShopId(partSales.getShopId()); printPartSales.setSourceNum(partSales.getSourceNum()); printPartSales.setUsePoint(partSales.getUsePoint()); printPartSales.setVip(partSales.isVip()); printPartSales.setVipUser(partSales.getVipUser()); List<Item> itemList = partSales.getItemList(); //如果销售类型为换货,被换购的单品就不需要打印发票所以直接continue遍历下一个单品 if(partSales.getSalesType() == AppConstants.SALES_TYPE_EXECHANGE){ for(int i=0; i<itemList.size(); i++){ if(itemList.get(i).getItemType().equals(AppConstants.ITEM_TYPE_RETURNED)){ continue; }else{ printPartSales.getItemList().add(itemList.get(i)); } } }else{ for(int i=0; i<itemList.size(); i++){ //旧金和退货不需要拆票处理 if(itemList.get(i).getItemType().equals(AppConstants.ITEM_TYPE_OLDGOLD)){ continue; }else{ printPartSales.getItemList().add(itemList.get(i)); } } } return printPartSales; } /** * 设置打印零售信息(拆票处理) * @param printData 需要打印的零售信息 * @param partSales 零售信息 * @param index 单品索引 */ private void setPrintPartSales(PartSales printData, PartSales partSales, int index){ List<Item> itemList = partSales.getItemList(); Item currentItem = itemList.get(index); BigDecimal countAmount = partSales.getFactTotalAmount(); if(countAmount.compareTo(new BigDecimal(0)) == 0){ countAmount = partSales.getCountAmount(); } BigDecimal itemInvoiceAmount = getPrintInvoiceAmount(currentItem, partSales, index+1); if(itemInvoiceAmount.compareTo(new BigDecimal(100000)) == 1){ int printItemSize = itemInvoiceAmount.divide(new BigDecimal(100000), 0, BigDecimal.ROUND_UP).intValue(); BigDecimal factAmountCount = new BigDecimal(0); BigDecimal priceCount = new BigDecimal(0); for(int j=0; j<printItemSize; j++){ Item pItem = new Item(); pItem.setBookingDays(currentItem.getBookingDays()); pItem.setCashier(currentItem.getCashier()); pItem.setCashierName(currentItem.getCashierName()); pItem.setDISCOUNT1(currentItem.getDISCOUNT1()); pItem.setDISCOUNT2(currentItem.getDISCOUNT2()); pItem.setDocNum(currentItem.getDocNum()); if(j == printItemSize-1){ pItem.setFactAmount(currentItem.getFactAmount().subtract(factAmountCount)); }else{ pItem.setFactAmount(new BigDecimal(100000)); factAmountCount = factAmountCount.add(new BigDecimal(100000)); } pItem.setFactZJGF(null); pItem.setHasGiveaway(currentItem.getHasGiveaway()); pItem.setId(currentItem.getId()); pItem.setInvoceCode(currentItem.getInvoceCode()); pItem.setIsOldGold(currentItem.getIsOldGold()); pItem.setItemCode(currentItem.getItemCode()); pItem.setItemName(currentItem.getItemName()); pItem.setItemStatus(currentItem.getItemStatus()); pItem.setItemType(currentItem.getItemType()); pItem.setMatkl(currentItem.getMatkl()); pItem.setMATNR(currentItem.getMATNR()); pItem.setMatrnName(currentItem.getMatrnName()); pItem.setNum(currentItem.getNum()); pItem.setPretlAmount(currentItem.getPretlAmount()); if(currentItem.getMatkl().startsWith("1")){//如果是素金 pItem.setPrice(currentItem.getPrice()); }else{ if(j == printItemSize-1){ pItem.setPrice(currentItem.getFactAmount().subtract(priceCount)); }else{ pItem.setPrice(new BigDecimal(100000)); priceCount = priceCount.add(new BigDecimal(100000)); } } pItem.setPromotionId(currentItem.getPromotionId()); pItem.setPromotionName(currentItem.getPromotionName()); pItem.setSalesAmount(null); pItem.setUnSalePart(currentItem.getUnSalePart()); pItem.setZCSBJ(currentItem.getZCSBJ()); pItem.setZDPYZL(currentItem.getZDPYZL()); pItem.setZDPZL(null); pItem.setZFZZZL(null); pItem.setZJGF(null); pItem.setZJSHJFS(currentItem.getZJSHJFS()); pItem.setZKJGFLS(currentItem.getZKJGFLS()); pItem.setZMDDXJSJ(currentItem.getZMDDXJSJ()); pItem.setZMDLSBQJ(currentItem.getZMDLSBQJ()); pItem.setZoneID(currentItem.getZoneID()); pItem.setZSJCS(currentItem.getZSJCS()); pItem.setZSSGS(currentItem.getZSSGS()); pItem.setZSSMD(currentItem.getZSSMD()); pItem.setZYTM(currentItem.getZYTM()); pItem.setZKJYF(currentItem.getZKJYF()); pItem.setZZZZZ(currentItem.getZZZZZ()); pItem.setOldDocNum(partSales.getOldDocNum()); pItem.setChaiPiao(true);//设置拆票=true pItem.setPayAmount(currentItem.getFactAmount()); printData.getItemList().add(pItem); } }else if(itemInvoiceAmount.compareTo(new BigDecimal(-100000)) == -1){//小于-100000,退货金额为负数 int printItemSize = itemInvoiceAmount.divide(new BigDecimal(-100000), 0, BigDecimal.ROUND_UP).intValue(); BigDecimal factAmountCount = new BigDecimal(0); BigDecimal priceCount = new BigDecimal(0); for(int j=0; j<printItemSize; j++){ Item pItem = new Item(); pItem.setBookingDays(currentItem.getBookingDays()); pItem.setCashier(currentItem.getCashier()); pItem.setCashierName(currentItem.getCashierName()); pItem.setDISCOUNT1(currentItem.getDISCOUNT1()); pItem.setDISCOUNT2(currentItem.getDISCOUNT2()); pItem.setDocNum(currentItem.getDocNum()); if(j == printItemSize-1){ pItem.setFactAmount(currentItem.getFactAmount().subtract(factAmountCount)); }else{ pItem.setFactAmount(new BigDecimal(-100000)); factAmountCount = factAmountCount.add(new BigDecimal(-100000)); } pItem.setFactZJGF(null); pItem.setHasGiveaway(currentItem.getHasGiveaway()); pItem.setId(currentItem.getId()); pItem.setInvoceCode(currentItem.getInvoceCode()); pItem.setIsOldGold(currentItem.getIsOldGold()); pItem.setItemCode(currentItem.getItemCode()); pItem.setItemName(currentItem.getItemName()); pItem.setItemStatus(currentItem.getItemStatus()); pItem.setItemType(currentItem.getItemType()); pItem.setMatkl(currentItem.getMatkl()); pItem.setMATNR(currentItem.getMATNR()); pItem.setMatrnName(currentItem.getMatrnName()); pItem.setNum(currentItem.getNum()); pItem.setPretlAmount(currentItem.getPretlAmount()); if(currentItem.getMatkl().startsWith("1")){//如果是素金 pItem.setPrice(currentItem.getPrice()); }else{ if(j == printItemSize-1){ pItem.setPrice(currentItem.getFactAmount().subtract(priceCount)); }else{ pItem.setPrice(new BigDecimal(-100000)); priceCount = priceCount.add(new BigDecimal(-100000)); } } pItem.setPromotionId(currentItem.getPromotionId()); pItem.setPromotionName(currentItem.getPromotionName()); pItem.setSalesAmount(null); pItem.setUnSalePart(currentItem.getUnSalePart()); pItem.setZCSBJ(currentItem.getZCSBJ()); pItem.setZDPYZL(currentItem.getZDPYZL()); pItem.setZDPZL(null); pItem.setZFZZZL(null); pItem.setZJGF(null); pItem.setZJSHJFS(currentItem.getZJSHJFS()); pItem.setZKJGFLS(currentItem.getZKJGFLS()); pItem.setZMDDXJSJ(currentItem.getZMDDXJSJ()); pItem.setZMDLSBQJ(currentItem.getZMDLSBQJ()); pItem.setZoneID(currentItem.getZoneID()); pItem.setZSJCS(currentItem.getZSJCS()); pItem.setZSSGS(currentItem.getZSSGS()); pItem.setZSSMD(currentItem.getZSSMD()); pItem.setZYTM(currentItem.getZYTM()); pItem.setZKJYF(currentItem.getZKJYF()); pItem.setZZZZZ(currentItem.getZZZZZ()); pItem.setOldDocNum(partSales.getOldDocNum()); pItem.setChaiPiao(true);//设置拆票=true printData.getItemList().add(pItem); } }else{ printData.getItemList().add(currentItem); } } public final String getPayCompany() { return payCompany; } public final void setPayCompany(String payCompany) { this.payCompany = payCompany; } public final String getItemName() { return itemName; } public final void setItemName(String itemName) { this.itemName = itemName; } public final String getInvoiceNumber() { return invoiceNumber; } public final void setInvoiceNumber(String invoiceNumber) { this.invoiceNumber = invoiceNumber; } public final String getInvoiceCode() { return invoiceCode; } public final void setInvoiceCode(String invoiceCode) { this.invoiceCode = invoiceCode; } public final BigDecimal getInvoiceAmount() { return invoiceAmount; } public final void setInvoiceAmount(BigDecimal invoiceAmount) { this.invoiceAmount = invoiceAmount; } public final int getPageIndex() { return pageIndex; } public final void setPageIndex(int pageIndex) { this.pageIndex = pageIndex; } public final List<OrderItem> getListOrderItem() { return listOrderItem; } public final void setListOrderItem(List<OrderItem> listOrderItem) { this.listOrderItem = listOrderItem; } public final List<OrderOldItem> getListOrderOldItem() { return listOrderOldItem; } public final void setListOrderOldItem(List<OrderOldItem> listOrderOldItem) { this.listOrderOldItem = listOrderOldItem; } }