From 7ec998fe0bfc7c0366e52ed5389ae48faabf61f1 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 13 Jan 2021 18:02:05 +0800
Subject: [PATCH] modify

---
 zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java            |   52 +++-
 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html |  223 ++++++++++++++++-----
 zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderItem.java                 |   26 ++
 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html   |    8 
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java |   14 
 zq-erp/src/main/java/com/matrix/system/hive/bean/SysInstoreInfo.java               |    1 
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java   |  222 ++++++++++++++-------
 zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml                  |    2 
 8 files changed, 386 insertions(+), 162 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
index e9db49e..cb1407a 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
@@ -42,6 +42,7 @@
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -138,6 +139,7 @@
         SysUsers user = getMe();
         sysOrder.setShopId(user.getShopId());
         sysOrder.setStatu(Dictionary.ORDER_STATU_TK);
+        sysOrder.setOrderTime(new Date());
         //校验订单是否满足结算调价,新订单则保存订单,已有订单则删除后更新
         sysOrder = orderService.checkAndSaveOrder(sysOrder);
         orderService.refundOrderMoney(sysOrder);
@@ -371,22 +373,18 @@
         return "admin/hive/beautySalon/point-order";
     }
 
-    /**
-     * 跳转 消费流水详情页面
-     *
-     * @author jyy
-     */
-    @RequestMapping(value = "/orderItem")
-    public String orderItem(SysOrder orderVo) {
+    @RequestMapping(value = "/findOrderDetailByIdOrNo")
+    @ResponseBody
+    public AjaxResult findOrderDetailByIdOrNo(SysOrder orderVo) {
         // 根据id查到对应的订单信息
         SysOrder order=null;
         if(orderVo.getId()!=null){
-           order  = orderService.findById(orderVo.getId());
+            order  = orderService.findById(orderVo.getId());
         }else if(StringUtils.isNotBlank(orderVo.getOrderNo())){
-           List<SysOrder> byModel = orderService.findByModel(orderVo);
-           if(byModel.size()==1){
-               order=orderService.findById(byModel.get(0).getId());
-           }
+            List<SysOrder> byModel = orderService.findByModel(orderVo);
+            if(byModel.size()==1){
+                order=orderService.findById(byModel.get(0).getId());
+            }
         }
         List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(order.getId());
         order.setItems(sysOrderItems);
@@ -406,12 +404,30 @@
         List<SysOrderFlow> payMethods = sysOrderFlowService.findPayMethodsAmount(order.getId());
 
         List<AchieveNew> achieveList = achieveNewService.findOrderItemAchieve(order.getId());
-        WebUtil.getRequest().setAttribute("orderItems", orderItems);
-        WebUtil.getRequest().setAttribute("order", order);
-        WebUtil.getRequest().setAttribute("cards", cards);
-        WebUtil.getRequest().setAttribute("vipInfo", vipInfo);
-        WebUtil.getRequest().setAttribute("payMethods", payMethods);
-        WebUtil.getRequest().setAttribute("achieveList", achieveList);
+
+        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功");
+        ajaxResult.putInMap("orderItems", orderItems);
+        ajaxResult.putInMap("order", order);
+        ajaxResult.putInMap("cards", cards);
+        ajaxResult.putInMap("vipInfo", vipInfo);
+        ajaxResult.putInMap("payMethods", payMethods);
+        ajaxResult.putInMap("achieveList", achieveList);
+        return ajaxResult;
+    }
+
+    /**
+     * 跳转 消费流水详情页面
+     *
+     * @author jyy
+     */
+    @RequestMapping(value = "/orderItem")
+    public String orderItem(SysOrder orderVo) {
+
+        if(orderVo.getId()!=null){
+            WebUtil.getRequest().setAttribute("orderParam", orderVo.getId());
+        }else if(StringUtils.isNotBlank(orderVo.getOrderNo())){
+            WebUtil.getRequest().setAttribute("orderParam", orderVo.getOrderNo());
+        }
         return "admin/hive/beautySalon/orderXq-form";
     }
 
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysInstoreInfo.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysInstoreInfo.java
index 5974dbb..266437e 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysInstoreInfo.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysInstoreInfo.java
@@ -18,6 +18,7 @@
 
 	private static final long serialVersionUID = 1L;
 
+	public static final String INSTORE_TYPE_RETURN = "退货入库";
 
 	/**
 	 * 序号
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderItem.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderItem.java
index dc1bdea..c572e30 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderItem.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderItem.java
@@ -129,6 +129,32 @@
 	 */
 	private int preCount;
 
+	/**
+	 * 是否退库存
+	 */
+	private String isReturnStore;
+
+	/**
+	 * 退款时,原itemid
+	 */
+	private Long oldItemId;
+
+	public Long getOldItemId() {
+		return oldItemId;
+	}
+
+	public void setOldItemId(Long oldItemId) {
+		this.oldItemId = oldItemId;
+	}
+
+	public String getIsReturnStore() {
+		return isReturnStore;
+	}
+
+	public void setIsReturnStore(String isReturnStore) {
+		this.isReturnStore = isReturnStore;
+	}
+
 	public int getPreCount() {
 		return preCount;
 	}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java
index 520998d..98cdde4 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java
@@ -225,14 +225,6 @@
                             achieveNewList.add(achieveNew);
                         }
                     }
