From 530885dff056bb75bea793a84db6ae486124a24a Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sat, 09 Jan 2021 14:25:07 +0800
Subject: [PATCH] modify

---
 zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java   |    7 +
 zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/bj-form.html    |   83 +++++++++++++++++++-
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java |   95 +++++++++++------------
 3 files changed, 130 insertions(+), 55 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java b/zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java
index 8f749b4..75a6e73 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java
@@ -18,6 +18,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
@@ -184,6 +185,10 @@
     public String toBj(Long id) {
         // 根据id查到对应的订单信息
         SysOrder order = orderService.findById(id);
+        SysOrderItem item = new SysOrderItem();
+        item.setOrderId(order.getId());
+        List<SysOrderItem> items = orderItemService.findByModel(item);
+        order.setItems(items);
         WebUtil.getRequest().setAttribute("order", order);
 
         return "admin/hive/beautySalon/bj-form";
@@ -214,7 +219,7 @@
      */
     @RequestMapping(value = "/bj")
     public @ResponseBody
-    AjaxResult bj(SysOrder order) throws GlobleException {
+    AjaxResult bj(@RequestBody SysOrder order) throws GlobleException {
 
         orderService.updateAfterMoney(order);
         return new AjaxResult(AjaxResult.STATUS_SUCCESS, "补交成功");
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 e76196b..42ea6ff 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
@@ -464,6 +464,8 @@
     private void changeOrderStatu(SysOrder sourceOrder) {
         int i = 1;
         String orderStatus = Dictionary.ORDER_STATU_YFK;
+        double cashPayTotal = 0D;
+        double cardPayTotal = 0D;
         for (SysOrderFlow flow : sourceOrder.getFlows()) {
             flow.setFlowNo(codeService.getFlowCode() + "-" + i);
             Long goodsId = sourceOrder.getItems().get(0).getGoodsId();
@@ -478,6 +480,7 @@
                 if (flow.getCardId() != null) {
                     MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId());
                     cardPaySk(moneyCardUse, sourceOrder, flow);
+                    cardPayTotal += flow.getAmount().doubleValue();
                 }
             }
 
@@ -485,12 +488,18 @@
                 orderStatus = Dictionary.ORDER_STATU_QK;
                 sourceOrder.setArrears(flow.getAmount().doubleValue());
             }
+
+            if (!SysOrderFlow.PAY_METHOD_ARREARS.equals(flow.getPayMethod()) && !SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
+                cashPayTotal += flow.getAmount().doubleValue();
+            }
             sysOrderFlowDao.insert(flow);
             i++;
         }
 
         // 更新收款状态
         sourceOrder.setStatu(orderStatus);
+        sourceOrder.setCardPay(cardPayTotal);
+        sourceOrder.setCashPay(cashPayTotal);
         sysOrderDao.update(sourceOrder);
 
     }
@@ -720,66 +729,54 @@
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void updateAfterMoney(SysOrder pageOrder) {
-
         SysOrder sourceOrder = sysOrderDao.selectById(pageOrder.getId());
+
+        int i = 1;
+        double refundTotal = 0D;
+        double cardPayTotal = 0D;
+        double cashPayTotal = 0D;
+        for (SysOrderFlow flow : pageOrder.getFlows()) {
+            flow.setFlowNo(codeService.getFlowCode() + "-" + i);
+            Long goodsId = pageOrder.getItems().get(0).getGoodsId();
+            ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId);
+            flow.setFlowContent(goods.getName() + "等" + pageOrder.getItems().size() + "件产品");
+
+            flow.setOrderId(pageOrder.getId());
+            flow.setVipId(pageOrder.getVipId());
+            flow.setFlowType(SysOrderFlow.FLOW_TYPE_REPAY);
+            // 若使用储值卡付款
+            if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
+                if (flow.getCardId() != null) {
+                    cardPayTotal += flow.getAmount().doubleValue();
+                    MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId());
+                    cardPaySk(moneyCardUse, pageOrder, flow);
+                }
+            } else {
+                cashPayTotal += flow.getAmount().doubleValue();
+            }
+
+            refundTotal += flow.getAmount().doubleValue();
+            sysOrderFlowDao.insert(flow);
+            i++;
+        }
 
         boolean haQk=false;
 
