Jelajahi Sumber

结账增加单号

shish 1 tahun lalu
induk
melakukan
907a417303

+ 7 - 3
app-hd/controllers/SettleController.php

@@ -63,7 +63,6 @@ class SettleController extends BaseController
         $connection = Yii::$app->db;
         $transaction = $connection->beginTransaction();
         try {
-            $staff = $this->shopAdmin;
             $payWay = $post['payWay'] ?? dict::getDict('payWay', 'wxPay');
             $idData = $post['id'] ?? '';
             if (is_numeric($idData)) {
@@ -86,6 +85,7 @@ class SettleController extends BaseController
             if (empty($ids)) {
                 util::fail('请选择订单');
             }
+
             $orderList = OrderClass::getAllByCondition(['id' => ['in', $ids]], null, 'id,mainId,remainDebtPrice', null, true);
             $clearData = [];
             if (!empty($orderList)) {
@@ -94,12 +94,13 @@ class SettleController extends BaseController
                         util::fail('不是你的订单哦');
                     }
                     $orderId = $order->id;
+                    $orderSn = $order->orderSn ?? '';
                     $remainDebtPrice = $order->remainDebtPrice ?? 0;
-                    $clearData[] = ['orderId' => $orderId, 'clearAmount' => $remainDebtPrice];
+                    $clearData[] = ['orderId' => $orderId, 'clearAmount' => $remainDebtPrice, 'orderSn' => $orderSn];
                     $totalClear = bcadd($totalClear, $remainDebtPrice, 2);
                 }
             }
