shish 2 éve
szülő
commit
166a63b79e

+ 11 - 2
app-ghs/controllers/CheckOrderController.php

@@ -31,8 +31,17 @@ class CheckOrderController extends BaseController
         if($bookItemCustomRes->mainId!=$this->mainId){
             util::fail('不是你的预订信息');
         }
-        CheckOrderClass::loanStock($inId, $outId, $num, $shop, $staff,$bookItemCustomRes);
-        util::complete('操作成功');
+        $connection = Yii::$app->db;
+        $transaction = $connection->beginTransaction();
+        try {
+            CheckOrderClass::loanStock($inId, $outId, $num, $shop, $staff,$bookItemCustomRes);
+            $transaction->commit();
+            util::complete('操作成功');
+        } catch (\Exception $e) {
+            Yii::info("操作失败原因:" . $e->getMessage());
+            $transaction->rollBack();
+            util::fail('操作失败');
+        }
     }
 
     //订单列表 ssh 2021.1.14

+ 1 - 1
biz-ghs/book/classes/BookCustomClass.php

@@ -304,7 +304,7 @@ class BookCustomClass extends BaseClass
             $customNamePy = $bookCustomRes->py??'';
             $orderSn = $bill->orderSn??'';
             $event = $staffName."增加待入库单 {$orderSn} 减少待采 {$name} ". $delNeedCgNum . $bigUnit;
