Răsfoiți Sursa

还原:查询变动前的花材存库数据要放在 PurchaseClass::takeToPutIn($cg) 之前执行

shizhongqi 1 an în urmă
părinte
comite
a4e20fe23a

+ 9 - 1
app-hd/controllers/ProductController.php

@@ -415,9 +415,17 @@ class ProductController extends BaseController
                     }
                     //确认收货并入库
                     if ($cg->status == PurchaseClass::STATUS_SENDING) {
+                        // 构建“冲销”函数的参数 -- 变动前的花材存库数据
+                        $purchaseItems = PurchaseItemClass::getAllByCondition(['orderSn' => $cg->orderSn], null, "productId");
+                        $productIds = ArrayHelper::getColumn($purchaseItems, 'productId'); //$productIds 是本次入库涉及的花材ID数组
+                        $oldStocks = [];
+                        foreach ($productIds as $productId) {
+                            $product = ProductClass::getById($productId, true);
+                            $oldStocks[$productId] = $product;
+                        }
                         PurchaseClass::takeToPutIn($cg);
                         // “冲销”本次入库的数量
-                        PurchaseClass::rollbackProductStock($cg->orderSn, $shop, $adminId, $this->mainId, $this->shopAdmin->name);
+                        PurchaseClass::rollbackProductStock($oldStocks, $shop, $adminId, $this->mainId, $this->shopAdmin->name);
                         if ($doType == 1) {
                             $transaction->commit();
                             util::complete('入库成功');

+ 11 - 1
biz-ghs/order/classes/OrderClass.php

@@ -3,6 +3,7 @@
 namespace bizGhs\order\classes;
 
 use bizGhs\item\classes\ItemClassClass;
+use bizHd\purchase\classes\PurchaseItemClass;
 use wkhtmltox\Image\Converter;
 use biz\shop\classes\ShopAdminClass;
 use biz\shop\classes\ShopCapitalClass;
@@ -42,6 +43,7 @@ use common\components\stringUtil;
 use common\components\util;
 use bizGhs\base\classes\BaseClass;
 use Yii;
+use yii\helpers\ArrayHelper;
 
 class OrderClass extends BaseClass
 {
@@ -386,6 +388,14 @@ class OrderClass extends BaseClass
             self::orderSend($order, $element, true);
             $cg = PurchaseClass::getById($cgId, true);
         }
+        // 构建“冲销”函数的参数 -- 变动前的花材存库数据
+        $purchaseItems = PurchaseItemClass::getAllByCondition(['orderSn' => $cg->orderSn], null, "productId");
+        $productIds = ArrayHelper::getColumn($purchaseItems, 'productId'); //$productIds 是本次入库涉及的花材ID数组
+        $oldStocks = [];
+        foreach ($productIds as $productId) {
+            $product = ProductClass::getById($productId, true);
+            $oldStocks[$productId] = $product;
+        }
         PurchaseClass::takeToPutIn($cg);
         $shop = ShopClass::getLockById($shopId);
         if (empty($shop)) {
@@ -393,7 +403,7 @@ class OrderClass extends BaseClass
         }
         $adminId = $shop->adminId;
         $mainId = $shop->mainId;
-        PurchaseClass::rollbackProductStock($cg->orderSn, $shop, $adminId, $mainId, '系统');
+        PurchaseClass::rollbackProductStock($oldStocks, $shop, $adminId, $mainId, '系统');
     }
 
     //订单发货主方法 ssh 20231119

+ 11 - 11
biz-hd/purchase/classes/PurchaseClass.php

@@ -178,14 +178,22 @@ class PurchaseClass extends BaseClass
         if ($cg->status == self::STATUS_UN_SEND) {
             $cg = self::orderSend($cg, [], true);
         }
-        self::takeToPutIn($cg);
+
+        // 构建“冲销”函数的参数 -- 变动前的花材存库数据
+        $purchaseItems = PurchaseItemClass::getAllByCondition(['orderSn' => $cg->orderSn], null, "productId");
+        $productIds = ArrayHelper::getColumn($purchaseItems, 'productId'); //$productIds 是本次入库涉及的花材ID数组
+        $oldStocks = [];
+        foreach ($productIds as $productId) {
+            $product = ProductClass::getById($productId, true);
+            $oldStocks[$productId] = $product;
+        }        self::takeToPutIn($cg);
         $shop = ShopClass::getLockById($cg->shopId);
         if (empty($shop)) {
             util::fail('没有找到门店14');
         }
         $adminId = $shop->adminId;
         $mainId = $shop->mainId;
-        PurchaseClass::rollbackProductStock($cg->orderSn, $shop, $adminId, $mainId, '系统');
+        PurchaseClass::rollbackProductStock($oldStocks, $shop, $adminId, $mainId, '系统');
     }
 
     //确认收货并入库 ssh 20231119
@@ -284,16 +292,8 @@ class PurchaseClass extends BaseClass
     }
 
     // 库存回滚为入库前的状态
-    public static function rollbackProductStock($orderSn, $shop, $adminId, $mainId, $staffName)
+    public static function rollbackProductStock($oldStocks, $shop, $adminId, $mainId, $staffName)
     {
-        $purchaseItems = PurchaseItemClass::getAllByCondition(['orderSn' => $orderSn], null, "productId");
-        $productIds = ArrayHelper::getColumn($purchaseItems, 'productId'); //$productIds 是本次入库涉及的花材ID数组
-        $oldStocks = [];
-        foreach ($productIds as $productId) {
-            $product = ProductClass::getById($productId, true);
-            $oldStocks[$productId] = $product;
-        }
-
         $itemInfo = [];
         foreach ($oldStocks as $productId => $product) {
             $ratio = $product->ratio;