Browse Source

修改订单

shish 5 years ago
parent
commit
360040ede8

+ 69 - 7
app-ghs/controllers/OrderController.php

@@ -6,6 +6,7 @@ use biz\stat\classes\StatOrderCountClass;
 use bizGhs\express\services\DadaExpressServices;
 use bizGhs\order\classes\StockWastageOrderClass;
 use bizHd\purchase\classes\PurchaseClass;
+use bizHd\purchase\services\PurchaseService;
 use bizHd\wx\classes\WxOpenClass;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\order\classes\OrderClass;
@@ -67,8 +68,13 @@ class OrderController extends BaseController
         util::success($respond);
     }
 
-    //商城下单操作 ssh 2021.1.14
     public function actionCreateOrder()
+    {
+        util::fail('请更新小程序');
+    }
+
+    //商城下单和修改订单操作操作 ssh 2021.1.14
+    public function actionReplaceOrder()
     {
         $post = Yii::$app->request->post();
         $shopId = $this->shopId;
@@ -157,8 +163,7 @@ class OrderController extends BaseController
             $validTime = dict::getDict('kd_order_valid');
             $current = time() + $validTime;
             $post['deadline'] = date("Y-m-d H:i:s", $current);
-
-            $return = OrderService::createOrder($post, $custom);
+            $return = OrderService::replaceOrder($post, $custom);
             $transaction->commit();
             util::success($return);
         } catch (\Exception $e) {
@@ -523,15 +528,72 @@ class OrderController extends BaseController
     //订单确认完成 shish 20210809
     public function actionConfirmFinish()
     {
+        $payWay = Yii::$app->request->get('payWay', -1);
         $id = Yii::$app->request->get('id', 0);
         $clearType = Yii::$app->request->get('clearType', 0);
-        if (empty($clearType)) {
-            util::fail('请选择结算方式');
+
+        $connection = Yii::$app->db;
+        $transaction = $connection->beginTransaction();
+        try {
+
+            $order = OrderClass::getById($id, true);
+            OrderClass::valid($order, $this->shopId);
+
+            $purchaseId = $order->purchaseId ?? 0;
+            $purchase = PurchaseClass::getById($purchaseId, true);
+            if (empty($purchase)) {
+                util::fail('没有采购信息');
+            }
+
+            if ($clearType == 1) {
+                //欠款
+                $payWay = dict::getDict('payWay', 'debtPay');
+            } elseif ($clearType == 2) {
+                //已收款
+                if ($payWay == -1) {
+                    util::fail('请选择收款方式');
+                }
+            } else {
+                util::fail('请选择结算方式');
+            }
+
+            //不需要打印
+            $order->needPrint = dict::getDict('needPrint', 'noNeed');
+            $order->save();
+
+            //支付
+            PurchaseService::payAfter($purchase, $payWay);
+            OrderService::payAfter($order, $payWay);
+
+            //自己送
+            $info = OrderClass::getById($id, true);
+            OrderClass::selfSend($info);
+
+            //确认送达,并且不需要微信通知
+            Yii::$app->params['noNeedWxNotice'] = 1;
+            $info = OrderClass::getById($id, true);
+            OrderService::reach($info);
+
+            $transaction->commit();
+
+            util::complete('操作成功');
+
+        } catch (\Exception $exception) {
+            $transaction->rollBack();
+            Yii::info("确认完成订单报错:" . $exception->getMessage());
+            util::fail('操作失败');
         }
-        //1欠款 2已付款
+
+    }
+
+    //取消订单 shish 20210810
+    public function actionCancel()
+    {
+        $id = Yii::$app->request->get('id', 0);
         $order = OrderClass::getById($id, true);
         OrderClass::valid($order, $this->shopId);
+        OrderClass::cancel($id);
         util::complete();
     }
 
-}
+}

+ 8 - 2
app-ghs/controllers/ProductController.php

@@ -142,7 +142,13 @@ class ProductController extends BaseController
             //库存预警 按库存从小到大排序
             $data = ProductClass::getAllByCondition($where, ['stock' => SORT_ASC, 'inTurn' => SORT_DESC], "*");
         } else {
-            $data = ProductClass::getAllByCondition($where, ['actualSold' => SORT_DESC, 'inTurn' => SORT_DESC], "*");
+            if(!empty($productIds)){
+                //优先按 $productIds 排序 "FIELD(`id`,4,5,6)"=>true
+                $data = ProductClass::getAllByCondition($where, ["FIELD(`id`,$productIds)" => true, 'inTurn' => SORT_DESC], "*");
+            }else{
+                $data = ProductClass::getAllByCondition($where, ['actualSold' => SORT_DESC, 'inTurn' => SORT_DESC], "*");
+            }
+
         }
 
         $data = ProductClass::groupProductInfo($data);