-                } else {
-                    // 如果该订单明细没有设置美疗师则单独设置顾问业绩
-                    AchieveNew achieveNew = new AchieveNew();
-                    // 顾问业绩等于收款金额
-                    achieveNew.setT1(orderItem.getPayMoney() + "");
-                    buildAchieve(pageOrder, orderItem, achieveNew);
-                    // 新增顾问业绩
-                    achieveNewList.add(achieveNew);
                 }
             }
         }
@@ -245,6 +237,12 @@
     ShoppingGoodsDao shoppingGoodsDao;
 
     private void buildAchieve(SysOrder pageOrder, SysOrderItem orderItem, AchieveNew achieveNew) {
+        if (Dictionary.ORDER_STATU_TK.equals(pageOrder.getStatu())) {
+            achieveNew.setId(null);
+            achieveNew.setProjPercentage(0 - achieveNew.getProjPercentage());
+            achieveNew.setT1((0 - Double.parseDouble(achieveNew.getT1())) + "");
+        }
+
         achieveNew.setVipId(pageOrder.getVipId());
         achieveNew.setSaleId(pageOrder.getStaffId());
 
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
index 2afd6ee..4a5ebcc 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -25,16 +25,14 @@
 import com.matrix.system.hive.pojo.CzXkVo;
 import com.matrix.system.hive.pojo.ShoppingCarItem;
 import com.matrix.system.hive.pojo.ShoppingCarItemsVo;
-import com.matrix.system.hive.service.AchieveNewService;
-import com.matrix.system.hive.service.CodeService;
-import com.matrix.system.hive.service.ShoppingGoodsService;
-import com.matrix.system.hive.service.SysOrderService;
+import com.matrix.system.hive.service.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpSession;
+import javax.validation.constraints.NotEmpty;
 import java.util.*;
 
 /**
@@ -95,6 +93,18 @@
 
     @Autowired
     private SysOrderFlowDao sysOrderFlowDao;
+
+    @Autowired
+    private SysSupplierInfoDao sysSupplierInfoDao;
+
+    @Autowired
+    private SysInstoreInfoDao sysInstoreInfoDao;
+
+    @Autowired
+    private SysInstoreDetailDao sysInstoreDetailDao;
+
+    @Autowired
+    private SysInstoreInfoService sysInstoreInfoService;
 
     @Override
     public int add(SysOrder sysOrder) {
@@ -478,6 +488,7 @@
     private void changeOrderStatu(SysOrder sourceOrder) {
         int i = 1;
         String orderStatus = Dictionary.ORDER_STATU_YFK;
+        String flowType = SysOrderFlow.FLOW_TYPE_BUY;
         double cashPayTotal = 0D;
         double cardPayTotal = 0D;
         for (SysOrderFlow flow : sourceOrder.getFlows()) {
@@ -487,13 +498,16 @@
             flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品");
 
             if (Dictionary.ORDER_STATU_TK.equals(sourceOrder.getStatu())) {
+                flowType = SysOrderFlow.FLOW_TYPE_REFUND;
+                // 若是退款,则取负数
+                flow.setAmount(flow.getAmount().negate());
                 flow.setOrderId(sourceOrder.getOldOrderId());
             } else {
                 flow.setOrderId(sourceOrder.getId());
             }
 
             flow.setVipId(sourceOrder.getVipId());
-            flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY);
+            flow.setFlowType(flowType);
             // 若使用储值卡付款
             if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
                 if (flow.getCardId() != null) {
@@ -696,51 +710,46 @@
             // 如果购买的是充值卡
             if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_CZK)) {
 
-                ShoppingGoods moneyCar = shoppingGoodsDao.selectById(sysOrderItem.getGoodsId());
-                MoneyCardUse moneyCardUse = new MoneyCardUse();
-                moneyCardUse.setVipId(sourceOrder.getVipId());
-                moneyCardUse.setGiftMoney(moneyCar.getReferencePice());
-                moneyCardUse.setRealMoney(moneyCar.getSealPice());
-                moneyCardUse.setGoodsId(moneyCar.getId());
-                moneyCardUse.setIsOver(Dictionary.FLAG_NO_N);
-                moneyCardUse.setOrderItemId(sysOrderItem.getId());
-                moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
-                moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
-                moneyCardUse.setCardName(moneyCar.getName());
-
-                if (Dictionary.FLAG_YES.equals(moneyCar.getCarIsAll())) {
-                    moneyCardUse.setIsVipCar(Dictionary.FLAG_YES_Y);
-                } else {
-                    // 非会籍卡
-                    moneyCardUse.setIsVipCar(Dictionary.FLAG_NO_N);
-                }
-
-                // 是否为赠送
-                if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_YES)) {
-                    moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
-                } else {
+                for(int i = 0; i < sysOrderItem.getCount(); i++) {
+                    ShoppingGoods moneyCar = shoppingGoodsDao.selectById(sysOrderItem.getGoodsId());
+                    MoneyCardUse moneyCardUse = new MoneyCardUse();
+                    moneyCardUse.setVipId(sourceOrder.getVipId());
+                    moneyCardUse.setGiftMoney(moneyCar.getReferencePice());
+                    moneyCardUse.setRealMoney(moneyCar.getSealPice());
+                    moneyCardUse.setGoodsId(moneyCar.getId());
+                    moneyCardUse.setIsOver(Dictionary.FLAG_NO_N);
+                    moneyCardUse.setOrderItemId(sysOrderItem.getId());
                     moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
-                }
-                if (moneyCar.getCarUseCount() == null || moneyCar.getCarUseCount() == 0) {
-                    moneyCardUse.setUseTotal(999999999);
-                    moneyCardUse.setLastCount(999999999);
-                } else {
-                    moneyCardUse.setUseTotal(moneyCar.getCarUseCount());
-                    moneyCardUse.setLastCount(moneyCar.getCarUseCount());
-                }
-                moneyCardUse.setVipId(sourceOrder.getVipId());
-//                if (moneyCar.getValidity() == null || moneyCar.getValidity() == 0) {
-//                    // 设置失效时间
-//                    Calendar cal = Calendar.getInstance();
-//                    cal.set(2200, 1, 1);
-//                    moneyCardUse.setFailTime(cal.getTime());
-//                } else {
-//                    moneyCardUse.setFailTime(DateUtil.nextNDate(new Date(), 30 * moneyCar.getValidity()));
-//                }
-                Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null);
-                moneyCardUse.setFailTime(invalidTime);
+                    moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
+                    moneyCardUse.setCardName(moneyCar.getName());
 
-                moneyCardUseDao.insert(moneyCardUse);
+                    if (Dictionary.FLAG_YES.equals(moneyCar.getCarIsAll())) {
+                        moneyCardUse.setIsVipCar(Dictionary.FLAG_YES_Y);
+                    } else {
+                        // 非会籍卡
+                        moneyCardUse.setIsVipCar(Dictionary.FLAG_NO_N);
+                    }
+
+                    // 是否为赠送
+                    if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_YES)) {
+                        moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
+                    } else {
+                        moneyCardUse.setSource(Dictionary.TAOCAN_SOURCE_GM);
+                    }
+                    if (moneyCar.getCarUseCount() == null || moneyCar.getCarUseCount() == 0) {
+                        moneyCardUse.setUseTotal(999999999);
+                        moneyCardUse.setLastCount(999999999);
+                    } else {
+                        moneyCardUse.setUseTotal(moneyCar.getCarUseCount());
+                        moneyCardUse.setLastCount(moneyCar.getCarUseCount());
+                    }
+                    moneyCardUse.setVipId(sourceOrder.getVipId());
+
+                    Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null);
+                    moneyCardUse.setFailTime(invalidTime);
+
+                    moneyCardUseDao.insert(moneyCardUse);
+                }
             }
         }
     }
@@ -1229,50 +1238,69 @@
         return sysOrderDao.selectStaffSaleAchieveRanking(sysOrder);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void refundOrderMoney(SysOrder pageOrder) {
 
         // 插入订单流水
         changeOrderStatu(pageOrder);
 
+        List<SysOrderItem> returnItems = new ArrayList<>();
         for (SysOrderItem item : pageOrder.getItems()) {
 
             SysProjUse queryProjUse = new SysProjUse();
             queryProjUse.setIsOver(Dictionary.FLAG_NO_N);
             queryProjUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
-            queryProjUse.setOrderItemId(item.getId());
+            queryProjUse.setOrderItemId(item.getOldItemId());
             // 修改项目信息
-            if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(item.getType()) && Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(item.getType())) {
-                SysProjUse sysProjUse = sysProjUseDao.selectByModel(queryProjUse).get(0);
+            if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(item.getType()) || Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(item.getType())) {
 
-                int sub = sysProjUse.getSurplusCount() - item.getCount();
-                sysProjUse.setSurplusCount(sub);
-                if (sub <= 0) {
-                    sysProjUse.setIsOver(Dictionary.FLAG_YES_Y);
-                    sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
+                if (Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(item.getType())) {
+                    if (Dictionary.FLAG_YES_Y.equals(item.getIsReturnStore())) {
+                        returnItems.add(item);
+                    }
+                } else {
+                    SysProjUse sysProjUse = sysProjUseDao.selectByModel(queryProjUse).get(0);
+
+                    int sub = sysProjUse.getSurplusCount() - item.getCount();
+                    sysProjUse.setSurplusCount(sub);
+                    if (sub <= 0) {
+                        sysProjUse.setIsOver(Dictionary.FLAG_YES_Y);
+                        sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
+                    }
+                    sysProjUseDao.update(sysProjUse);
                 }
-                sysProjUseDao.update(sysProjUse);
             }
 
             if (Dictionary.SHOPPING_GOODS_TYPE_TC.equals(item.getType())) {
                 queryProjUse.setTaocanId(-1L);
-                SysProjUse sysProjUse = sysProjUseDao.selectByModel(queryProjUse).get(0);
-                sysProjUse.setIsOver(Dictionary.FLAG_YES_Y);
-                sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
+                List<SysProjUse> sysProjUses = sysProjUseDao.selectByModel(queryProjUse);
+                if (item.getCount() > sysProjUses.size()) {
+                    throw new GlobleException("数据异常");
+                }
 
-                sysProjUseDao.update(sysProjUse);
+                for(int i = 0; i < item.getCount(); i++) {
+                    SysProjUse sysProjUse = sysProjUses.get(i);
+                    sysProjUse.setIsOver(Dictionary.FLAG_YES_Y);
+                    sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
+
+                    sysProjUseDao.update(sysProjUse);
+                }
             }
 
             if (Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(item.getType())) {
                 MoneyCardUse queryCardUse = new MoneyCardUse();
                 queryCardUse.setIsOver(Dictionary.FLAG_NO_N);
                 queryCardUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
-                queryCardUse.setOrderItemId(item.getId());
+                queryCardUse.setOrderItemId(item.getOldItemId());
 
-                MoneyCardUse moneyCardUse = moneyCardUseDao.selectByModel(queryCardUse).get(0);
-                moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y);
-                moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_WX);
-                moneyCardUseDao.update(moneyCardUse);
+                List<MoneyCardUse> moneyCardUses = moneyCardUseDao.selectByModel(queryCardUse);
+                for(int i = 0; i < item.getCount(); i++) {
+                    MoneyCardUse moneyCardUse = moneyCardUses.get(i);
+                    moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y);
+                    moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_WX);
+                    moneyCardUseDao.update(moneyCardUse);
+                }
             }
 
             // TODO 综合卡退款
@@ -1280,20 +1308,64 @@
 
             }
 
+
+            ShoppingGoods goods = shoppingGoodsDao.selectById(item.getGoodsId());
+            goods.setRealSealCount(goods.getRealSealCount() - item.getCount());
+            shoppingGoodsDao.update(goods);
         }
 
-        // 设置会员充值卡使用情况
-        addMoneyCardUse(pageOrder);
-
-        // 新增出库单
-        addOutStore(pageOrder);
-
-        // 改变客户项目套餐使用情况
-        addTaocanProj(pageOrder);
+        // 家居产品退库存
+        if (CollectionUtils.isNotEmpty(returnItems)) {
+            refundInstore(returnItems);
+        }
 
         // 设置业绩
         achieveNewService.addAchaeveByOrder(pageOrder);
 
-        setShopSelCount(pageOrder);
+    }
+
+    /**
+     * 退款入库
+     */
+    private void refundInstore(@NotEmpty List<SysOrderItem> items) {
+        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+        SysSupplierInfo supplierInfo = new SysSupplierInfo();
+        supplierInfo.setShopId(user.getShopId());
+        supplierInfo = sysSupplierInfoDao.selectByModel(supplierInfo).get(0);
+
+        Warehouse warehouse = warehouseDao.findShopWarehouse(user.getShopId()).get(0);
+        SysInstoreInfo instoreInfo = new SysInstoreInfo();
+        instoreInfo.setInstoreType(SysInstoreInfo.INSTORE_TYPE_RETURN);
+        instoreInfo.setInstoreDate(new Date());
+        instoreInfo.setSupplierId(supplierInfo.getId().toString());
+        instoreInfo.setStoreId(warehouse.getId());
+        instoreInfo.setCheckStatus(Dictionary.CHECK_STATUS_DSH);
+        // 设置入库单编号
+        instoreInfo.setInstoreId(DateUtil.getTimeMark());
+        instoreInfo.setShopId(user.getShopId());
+        instoreInfo.setCompanyId(user.getCompanyId());
+        sysInstoreInfoDao.insert(instoreInfo);
+
+        Double total = 0.0;
+        List<SysInstoreDetail> instoreDetails = new ArrayList<>();
+        for (SysOrderItem item : items) {
+            ShoppingGoods goods = shoppingGoodsDao.selectById(item.getGoodsId());
+            SysInstoreDetail sysInstoreDetail = new SysInstoreDetail();
+            sysInstoreDetail.setAmount(item.getCount().doubleValue());
+            sysInstoreDetail.setPrice(item.getZkPrice());
+            sysInstoreDetail.setSkuId(goods.getId());
+
+            total = MoneyUtil.add(MoneyUtil.mul(Double.parseDouble(sysInstoreDetail.getAmount() + ""), sysInstoreDetail.getPrice()), total);
+            sysInstoreDetail.setInstoreId(instoreInfo.getId());
+            // 设置小计
+            sysInstoreDetail.setPriceTotal(MoneyUtil.mul(Double.parseDouble(sysInstoreDetail.getAmount() + ""), sysInstoreDetail.getPrice()));
+            instoreDetails.add(sysInstoreDetail);
+
+        }
+        instoreInfo.setSumall(total);
+        sysInstoreInfoDao.update(instoreInfo);
+        sysInstoreDetailDao.batchInsert(instoreDetails);
+
+        sysInstoreInfoService.check(instoreInfo);
     }
 }
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
index c9ab443..f532adf 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
@@ -129,7 +129,7 @@
             <if test="orderId != null and orderId !='' ">
                 ORDER_ID = #{orderId},
             </if>