-        }elseif($currentChangeType == 'delBook'){
+        }elseif($currentChangeType == 'loanStock'){
             $currentCapitalType = dict::getDict('capitalType', 'loanStock');
             $outName = $params['outName']??'';
             $event = $staffName . '向' . $outName .'借库存'.$delNeedCgNum.$bigUnit.',减少待采' . $delNeedCgNum . $bigUnit;

+ 6 - 0
biz-ghs/book/classes/BookItemCustomClass.php

@@ -68,8 +68,14 @@ class BookItemCustomClass extends BaseClass
             util::fail('上架数量超过库存数量 bookItem');
         }
         if ($num > 0) {
+            //上指定数量
             $needOnNum = $num;
+            $maxNum = bcsub($bookNum, $onNum);
+            if($needOnNum>$maxNum){
+                util::fail("只需要上".$maxNum.'份');
+            }
         } else {
+            //上齐
             $needOnNum = bcsub($bookNum, $onNum);
         }
         if ($needOnNum > $couldOnNum) {

+ 17 - 12
biz-ghs/item/classes/ItemClass.php

@@ -19,7 +19,7 @@ class ItemClass extends BaseClass
     public static function getLoanList($where, $shop)
     {
         $bookSn = $shop->bookSn ?? 0;
-        $onList = [];
+        $bookData = [];
         if (!empty($bookSn)) {
             $booList = BookItemClass::getAllByCondition(['bookSn' => $bookSn], null, '*', null, true);
             if (!empty($booList)) {
@@ -29,12 +29,12 @@ class ItemClass extends BaseClass
                     $roadNum = $book->roadNum??0;
                     $itemId = $book->itemId ?? 0;
                     $needCgNum = $book->needCgNum??0;
-                    $onList[$itemId] = ['onNum'=>$onNum,'bookNum'=>$bookNum,'roadNum'=>$roadNum,'needCgNum'=>$needCgNum];
+                    $bookData[$itemId] = ['onNum'=>$onNum,'bookNum'=>$bookNum,'roadNum'=>$roadNum,'needCgNum'=>$needCgNum];
                 }
             }
         }
 
-        $data = self::getList('id,name,price,stock,frontHide,cover', $where);
+        $data = self::getList('*', $where);
         if (isset($data['list']) && !empty($data['list'])) {
             foreach ($data['list'] as $key => $val) {
                 $data['list'][$key]['bigCount'] = '';
@@ -51,16 +51,21 @@ class ItemClass extends BaseClass
                 $productId = $val['id'] ?? 0;
                 $stock = $val['stock'] ?? 0;
                 $couldLoan = 0;
-                if (isset($onList[$productId])) {
-                    $bookNum = $onList[$productId] && $onList[$productId]['bookNum']?$onList[$productId]['bookNum']:0;
-                    $roadNum = $onList[$productId] && $onList[$productId]['roadNum']?$onList[$productId]['roadNum']:0;
-                    $needCgNum = $onList[$productId] && $onList[$productId]['needCgNum']?$onList[$productId]['needCgNum']:0;
-
-                    $unReachNum = bcadd($roadNum,$needCgNum,2);
-                    $useStock = bcsub($bookNum,$unReachNum,2);
-                    if($stock>$useStock){
-                        $couldLoan = bcsub($stock,$useStock,2);
+                if (isset($bookData[$productId])) {
+                    $bookNum = $bookData[$productId] && $bookData[$productId]['bookNum']?$bookData[$productId]['bookNum']:0;
+                    if($bookNum>0){
+                        $roadNum = $bookData[$productId] && $bookData[$productId]['roadNum']?$bookData[$productId]['roadNum']:0;
+                        $needCgNum = $bookData[$productId] && $bookData[$productId]['needCgNum']?$bookData[$productId]['needCgNum']:0;
+                        $unReachNum = bcadd($roadNum,$needCgNum,2);
+                        $useStock = bcsub($bookNum,$unReachNum,2);
+                        if($stock>$useStock){
+                            $couldLoan = bcsub($stock,$useStock,2);
+                        }
+                    }else{
+                        $couldLoan = $stock;
                     }
+                }else{
+                    $couldLoan = $stock;
                 }
                 $data['list'][$key]['stock'] = $couldLoan;
             }

+ 16 - 11
biz-ghs/order/classes/CheckOrderClass.php

@@ -53,14 +53,19 @@ class CheckOrderClass extends BaseClass
             if (!empty($booItem)) {
                 //借出的人预订没有影响
                 $bookNum = $booItem->bookNum??0;
-                $roadNum = $bookItem->roadNum??0;
-                $needCgNum = $bookItem->needCgNum??0;
-
-                $unReachNum = bcadd($roadNum,$needCgNum,2);
-                $useStock = bcsub($bookNum,$unReachNum,2);
-                if($stock>$useStock){
-                    $couldLoan = bcsub($stock,$useStock,2);
+                if($bookNum>0){
+                    $roadNum = $bookItem->roadNum??0;
+                    $needCgNum = $bookItem->needCgNum??0;
+                    $unReachNum = bcadd($roadNum,$needCgNum,2);
+                    $useStock = bcsub($bookNum,$unReachNum,2);
+                    if($stock>$useStock){
+                        $couldLoan = bcsub($stock,$useStock,2);
+                    }
+                }else{
+                    $couldLoan = $stock;
                 }
+            }else{
+                $couldLoan = $stock;
             }
         }
         if($num>$couldLoan){
@@ -90,7 +95,7 @@ class CheckOrderClass extends BaseClass
         $pdData['remark'] = "借{$num}个库存给{$inName}";
         $pdData['staffName'] = $staffName;
         $pdData['staffId'] = $staffId;
-        self::opOrder($pdData, false, false);
+        self::opOrder($pdData, false, false,false);
 
         $sjId = $shop->sjId ?? 0;
         $shopId = $shop->id ?? 0;
@@ -105,7 +110,7 @@ class CheckOrderClass extends BaseClass
         $pdData['staffName'] = $staffName;
         $pdData['staffId'] = $staffId;
         $pdData['remark'] = "向{$outName}借{$num}个库存";
-        $inOrder = self::opOrder($pdData, false, false);
+        $inOrder = self::opOrder($pdData, false, false,false);
 
         //借入的人待采会被影响
         $needCgNum = $bookItemCustomRes->needCgNum??0;
@@ -133,7 +138,7 @@ class CheckOrderClass extends BaseClass
     }
 
     //2021.1.22 lqh 操作订单  添加/保存草稿/草稿编辑保存: 区别在添加是立即改库存和记录流水记录,而保存草稿是只保存订单信息
-    public static function opOrder($data, $draft = false, $update = false)
+    public static function opOrder($data, $draft = false, $update = false,$check=true)
     {
         $sjId = $data['sjId'];
         $shopId = $data['shopId'];
@@ -226,7 +231,7 @@ class CheckOrderClass extends BaseClass
 
                 $shop = ShopClass::getById($shopId, true);
                 $bookSn = $shop->bookSn ?? 0;
-                if (!empty($bookSn)) {
+                if (!empty($bookSn) && $check == true) {
                     $bookItemRes = BookItemClass::getAllByCondition(['bookSn' => $bookSn, 'itemId' => ['in', $ids]], null, '*', null, true);
                     if (!empty($bookItemRes)) {
                         foreach ($bookItemRes as $bookItem) {