@@ -537,4 +543,4 @@ class ProductController extends BaseController
         util::complete();
     }
 
-}
+}

+ 73 - 21
biz-ghs/order/classes/OrderClass.php

@@ -106,8 +106,23 @@ class OrderClass extends BaseClass
     //添加订单 ssh 2019.12.5
     public static function addOrder($data)
     {
+        //2021.8.9 linqh
+        $isUpdateOrder = $data['id'] ?? 0;//是否修改订单,是则为对应的订单id
+        if ($isUpdateOrder) {
+            //退回库存
+            //$oldOrder = self::backStockByUpdateOrder($isUpdateOrder);
+            //2021.8.10 不处理库存退回,要先取消订单
+            $oldOrder = self::getById($isUpdateOrder);
+            if ($oldOrder['status'] != self::ORDER_STATUS_CANCEL) {
+                //订单未取消
+                util::fail("不允许操作未取消的订单");
+            }
+            $orderSn = $oldOrder['orderSn']; //沿用之前的订单号
+        } else {
+            $orderSn = orderSn::getGhsOrderSn();
+        }
         $sjId = $data['sjId'] ?? 0;
-        $orderSn = orderSn::getGhsOrderSn();
+
         $data['orderSn'] = $orderSn;
         $data['payStatus'] = self::PAY_STATUS_UN_PAY;
         $data['customId'] = isset($data['customId']) && !empty($data['customId']) ? $data['customId'] : 0;
@@ -183,21 +198,34 @@ class OrderClass extends BaseClass
 
         $data['weight'] = $weight;
 
-        //门店总订单数+1
-        $shop = ShopClass::getLockById($currentShopId);
-        if (empty($shop)) {
-            util::fail('没有找到门店');
+        //此处代码 少华再确认下----2021.8.10 linqh
+        if (!$isUpdateOrder) {
+            //非修改 订单  2021.8.9 linqh
+            //门店总订单数+1
+            $shop = ShopClass::getLockById($currentShopId);
+            if (empty($shop)) {
+                util::fail('没有找到门店');
+            }
+            $shop->totalOrder += 1;
+            $shop->unPayOrder += 1;
+            $shop->save();
+            //将当天日期+花店每天的总订单数作为编号
+            $data['sendNum'] = date("n") . StatOrderCountClass::addOrder($shop);
         }
-        $shop->totalOrder += 1;
-        $shop->unPayOrder += 1;
-        $shop->save();
 
-        //将当天日期+花店每天的总订单数作为编号
-        $data['sendNum'] = date("n") . StatOrderCountClass::addOrder($shop);
 
         $current = time() + 300;
         $data['deadline'] = isset($data['deadline']) ? $data['deadline'] : date("Y-m-d H:i:s", $current);
-        $return = self::add($data, true);
+        if ($isUpdateOrder) {
+            //修改  //此处代码 少华再确认下----2021.8.10 linqh
+            $upData = $data;
+            unset($upData['id']);
+            self::updateById($isUpdateOrder, $upData);
+            $return = self::getById($isUpdateOrder, true);
+        } else {
+            $return = self::add($data, true);
+        }
+
         return $return;
     }
 
@@ -225,9 +253,9 @@ class OrderClass extends BaseClass
         $print = ['type' => 'print', 'show' => 1, 'disable' => 0, 'name' => '打印'];
         $modifyProduct = ['type' => 'modifyProduct', 'show' => 1, 'disable' => 0, 'name' => '修改花材'];
         $confirm = ['type' => 'confirm', 'show' => 1, 'disable' => 1, 'name' => '确认'];
+        $cancel = ['type' => 'cancel', 'show' => 1, 'disable' => 0, 'name' => '取消'];
 
         if ($isList) {
-
             //订单列表页显示的按钮
 
             $item = ['type' => 'item', 'show' => 0, 'disable' => 1, 'name' => '改花材'];
@@ -257,13 +285,10 @@ class OrderClass extends BaseClass
                 $send['disable'] = 1;
                 $selfGet['disable'] = 1;
                 $print['disable'] = 1;
-                $modifyProduct['disable'] = 1;
             }
-            $modifyProduct['show'] = 0;
-            return [$item, $send, $selfGet, $print, $modifyProduct, $confirm];
+            return [$item, $send, $selfGet, $print, $confirm];
 
         } else {
-
             //订单详情页显示的按钮
 
             //待确认订单显示延期付和已付款
@@ -271,7 +296,7 @@ class OrderClass extends BaseClass
                 $debtPay = ['type' => 'debtPay', 'show' => 0, 'disable' => 0];
                 $hasPay = ['type' => 'hasPay', 'show' => 0, 'disable' => 0];
                 $confirm['disable'] = 0;
-                return [$print, $debtPay, $hasPay, $modifyProduct, $confirm];
+                return [$print, $debtPay, $hasPay, $confirm, $cancel];
             }
 
             //待配送订单显示打印、发货和自取