-            <if test="count != null and count !='' ">
+            <if test="count != null and count !='' or count == 0 ">
                 COUNT = #{count},
             </if>
             <if test="isFree != null and isFree !='' ">
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html
index c81090b..f48645d 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html
@@ -868,10 +868,10 @@
                                 _this.order.payMoney += parseFloat(item.payMoney);
                             });
                             //计算欠款
-                            _this.order.arrears = _this.order.zkTotal - _this.order.payMoney;
-                            if (_this.order.arrears < 0) {
-                                _this.$message.error("支付金额不能大于应收金额");
-                            }
+                            // _this.order.arrears = _this.order.zkTotal - _this.order.payMoney;
+                            // if (_this.order.arrears < 0) {
+                            //     _this.$message.error("支付金额不能大于应收金额");
+                            // }
                         }
                     })
                 }
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html
index bd5cf20..a74d698 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html
@@ -142,9 +142,9 @@
                     <el-row>
                         <el-button size="mini" type="primary" @click="openPayMoneyDialog" v-if="isRefund">提交退款</el-button>
                         <el-button size="mini" type="danger" @click="isRefund = false" v-if="isRefund">取消</el-button>
-                        <el-button size="mini" type="primary" @click="isRefund = true" v-else>退款</el-button>
+                        <el-button size="mini" type="primary" @click="isRefund = true" v-if="order.statu == '已付款' && !isRefund">退款</el-button>
                     </el-row>
