shish před 2 roky
rodič
revize
5e2b5ddfa7

+ 29 - 0
app-ghs/controllers/OrderItemController.php

@@ -2,6 +2,7 @@
 
 namespace ghs\controllers;
 
+use bizGhs\book\classes\BookItemClass;
 use bizGhs\order\classes\OrderClass;
 use bizGhs\order\classes\OrderItemClass;
 use bizGhs\order\services\OrderItemService;
@@ -60,6 +61,8 @@ class OrderItemController extends BaseController
         $connection = Yii::$app->db;//事务处理
         $transaction = $connection->beginTransaction();
         try {
+            $addData = [];
+            $delData = [];
             foreach ($data as $item) {
                 $id = $item['id'] ?? 0;
                 $xhNum = $item['xhNum'] ?? 0;
@@ -71,6 +74,24 @@ class OrderItemController extends BaseController
                 if ($info->orderSn != $order->orderSn) {
                     continue;
                 }
+                $productId = $info->productId??0;
+                $preNum = $info->xhNum??0;
+                //新增预订花材
+                if($xhNum>$preNum){
+                    $diffNum = bcsub($xhNum,$preNum);
+                    $addData[] = [
+                        'productId' =>$productId,
+                        'num' => $diffNum,
+                    ];
+                }
+                //删除预订花材
+                if($preNum>$xhNum) {
+                    $diffNum = bcsub($preNum,$xhNum);
+                    $delData[] = [
+                        'productId' =>$productId,
+                        'num' => $diffNum,
+                    ];
+                }
                 $info->xhNum = $xhNum;
                 $info->xhPreNum = $xhNum;
                 $info->xhUnitPrice = $xhUnitPrice;
@@ -80,6 +101,14 @@ class OrderItemController extends BaseController
             $order->packCost = $packCost;
             $order->sendCost = $sendCost;
             $order->save();
+
+            if(!empty($addData)){
+                BookItemClass::addBatchItem($addData, $order);
+            }
+            if(!empty($delData)){
+                BookItemClass::delBatchItem($delData, $order);
+            }
+
             $transaction->commit();
             util::complete('保存成功');
 

+ 148 - 0
biz-ghs/book/classes/BookItemClass.php

@@ -14,6 +14,154 @@ class BookItemClass extends BaseClass
 
     public static $baseFile = '\bizGhs\book\models\BookItem';
 
+    public static function delBathItem($batchData, $order)
+    {
+        $shopId = $order->shopId ?? 0;
+        $shop = ShopClass::getById($shopId, true);
+        if (empty($shop)) {
+            util::fail('没有门店相关信息');
+        }
+        $bookSn = $shop->bookSn ?? '';
+        $pfLevel = $shop->pfLevel ?? 0;
+        if (empty($bookSn)) {
+            if ($pfLevel == 1) {
+                $sjName = $shop->merchantName ?? '';
+                $shopName = $shop->shopName ?? '';
+                $currentName = $shopName == '首店' ? $sjName : $sjName . ' ' . $shopName;
+                noticeUtil::push($currentName . ' 没有开启预订', '15280215347');
+                util::fail('请先开启预订');
+            }
+        }
+        $mainId = $order->mainId ?? 0;
+        $customId = $order->customId ?? 0;
+        $customName = $order->customName ?? '';
+        $customNamePy = $order->customNamePy ?? '';
+
+        $ids = array_column($batchData, 'productId');
+        $infoList = ProductClass::getAllByCondition(['id' => ['in', $ids]], null, '*', 'id', true);
+        foreach ($batchData as $data) {
+            $itemId = $data['productId'] ?? 0;
+            $product = $infoList[$itemId] ?? null;
+            if (empty($product)) {
+                util::fail('没有找到产品,ID:' . $itemId);
+            }
+            $ptItemId = $product->itemId ?? 0;
+            $num = $data['num'] ?? 0;
+            $name = $product->name ?? '';
+            $py = $product->py ?? '';
+            $cgStaffName = $product->cgStaffName ?? '';
+            $cgStaffId = $product->cgStaffId ?? 0;
+            if (empty($cgStaffId)) {
+                if ($pfLevel == 1) {
+                    util::fail($name . '没有设置采购人');
+                }
+            }
+
+            $office = BookItemCustomClass::getByCondition(['mainId' => $mainId, 'bookSn' => $bookSn, 'customId' => $customId, 'itemId' => $itemId], true);
+            if (empty($office)) {
+                $currentData = [
+                    'name' => $name,
+                    'py' => $py,
+                    'mainId' => $mainId,
+                    'itemId' => $itemId,
+                    'ptItemId' => $ptItemId,
+                    'customId' => $customId,
+                    'customName' => $customName,
+                    'customNamePy' => $customNamePy,
+                    'cgStaffId' => $cgStaffId,
+                    'cgStaffName' => $cgStaffName,
+                    'bookSn' => $bookSn,
+                ];
+                $office = BookItemCustomClass::add($currentData, true);
+            }
+            $hasId = $office->id ?? 0;
+            $office = BookItemCustomClass::getLockById($hasId);
+
+            $thisNum = bcsub($office->bookNum, $num);
+            if ($thisNum < 0) {
+                util::fail($customName . '预订的' . $name . '不够减');
+            }
+            $office->bookNum = $thisNum;
+
+            if ($office->needCgNum >= $num) {
+                //待采数量足够扣
+                $office->needCgNum = bcsub($office->needCgNum, $num);
+            } else {
+                //待采数量不够扣
+                $remainSubNum = bcsub($num, $office->needCgNum);
+                $office->needCgNum = 0;
+                if ($office->onNum >= $remainSubNum) {
+                    //上架数量足够扣
+                    $office->onNum = bcsub($office->onNum, $remainSubNum);
+                } else {
+                    //上架数量也不够扣
+                    $lastRemainNum = bcsub($remainSubNum, $office->onNum);
+                    $office->onNum = 0;
+                    if ($lastRemainNum > 0) {
+                        //需要扣除路上数量,把路上有货位号的数量变成无货位号
+                        $roadNum = $office->roadNum ?? 0;
+                        if ($lastRemainNum >= $roadNum) {
+                            //路上数量也不够扣的,所以是库存,不再需要扣
+                            $maySubRoadNum = $roadNum;
+                        } else {
+                            $maySubRoadNum = $lastRemainNum;
+                        }
+                        //todo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+                        $office->roadNum = bcsub($office->roadNum, $maySubRoadNum);
+                    }
+                }
+            }
+            $office->save();
+
+            $bookItemReturn = self::getByCondition(['mainId' => $mainId, 'bookSn' => $bookSn, 'itemId' => $itemId,], true);
+            if (empty($bookItemReturn)) {
+                $statData = [
+                    'mainId' => $mainId,
+                    'itemId' => $itemId,
+                    'ptItemId' => $ptItemId,
+                    'name' => $name,
+                    'bookSn' => $bookSn,
+                    'py' => $py,
+                    'cgStaffId' => $cgStaffId,
+                    'cgStaffName' => $cgStaffName
+                ];
+                $bookItemReturn = self::add($statData, true);
+            }
+            $id = $bookItemReturn->id;
+            $bookItemReturn = self::getLockById($id);
+
+            $currentNum = bcsub($bookItemReturn->bookNum, $num);
+            if ($currentNum < 0) {
+                util::fail($customName . '预订的' . $name . '不够减哦');
+            }
+            $bookItemReturn->bookNum = $currentNum;
+            $bookItemReturn->save();
+
+
+            $bookCustomReturn = BookCustomClass::getByCondition(['mainId' => $mainId, 'bookSn' => $bookSn, 'customId' => $customId], true);
+            if (empty($bookCustomReturn)) {
+                $currentData = [
+                    'name' => $customName,
+                    'py' => $customNamePy,
+                    'mainId' => $mainId,
+                    'customId' => $customId,
+                    'bookSn' => $bookSn,
+                ];
+                $bookCustomReturn = BookCustomClass::add($currentData, true);
+            }
+            $hasId = $bookCustomReturn->id ?? 0;
+            $bookCustomReturn = BookCustomClass::getLockById($hasId);
+            $nowNum = bcadd($bookCustomReturn->bookNum, $num);
+            if ($nowNum < 0) {
+                util::fail($customName . '预订的' . $name . '不够减哈');
+            }
+            $bookCustomReturn->bookNum = $nowNum;
+            $bookCustomReturn->save();
+        }
+    }
+
+    //todo 预订数量增加没有增加待采购数量,如果有库存要提醒库存要上架
+
     //数据结构 [['productId' => $productId,'num' => $num]]
     public static function addBatchItem($batchData, $order)
     {