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/service/imp/SysOrderServiceImpl.java |   95 +++++++++++++++++++++++------------------------
 1 files changed, 46 insertions(+), 49 deletions(-)

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

--
Gitblit v1.9.1