-                    <el-row v-if="!isRefund">
+                    <el-row v-show="!isRefund">
                         <el-table
                                 :data="orderItems"
                                 style="width: 100%">
@@ -182,7 +182,7 @@
                             </el-table-column>
                         </el-table>
                     </el-row>
-                    <el-row v-if="isRefund">
+                    <el-row v-show="isRefund">
                         <el-table
                                 :data="orderItems"
                                 style="width: 100%">
@@ -214,12 +214,17 @@
                             </el-table-column>
                             <el-table-column label="退款单价">
                                 <template slot-scope="scope">
-                                    <el-input v-model="scope.row.refundPrice"></el-input>
+                                    <el-input v-model="scope.row.refundPrice" v-if="scope.row.count > 0"></el-input>
                                 </template>
                             </el-table-column>
                             <el-table-column label="退款数量">
                                 <template slot-scope="scope">
-                                    <el-input v-model.number="scope.row.refundCount"></el-input>
+                                    <el-input v-model.number="scope.row.refundCount" v-if="scope.row.count > 0"></el-input>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="是否退库存" align="center">
+                                <template slot-scope="scope">
+                                    <el-checkbox v-model="scope.row.returnStore" v-if="scope.row.type == '家居产品' && scope.row.count > 0"></el-checkbox>
                                 </template>
                             </el-table-column>
                         </el-table>