-            if (empty($totalClear)) {
+            if ($totalClear <= 0) {
                 util::fail('不需要销账');
             }
             $staffId = $this->shopAdminId;
@@ -112,6 +113,9 @@ class SettleController extends BaseController
             $orderSn = orderSn::getRechargeSn();
             $shop = $this->shop;
 
+            //避免重复提交
+            util::checkRepeatCommit($staffId, 6);
+
             $addData = [
                 'orderSn' => $orderSn,
                 'modPrice' => 1,

+ 18 - 17
app-mall/controllers/SettleController.php

@@ -86,14 +86,18 @@ class SettleController extends BaseController
         if (empty($orderList)) {
             util::fail('没有选订单');
         }
+        $myClearData = [];
         foreach ($orderList as $order) {
             if ($order->mainId != $this->mainId) {
                 util::fail('不是你的订单呢');
             }
+            $orderId = $order->id;
+            $orderSn = $order->orderSn ?? '';
             $remainDebtPrice = $order->remainDebtPrice ?? 0;
             $mayClearAmount = bcadd($mayClearAmount, $remainDebtPrice, 2);
+            $myClearData[] = ['orderId' => $orderId, 'clearAmount' => $remainDebtPrice, 'orderSn' => $orderSn];
         }
-        if (empty($mayClearAmount)) {
+        if ($mayClearAmount <= 0) {
             util::fail('不需要销账');
         }
         $orderSn = orderSn::getRechargeSn();
@@ -107,22 +111,10 @@ class SettleController extends BaseController
         $customId = $custom->id;
         $customName = $custom->name;
         $userId = $this->userId;
-        $settleParams = [];
         $staff = [];
 
         //避免重复提交
-        util::checkRepeatCommit($userId, 8);
-
-        $hasSettle = SettleClass::getByCondition(['customId' => $customId, 'status' => 1], true);
-        if (!empty($hasSettle)) {
-            util::fail('这个客户名下有待结账单,请先取消');
-        }
-
-        //创建待账单
-        $settle = SettleClass::addSettle($orderList, $shop, $custom, $hd, $staff, $settleParams);
-        $settleId = $settle->id;
-        $settleAmount = $settle->actPrice;
-        $settleNo = $settle->orderSn ?? '';
+        util::checkRepeatCommit($userId, 6);
 
         $createData = [
             'customId' => $customId,
@@ -143,12 +135,21 @@ class SettleController extends BaseController
             'payStatus' => 0,
             'payTime' => '0000-00-00 00:00:00',
             'status' => 0,
-            'settleId' => $settleId,
-            'settleAmount' => $settleAmount,
-            'settleNo' => $settleNo,
             'remark' => '',
         ];
         $respond = RechargeClass::addRecharge($createData);
+
+        //创建待账单
+        $settle = SettleClass::addSettle($myClearData, $shop, $custom, $hd, $staff);
+        $settleId = $settle->id;
+        $settleAmount = $settle->actPrice;
+        $settleNo = $settle->orderSn ?? '';
+
+        $respond->settleId = $settleId;
+        $respond->settleAmount = $settleAmount;
+        $respond->settleNo = $settleNo;
+        $respond->save();
+
         util::success($respond);
     }
 

+ 2 - 1
biz-hd/custom/classes/CustomClass.php

@@ -158,6 +158,7 @@ class CustomClass extends BaseClass
         $staffId = $order->shopAdminId ?? 0;
         $staffName = $order->shopAdminName ?? '';
         $orderId = $order->id;
+        $orderSn = $order->orderSn ?? '';
         $shopId = $order->shopId;
         $settleNo = '';
         $settleId = 0;
@@ -178,7 +179,7 @@ class CustomClass extends BaseClass
         }
         if ($clearAmount > 0) {
             $shop = ShopClass::getById($shopId, true);
-            $needClearIdMap[] = ['orderId' => $orderId, 'clearAmount' => $clearAmount];
+            $needClearIdMap[] = ['orderId' => $orderId, 'clearAmount' => $clearAmount, 'orderSn' => $orderSn];
             $setParams = ['staffId' => $staffId, 'staffName' => $staffName];
             $set = SettleClass::addSettle($needClearIdMap, $shop, $custom, $hd, $setParams);
             $ret = SettleClass::clearSettle($set);

+ 15 - 1
biz-hd/order/classes/SettleClass.php

@@ -23,15 +23,28 @@ class SettleClass extends BaseClass
         $settleId = $settle['id'];
         $osList = OrderSettleClass::getAllByCondition(['settleId' => $settleId], null, '*', null, true);
         $ids = [];
+        $map = [];
         if (!empty($osList)) {
             foreach ($osList as $os) {
+                $orderId = $os->orderId;
                 $ids[] = $os->orderId;
+                $amount = $os->amount;
+                $map[$orderId] = ['amount' => $amount];
             }
         }
         if (empty($ids)) {
             util::fail('结账单空的');
         }
         $orderList = OrderClass::getAllByCondition(['id' => ['in', $ids]], null, '*');
+        if (!empty($orderList)) {
+            foreach ($orderList as $key => $orderInfo) {
+                $orderId = $orderInfo['id'];
+                $current = $map[$orderId] ?? [];
+                $currentAmount = $current['amount'] ?? 0;
+                $currentAmount = floatval($currentAmount);
+                $orderList[$key]['actSettleAmount'] = $currentAmount;
+            }
+        }
         $settle['orderNum'] = count($ids);
         $settle['orderList'] = $orderList;
         return $settle;
@@ -100,7 +113,8 @@ class SettleClass extends BaseClass
         foreach ($orderData as $order) {
             $orderId = $order['orderId'];
             $clearAmount = $order['clearAmount'] ?? 0;
-            OrderSettleClass::add(['orderId' => $orderId, 'settleId' => $settleId, 'status' => 0, 'amount' => $clearAmount]);
+            $orderSn = $order['orderSn'] ?? '';
+            OrderSettleClass::add(['orderId' => $orderId, 'settleId' => $settleId, 'status' => 0, 'amount' => $clearAmount, 'orderSn' => $orderSn, 'settleSn' => $settleOrderSn]);
             $totalClear = bcadd($totalClear, $clearAmount, 2);
         }
         $set->prePrice = $totalClear;

+ 3 - 2
biz-hd/recharge/classes/RechargeClass.php

@@ -234,6 +234,7 @@ class RechargeClass extends BaseClass
                 $hasOver = false;
                 foreach ($orderList as $order) {
                     $orderId = $order->id ?? 0;
+                    $orderSn = $order->orderSn ?? '';
                     //销订单全部的欠款!!!
                     $remainDebtPrice = $order->remainDebtPrice ?? 0;
                     $currentTotalDebtAmount = bcadd($lastRemainDebtAmount, $remainDebtPrice, 2);
@@ -245,14 +246,14 @@ class RechargeClass extends BaseClass
                                 $order->remainDebtPrice = bcsub($order->remainDebtPrice, $lastClearOrderAmount, 2);
                                 $order->save();
                                 $lastClearOrderId = $orderId;
-                                $needClearIdMap[] = ['orderId' => $lastClearOrderId, 'clearAmount' => $lastClearOrderAmount];
+                                $needClearIdMap[] = ['orderId' => $lastClearOrderId, 'clearAmount' => $lastClearOrderAmount, 'orderSn' => $orderSn];
                             }
                         }
                         $hasOver = true;
                         continue;
                     }
                     $lastRemainDebtAmount = bcadd($lastRemainDebtAmount, $remainDebtPrice, 2);
-                    $needClearIdMap[] = ['orderId' => $orderId, 'clearAmount' => $remainDebtPrice];
+                    $needClearIdMap[] = ['orderId' => $orderId, 'clearAmount' => $remainDebtPrice, 'orderSn' => $orderSn];
                 }
                 if (!empty($needClearIdMap)) {
                     //创建结账单,并且销结账单