@@ -280,17 +305,17 @@ class OrderClass extends BaseClass
                 $selfGet = ['type' => 'selfGet', 'show' => 1, 'disable' => 1];
                 $send = ['type' => 'send', 'show' => 1, 'disable' => 1];
                 if ($order['hasItem'] == 2) {
-                    return [$print, $item, $selfGet, $send, $modifyProduct];
+                    return [$print, $item, $selfGet, $send];
                 }
                 $selfGet['disable'] = 0;
                 $send['disable'] = 0;
                 $item['disable'] = 0;
-                return [$print, $item, $selfGet, $send, $modifyProduct];
+                return [$print, $item, $selfGet, $send];
             }
             //配送中显示按钮
             if ($order['status'] == self::ORDER_STATUS_SENDING) {
                 $send = ['type' => 'send', 'show' => 1, 'disable' => 0];
-                return [$print, $send, $modifyProduct];
+                return [$print, $send];
             }
             //完成
             if ($order['status'] == self::ORDER_STATUS_COMPLETE) {
@@ -299,13 +324,14 @@ class OrderClass extends BaseClass
                 if ($order['sendType'] == self::SEND_TYPE_NO) {
                     $send['show'] = 0;
                 }
-                return [$print, $send, $modifyProduct];
+                return [$print, $send];
             }
             //取消订单置灰
             if ($order['status'] == self::ORDER_STATUS_CANCEL) {
                 $selfGet['disable'] = 1;
                 $send['disable'] = 1;
                 $print['disable'] = 1;
+                return [$modifyProduct];
             }
             return [];
         }
@@ -767,4 +793,30 @@ class OrderClass extends BaseClass
         return $order;
     }
 
+    //修改订单--库存退回  linqh  2021.8.9
+    public static function backStockByUpdateOrder($id)
+    {
+        $order = self::getLockById($id);
+        $shopId = $order->shopId;
+        $shop = ShopClass::getLockById($shopId);
+        if (empty($shop)) {
+            util::fail('没有找到门店');
+        }
+        //加回库存
+        $orderItem = OrderItemClass::getOrderItem($order->orderSn);
+        foreach ($orderItem as $v) {
+            $stockInfo = ProductClass::addStockByItemNum($v['productId'], $v['num']);
+            $recordData = [];
+            $recordData['sjId'] = $order->sjId;
+            $recordData['shopId'] = $shopId;
+            $recordData['itemId'] = $v['itemId'] ?? 0;
+            $recordData['itemNum'] = $v['num'];
+            $recordData['oldStock'] = $stockInfo['oldStock'];
+            $recordData['newStock'] = $stockInfo['newStock'];
+            $recordData['productId'] = $v['productId'];
+            $recordData['orderSn'] = $order->orderSn;
+            StockRecordService::addSellStockOrderCancelRecord($recordData);
+        }
+        return $order;
+    }
 }

+ 5 - 3
biz-ghs/order/services/OrderService.php

@@ -29,8 +29,8 @@ class OrderService extends BaseService
 
     public static $baseFile = '\bizGhs\order\classes\OrderClass';
 
-    //添加订单
-    public static function createOrder($data, $custom)
+    //添加修改订单
+    public static function replaceOrder($data, $custom)
     {
         //供应商销售单
         $return = OrderClass::addOrder($data);
@@ -591,9 +591,11 @@ class OrderService extends BaseService
             }
         }
 
-        //订单生成时唤起在线打印
+        //订单付款后(确认后)唤起在线打印
         if (isset($order->needPrint) && $order->needPrint == dict::getDict('needPrint', 'need')) {
             OrderClass::onlinePrint($order);
+            $order->printNum += 1;
+            $order->save();
         }
 
     }