@@ -262,12 +267,12 @@
                                 </el-table-column>
                                 <el-table-column label="业绩">
                                     <template slot-scope="scope">
-                                        <el-input v-model="scope.row.returnAchieve"></el-input>
+                                        <el-input v-model="scope.row.returnAchieve" v-if="scope.row.zkTotal != 0"></el-input>
                                     </template>
                                 </el-table-column>
                                 <el-table-column label="提成">
                                     <template slot-scope="scope">
-                                        <el-input v-model="scope.row.returnCommission"></el-input>
+                                        <el-input v-model="scope.row.returnCommission" v-if="scope.row.zkTotal != 0"></el-input>
                                     </template>
                                 </el-table-column>
                                 <el-table-column
@@ -279,7 +284,7 @@
                 </el-tab-pane>
                 <el-tab-pane label="业绩设置" name="second">
                     <el-row>
-                        <el-button size="mini" type="primary" @click="saveAchieve">保存</el-button>
+                        <el-button size="mini" type="primary" @click="saveAchieve" v-if="order.statu == '已付款'">保存</el-button>
                     </el-row>
                     <el-table
                             :data="achieveItems"
@@ -467,6 +472,7 @@
     var app = new Vue({
         el : "#app",
         data : {
+            orderParam : "",
             vipInfo : "",
             order : "",
             activeName : "first",
@@ -522,63 +528,167 @@
             treeSelect : [],
             payMoneys : [],
             printPaper : true,
-            refundMoney : "",
+            refundMoney : 0,
+            data : {},
 
         },
         created : function() {
             let _this = this;
-            this.vipInfo = /*[[${vipInfo}]]*/
-            this.order = /*[[${order}]]*/
-            this.orderItems = /*[[${orderItems}]]*/
-            this.payMethodItems = /*[[${payMethods}]]*/
-            this.achieveItems = /*[[${achieveList}]]*/
-            this.flowItems = this.order.flows;
-
-            this.checkAchieveIsDel(this.achieveItems);
-            this.order.orderTime = moment(this.order.orderTime).format("YYYY-MM-DD HH:mm");
-
-            var arrears = 0;
-            var refund = 0;
-            var repay = 0;
-            for(var i = 0; i < this.flowItems.length; i++) {
-                var item = this.flowItems[i];
-                if (item.payMethod === '欠款') {
-                    arrears += item.amount;
-                }
-
-                if (item.flowType === '还款') {
-                    repay += item.amount;
-                }
-
-                if (item.flowType === '退款') {
-                    refund += item.amount;
-                }
-            }
-            this.order.arrears = arrears;
-            this.order.refund = refund;
-            this.order.repay = repay;
-
-            //获取用户列表
-            AjaxProxy.requst({
-                app: _this,
-                url: basePath + '/admin/shopAll',
-                callback: function (data) {
-                    _this.userList = data.rows;
-                }
-            });
-            _this.getVipMoneyCards();
+            this.orderParam = /*[[${orderParam}]]*/
+            this.queryOrderDetailData(this.orderParam);
 
         },
         methods : {
+            queryOrderDetailData(param) {
+                let _this = this;
+                AjaxProxy.requst({
+                    app: _this,
+                    data: {id: param, orderNo:param},
+                    contentType: 'application/x-www-form-urlencoded',
+                    url: basePath + '/admin/order/findOrderDetailByIdOrNo',
+                    callback: function (data) {
+                        console.log(data);
+                        var mapInfo = data.mapInfo;
+                        _this.vipInfo = mapInfo.vipInfo;
+                        _this.order = mapInfo.order;
+                        _this.orderItems = mapInfo.orderItems;
+                        _this.payMethodItems = mapInfo.payMethodItems;
+                        _this.achieveItems = mapInfo.achieveList;
+
+                        _this.flowItems = _this.order.flows;
+
+                        _this.checkAchieveIsDel(_this.achieveItems);
+                        _this.order.orderTime = moment(_this.order.orderTime).format("YYYY-MM-DD HH:mm");
+
+                        var arrears = 0;
+                        var refund = 0;
+                        var repay = 0;
+                        for(var i = 0; i < _this.flowItems.length; i++) {
+                            var item = _this.flowItems[i];
+                            if (item.payMethod === '欠款') {
+                                arrears += item.amount;
+                            }
+
+                            if (item.flowType === '还款') {
+                                repay += item.amount;
+                            }
+
+                            if (item.flowType === '退款') {
+                                refund += item.amount;
+                            }
+                        }
+                        _this.order.arrears = arrears;
+                        _this.order.refund = refund;
+                        _this.order.repay = repay;
+
+                        //获取用户列表
+                        AjaxProxy.requst({
+                            app: _this,
+                            url: basePath + '/admin/shopAll',
+                            callback: function (data) {
+                                _this.userList = data.rows;
+                            }
+                        });
+                        _this.getVipMoneyCards();
+                    }
+                });
+            },
+            confirmSubmit() {
+                let _this = this;
+                _this.data.oldOrderId = _this.order.id;
+                _this.data.vipId = _this.vipInfo.id;
+
+                if(!_this.payMethodFlow()) {
+                    return;
+                }
+
+                let orderItems = _this.orderItems;
+                let dataItems = [];
+                for(var i = 0; i < orderItems.length; i++) {
+                    let item = orderItems[i];
+                    if (item.refundPrice && item.refundCount) {
+                        let achieveList = []
+                        if (_this.isReturnAchieve) {
+                            for(var j = 0; j < _this.achieveItems.length; j++) {
+                                let achieveItem = _this.achieveItems[j];
+                                if (achieveItem.returnAchieve || achieveItem.returnCommission) {
+                                    achieveItem.t1 = achieveItem.returnAchieve ?  achieveItem.returnAchieve : 0;
+                                    achieveItem.projPercentage = achieveItem.returnCommission ? achieveItem.returnCommission : 0;
+                                    achieveList.push(achieveItem);
+                                }
+                            }
+
+                            item.achaeveList = achieveList;
+                        }
+                        if (item.returnStore) {
+                            item.isReturnStore = 'Y';
+                        } else {
+                            item.isReturnStore = 'N';
+                        }
+
+                        item.preCount = item.count;
+                        item.count = item.refundCount;
+                        item.zkPrice = item.refundPrice;
+                        item.cashPay = 0;
+                        item.cardPay = 0;
+                        item.oldItemId = item.id;
+                        dataItems.push(item);
+                    }
+                }
+
+                _this.data.items = dataItems;
+                AjaxProxy.requst({
+                    app: _this,
+                    data: _this.data,
+                    contentType: 'application/json',
+                    url: basePath + '/admin/order/refundOrder',
+                    callback: function (data) {
+                        _this.isRefund = false;
+                        _this.dialogSettleVisible = false;
+                        _this.queryOrderDetailData(_this.data.oldOrderId);
+                    }
+                });
+
+            },
+            payMethodFlow() {
+                let _this = this;
+                if (_this.payMoneys.length > 0) {
+                    let flows = []
+                    var total = 0;
+                    _this.payMoneys.forEach(item => {
+                        let flow = {};
+                        flow.payMethod = item.type;
+                        if (!item.money) {
+                            this.$message.warning("请输入" + item.type + "的付款金额");
+                            return false;
+                        }
+                        flow.amount = parseFloat(item.money);
+                        if (item.type == '储值卡'){
+                            flow.isGift = item.isGift;
+                            flow.cardId = item.id;
+                        }
+                        total += parseFloat(item.money);
+                        flows.push(flow)
+                    })
+                    if (total != _this.refundMoney) {
+                        this.$message.warning("输入付款总金额与应付金额不符");
+                        return false;
+                    }
+                    _this.data.flows = flows;
+                    return true;
+                } else {
+                    this.$message.warning("请选择支付方式");
+                    return false;
+                }
+            },
             openPayMoneyDialog() {
                 let _this = this;
                 let items = this.orderItems;
+                _this.refundMoney = 0;
 
                 for(var i = 0; i < items.length; i++) {
                     let item = items[i]
                     if (item.refundPrice && item.refundCount) {
-                        _this.refundMoney += (item.refundPrice * item.refundCount);
-                    } else {
                         if (!item.refundPrice > 0 && !item.refundCount > 0) {
                             _this.$message.error("退款金额或退款数量须大于0");
                             return;
@@ -589,9 +699,13 @@
                             return;
                         }
 
-                        _this.$message.error("退款单价或退款数量不能为空");
-                        return;
+                        _this.refundMoney += parseFloat(item.refundPrice * item.refundCount);
                     }
+                }
+
+                if (_this.refundMoney == 0) {
+                    _this.$message.error("请输入退款金额或退款数量");
+                    return;
                 }
                 _this.dialogSettleVisible = true;
             },
@@ -704,9 +818,6 @@
             },
             closeFrame() {
                 parent.layer.close(parent.layer.getFrameIndex(window.name));
-            },
-            confirmSubmit() {
-
             },
             saveAchieve() {
                 let _this = this;

--
Gitblit v1.9.1