shish 2 лет назад
Родитель
Сommit
06265ccc00

+ 9 - 2
app-ghs/controllers/PurchaseOrderController.php

@@ -307,8 +307,15 @@ class PurchaseOrderController extends BaseController
         if ($cg->status == PurchaseOrderClass::PURCHASE_ORDER_STATUS_COMPLETE) {
             util::fail('已入库,无法取消');
         }
-        PurchaseOrderClass::cancel($cg);
-        util::complete();
+        $connection = Yii::$app->db;
+        $transaction = $connection->beginTransaction();
+        try {
+            PurchaseOrderClass::cancel($cg);
+            $transaction->commit();
+            util::complete();
+        } catch (\Exception $e) {
+            util::fail('取消失败');
+        }
     }
 
     //确认入库 sssh 20221211

+ 76 - 4
biz-ghs/cg/classes/CgOrderItemClass.php

@@ -16,6 +16,77 @@ class CgOrderItemClass extends BaseClass
 
     public static $baseFile = '\bizGhs\cg\models\CgOrderItem';
 
+    public static function cancelAssign($cg)
+    {
+        $orderSn = $cg->orderSn ?? '';
+        $bookSn = $cg->bookSn ?? '';
+        $cgItemList = PurchaseOrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
+        if (empty($cgItemList)) {
+            return true;
+        }
+        foreach ($cgItemList as $cgItem) {
+            $productId = $cgItem->productId ?? 0;
+            $cgItemName = $cgItem->name ?? '';
+            $parentId = $cgItem->id ?? 0;
+            $sendList = CgOrderItemSendClass::getAllByCondition(['parentId' => $parentId], null, '*', null, true);
+            if (!empty($sendList)) {
+                foreach ($sendList as $send) {
+                    if ($send->status == 0) {
+                        $num = $send->num ?? 0;
+                        $send->status = 1;
+                        $send->save();
+                        $bookGhsGiveId = $send->bookGhsGiveId ?? 0;
+                        $bookItemGhsRes = BookItemGhsClass::getById($bookGhsGiveId, true);
+                        if (empty($bookItemGhsRes)) {
+                            util::fail('送货记录缺失');
+                        }
+                        $bookItemGhsRes->status = 1;
+                        $bookItemGhsRes->save();
+                        $bookItemCustomId = $send->bookItemCustomId ?? 0;
+
+                        //路上数量减少,上架数量增加
+                        $bookItemCustomRes = BookItemCustomClass::getById($bookItemCustomId, true);
+                        if (empty($bookItemCustomRes)) {
+                            util::fail('预订花材客户缺失');
+                        }
+                        $roadNum = $bookItemCustomRes->roadNum ?? 0;
+                        if ($num > $roadNum) {
+                            util::fail("路上库存不足扣减 bookItemCustom {$cgItemName}");
+                        }
+                        $bookItemCustomRes->roadNum = bcsub($roadNum, $num);
+                        $bookItemCustomRes->onNum = bcadd($bookItemCustomRes->onNum, $num);
+                        $bookItemCustomRes->save();
+
+                        $customId = $bookItemCustomRes->customId ?? 0;
+                        $bookCustomRes = BookCustomClass::getByCondition(['bookSn' => $bookSn, 'customId' => $customId], true);
+                        if (empty($bookCustomRes)) {
+                            util::fail('预订客户缺失');
+                        }
+                        $roadNum2 = $bookCustomRes->roadNum ?? 0;
+                        if ($num > $roadNum2) {
+                            util::fail("路上库存不足扣减 bookCustom {$cgItemName}");
+                        }
+                        $bookCustomRes->roadNum = bcsub($roadNum2, $num);
+                        $bookCustomRes->onNum = bcadd($bookCustomRes->onNum, $num);
+                        $bookCustomRes->save();
+
+                        $bookItemRes = BookItemClass::getByCondition(['bookSn' => $bookSn, 'itemId' => $productId], true);
+                        if (empty($bookItemRes)) {
+                            util::fail('预订花材缺失');
+                        }
+                        $roadNum3 = $bookItemRes->roadNum ?? 0;
+                        if ($num > $roadNum3) {
+                            util::fail("路上库存不足扣减 bookItem {$cgItemName}");
+                        }
+                        $bookItemRes->roadNum = bcsub($roadNum3, $num);
+                        $bookItemRes->onNum = bcadd($bookItemRes->onNum, $num);
+                        $bookItemRes->save();
+                    }
+                }
+            }
+        }
+    }
+
     //分配货位后上架和入库
     public static function assignToPutOn($cg)
     {
@@ -30,6 +101,7 @@ class CgOrderItemClass extends BaseClass
         }
         foreach ($cgItemList as $cgItem) {
             $productId = $cgItem->productId ?? 0;
+            $cgItemName = $cgItem->name ?? '';
             $parentId = $cgItem->id ?? 0;
             $sendList = CgOrderItemSendClass::getAllByCondition(['parentId' => $parentId], null, '*', null, true);
             if (!empty($sendList)) {
@@ -54,7 +126,7 @@ class CgOrderItemClass extends BaseClass
                         }
                         $roadNum = $bookItemCustomRes->roadNum ?? 0;
                         if ($num > $roadNum) {
-                            util::fail('路上库存不足扣减');
+                            util::fail("路上库存不足扣减 bookItemCustom {$cgItemName}");
                         }
                         $bookItemCustomRes->roadNum = bcsub($roadNum, $num);
                         $bookItemCustomRes->onNum = bcadd($bookItemCustomRes->onNum, $num);
@@ -67,7 +139,7 @@ class CgOrderItemClass extends BaseClass
                         }
                         $roadNum2 = $bookCustomRes->roadNum ?? 0;
                         if ($num > $roadNum2) {
-                            util::fail('路上库存不足扣减2');
+                            util::fail("路上库存不足扣减 bookCustom {$cgItemName}");
                         }
                         $bookCustomRes->roadNum = bcsub($roadNum2, $num);
                         $bookCustomRes->onNum = bcadd($bookCustomRes->onNum, $num);
@@ -78,8 +150,8 @@ class CgOrderItemClass extends BaseClass
                             util::fail('预订花材缺失');
                         }
                         $roadNum3 = $bookItemRes->roadNum ?? 0;
-                        if ($num < $roadNum3) {
-                            util::fail('路上库存不足扣减3');
+                        if ($num > $roadNum3) {
+                            util::fail("路上库存不足扣减 bookItem {$cgItemName}");
                         }
                         $bookItemRes->roadNum = bcsub($roadNum3, $num);
                         $bookItemRes->onNum = bcadd($bookItemRes->onNum, $num);

+ 15 - 0
biz-ghs/order/classes/PurchaseOrderClass.php

@@ -256,6 +256,21 @@ class PurchaseOrderClass extends BaseClass
                 ProductClass::decreaseOnStockByItemNum($productId, $currentNum);
             }
         }
+        $bookSn = $cg->bookSn ?? 0;
+        $shop = ShopClass::getById($shopId, true);
+        if ($shop->pfLevel == 1 && !empty($shop->bookSn)) {
+            if ($shop->bookSn == $bookSn) {
+                //取消分配的货位
+                $key = 'ghs_cg_order_scan_seat_' . $cg->id;
+                $noLock = util::lock($key);
+                if ($noLock) {
+                    CgOrderItemClass::cancelAssign($cg);
+                    util::unlock($key);
+                } else {
+                    util::fail('正在分配货位,请1秒后再取消');
+                }
+            }
+        }
     }
 
     public static function printGroup($current, $content)