Parcourir la source

供货商出入库优化

林琦海 il y a 5 ans
Parent
commit
d24719ff79

+ 10 - 2
app-ghs/controllers/StockOutController.php

@@ -1,6 +1,7 @@
 <?php
 namespace ghs\controllers;
 
+use bizGhs\merchant\classes\ShopClass;
 use bizGhs\order\classes\StockOutOrderClass;
 use bizGhs\product\classes\ProductClass;
 use common\components\util;
@@ -37,10 +38,8 @@ class StockOutController extends BaseController
         $action = $post['action']??'wait'; //confirm(直接出库) wait(待出库中)
         $post['action'] = $action;
         //判断 入库的门店ID是否有效
-        //todo
         $post['inShopId'] = $inShopId;
         //是否判断 inShopId 下还有未完成出库的订单?
-        //todo
         $check = StockOutOrderClass::getByCondition(['outShopId'=>$this->shopId,'inShopId'=>$inShopId,'status'=>StockOutOrderClass::STATUS_WAIT]);
         if($check){
             util::fail('还有待出库的订单');
@@ -53,6 +52,15 @@ class StockOutController extends BaseController
         if(!is_array($ghsItemInfo)){
             util::fail('花材格式不正确');
         }
+
+        //入库门店有效性判断
+        if($this->shopId==$inShopId){
+            util::fail('不能出库给当前门店');
+        }
+        $inShop = ShopClass::getById($inShopId);
+        ShopClass::valid($inShop,$this->sjId);
+        
+
         ProductClass::valid($ghsItemInfo,$this->shopId);
         //判断花材里的信息
         foreach ($ghsItemInfo as $v){

+ 27 - 4
biz-ghs/order/classes/StockOutOrderClass.php

@@ -47,11 +47,25 @@ class StockOutOrderClass extends BaseClass
 
         $connection = Yii::$app->db;
         $transaction = $connection->beginTransaction();
+
         try{
             $order = self::add($data);
             //写入详情表
             $batchData = self::groupOrderItem($ghsItemInfo,$orderSn);
             StockOutOrderItemClass::batchAddOrderItem($batchData);
+
+            //先减库存,若取消出库则加回来
+            $orderData =  self::getOrderDetail($orderSn,$data['outShopId']);
+            //减库存
+            $itemInfo = $orderData['itemInfo']??[];
+            if(empty($itemInfo)){
+                $transaction->rollBack();
+                util::fail("订单异常");
+            }
+            foreach ($itemInfo as $v){
+                ProductClass::decreaseStockByItemNum($v['productId'],$v['itemNum']);
+            }
+
             $transaction->commit();
             if($action===self::ACTION_CONFIRM){
                 //直接出库=》直接入库
@@ -98,10 +112,7 @@ class StockOutOrderClass extends BaseClass
             }
             $orderData['shopId'] = $shopId;
             StockRecordClass::addRecordByOrder($orderData,StockRecordClass::STOCK_RECORD_TYPE_OUT_STOCK);
-            //减库存
-            foreach ($itemInfo as $v){
-                ProductClass::decreaseStockByItemNum($v['productId'],$v['itemNum']);
-            }
+
             //写入一条数据到入库门店的入库订单表(生成入库订单号
             $inOrderData = StockInOrderClass::addOrder($orderData);
             $inOrderSn = $inOrderData['orderSn'];
@@ -119,6 +130,7 @@ class StockOutOrderClass extends BaseClass
 
     //2021.1.23. linqh 取消出库 :
     //一、 从状态1 修改为 3
+    //二、 加回库存
     public static function cancelOrder($orderSn,$shopId,$adminId)
     {
         $where = [
@@ -131,6 +143,17 @@ class StockOutOrderClass extends BaseClass
             'status'=>self::STATUS_CANCEL,
             'adminId'=>$adminId,
         ];
+
+        $orderData =  self::getOrderDetail($orderSn,$shopId);
+        //加库存
+        $itemInfo = $orderData['itemInfo']??[];
+        if(empty($itemInfo)){
+            util::fail("订单异常");
+        }
+        foreach ($itemInfo as $v){
+            ProductClass::addStockByItemNum($v['productId'],$v['itemNum']);
+        }
+
         self::updateByCondition($where,$data);
 
     }