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