-        double cardPayTotal=0D;
-        double carshPayTotal=0D;
-
-
-        for(SysOrderItem pageItem:pageOrder.getItems()){
-           SysOrderItem sourceItem=orderItemDao.selectById(pageItem.getId());
-
-           //结清
-           if(sourceItem.getArrears() == pageItem.getPayMoney()){
-
-               sourceItem.setStatus(Dictionary.ORDER_STATU_YFK);
-            }else if(sourceItem.getArrears() > pageItem.getPayMoney()) {
-               //未结清
-               sourceItem.setStatus(Dictionary.ORDER_STATU_QK);
-               haQk=true;
-           }else  if(sourceItem.getArrears() < pageItem.getPayMoney()) {
-
-               throw new GlobleException("支付金额不能大于欠款金额");
-
-           }
-
-           //更新卡支付
-           if (!pageItem.getPayMethod().equals(Dictionary.PAY_TYPE_MOENY)) {
-                // 查询要支付的充值卡
-                MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(Long.parseLong(pageItem.getPayMethod()));
-                // 扣除付款卡金额并添加流水 TODO 补交卡支付
-//                cardPaySk(moneyCardUse, sourceOrder,  pageItem);
-               sourceItem.setCardPay((sourceItem.getCardPay()==null?0:sourceItem.getCardPay())+pageItem.getPayMoney());
-               cardPayTotal+=pageItem.getPayMoney();
-            }else{
-               carshPayTotal+=pageItem.getPayMoney();
-               sourceItem.setCashPay((sourceItem.getCashPay()==null?0:sourceItem.getCashPay())+pageItem.getPayMoney());
-           }
-
-            //更新订单明细状态
-            sourceItem.setArrears(sourceItem.getArrears()-pageItem.getPayMoney());
-
-            orderItemDao.update(sourceItem);
-
+        if (refundTotal == pageOrder.getArrears()) {
+            haQk = true;
         }
+
         //更新收款状态
         if(haQk){
-            sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
-        }else{
             sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK);
+        }else{
+            sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
         }
 
-        sourceOrder.setArrears(sourceOrder.getArrears()-carshPayTotal-cardPayTotal);
-        sourceOrder.setCardPay(sourceOrder.getCardPay()+cardPayTotal);
-        sourceOrder.setCashPay(sourceOrder.getCashPay()+carshPayTotal);
+        sourceOrder.setArrears(sourceOrder.getArrears() - refundTotal);
+        sourceOrder.setCardPay(sourceOrder.getCardPay() + cardPayTotal);
+        sourceOrder.setCashPay(sourceOrder.getCashPay() + cashPayTotal);
         sysOrderDao.update(sourceOrder);
-
-        // 设置业绩
-        achieveNewService.addAchaeveByOrder(pageOrder);
-
     }
 
 
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/bj-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/bj-form.html
index 07843ca..29a923c 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/bj-form.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/bj-form.html
@@ -58,7 +58,7 @@
 	</style>
 </head>
 <div class="panel-body" id="app">
-	<el-dialog title="还款" :visible.sync="dialogSettleVisible" show-close>
+	<el-dialog title="还款" :visible.sync="dialogSettleVisible" :show-close="false" :close-on-click-modal="false" :close-on-press-escape="false">
 		<el-row type="flex" align="middle" style="padding: 0 0 10px 0;">
 			<el-col :span="5" style="text-align: center;">还款金额</el-col>
 			<el-col :span="10" style="text-align: center; line-height: 50px;"><span style="color: red; font-size: 20px;">¥ {{order.arrears}}</span></el-col>
@@ -110,7 +110,7 @@
 		</el-row>
 
 		<el-row style="text-align: center; margin: 10px 0 0 0">
-			<el-button type="primary" @click="">确认收款</el-button>
+			<el-button type="primary" @click="submitBj">确认收款</el-button>
 		</el-row>
 	</el-dialog>
 </div>
@@ -164,15 +164,85 @@
 			},
 			treeSelect : [],
 			payMoneys : [],
-			printPaper : true,
+			printPaper : false,
 		},
 		created : function() {
 			this.order = /*[[${order}]]*/
 			this.getVipMoneyCards();
-
-			console.log(this.order)
 		},
 		methods : {
+			submitBj() {
+				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 = item.money;
+						if (item.type == '储值卡'){
+							flow.isGift = item.isGift;
+							flow.cardId = item.id;
+						}
+						total += item.money;
+						flows.push(flow)
+					})
+					if (total > _this.order.arrears) {
+						this.$message.warning("输入付款总金额大于应还金额");
+						return false;
+					}
+					_this.order.flows = flows;
+				} else {
+					this.$message.warning("请选择支付方式");
+					return false;
+				}
+
+				let url = basePath + "/admin/moneyCardUse/bj";
+
+				AjaxProxy.requst({
+					app: _this,
+					data: _this.order,
+					url: url,
+					callback: function (data) {
+						if (_this.printPaper) {
+							_this.print();
+						}
+
+						if(parent.myGrid) {
+							parent.myGrid.serchData();
+						}
+
+						if (parent.app) {
+							parent.app.orderQuery();
+						}
+
+						_this.closeFrame();
+					}
+				});
+			},
+			print() {
+				let _this = this;
+				if (_this.order.id) {
+					layer.open({
+						type: 2,
+						title: "打印订单",
+						area: ['250px', '550px'],
+						maxmin: true,
+						content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + this.order.id],
+						cancel: function (index, layero) {
+							_this.closeFram();
+						}
+					});
+				} else {
+					this.$message.warning("请先挂单在打印");
+				}
+
+
+			},
 			getVipMoneyCards() {
 				let _this = this;
 				if (_this.order.vipId) {
@@ -278,6 +348,9 @@
 					_this.payMoneys.splice(index, 1);
 				}
 			},
+			closeFrame() {
+				parent.layer.close(parent.layer.getFrameIndex(window.name));
+			},
 		}
 	});
 	//]]>

--
Gitblit v1.9.1