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