瀏覽代碼

借库存

shish 2 年之前
父節點
當前提交
9bdf37e7b0

+ 10 - 1
app-ghs/controllers/CheckOrderController.php

@@ -2,6 +2,7 @@
 
 namespace ghs\controllers;
 
+use bizGhs\book\classes\BookItemCustomClass;
 use bizGhs\order\classes\CheckOrderClass;
 use bizGhs\product\classes\ProductClass;
 use Yii;
@@ -16,13 +17,21 @@ class CheckOrderController extends BaseController
         $get = Yii::$app->request->get();
         $inId = $get['inId'] ?? 0;
         $outId = $get['outId'] ?? 0;
+        $bookItemCustomId = $get['bookItemCustomId']??0;
         $num = $get['num'] ?? 0;
         if ($num <= 0) {
             util::fail('借数量不足');
         }
         $shop = $this->shop;
         $staff = $this->shopAdmin;
-        CheckOrderClass::loanStock($inId, $outId, $num, $shop, $staff);
+        $bookItemCustomRes = BookItemCustomClass::getById($bookItemCustomId,true);
+        if(empty($bookItemCustomRes)){
+            util::fail('没有预订相关的信息呢');
+        }
+        if($bookItemCustomRes->mainId!=$this->mainId){
+            util::fail('不是你的预订信息');
+        }
+        CheckOrderClass::loanStock($inId, $outId, $num, $shop, $staff,$bookItemCustomRes);
         util::complete('操作成功');
     }
 

+ 1 - 1
app-ghs/controllers/WastageController.php

@@ -72,7 +72,7 @@ class WastageController extends BaseController
             //判断花材有效性
             ProductClass::valid($productList, $this->mainId);
             $post['product'] = $productList;
-            $return = StockWastageOrderClass::addOrder($post);
+            $return = StockWastageOrderClass::addOrder($post,$this->shop,true);
             $transaction->commit();
             util::success($return);
         } catch (\Exception $e) {

+ 4 - 0
biz-ghs/book/classes/BookCustomClass.php

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

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

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

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

@@ -398,6 +398,10 @@ class BookItemCustomClass extends BaseClass
             $currentCapitalType = dict::getDict('capitalType', 'ghsPurchase');
             $orderSn = $bill->orderSn ?? '';
             $event = $staffName . "增加待入库单 {$orderSn} 减少待采 {$name} " . $delNeedCgNum . $bigUnit;
+        } elseif ($currentChangeType == 'loanStock') {
+            $currentCapitalType = dict::getDict('capitalType', 'loanStock');
+            $outName = $params['outName']??'';
+            $event = $staffName . '向' . $outName .'借库存'.$delNeedCgNum.$bigUnit.',减少待采' . $delNeedCgNum . $bigUnit;
         } elseif ($currentChangeType == 'delBook') {
             $currentCapitalType = dict::getDict('capitalType', 'delBook');
             $event = $customName . '减少预订' . $name . $totalBookNum . $bigUnit . ',其中减少待采' . $delNeedCgNum . $bigUnit;

+ 14 - 6
biz-ghs/item/classes/ItemClass.php

@@ -25,8 +25,11 @@ class ItemClass extends BaseClass
             if (!empty($booList)) {
                 foreach ($booList as $book) {
                     $onNum = $book->onNum ?? 0;
+                    $bookNum = $book->bookNum??0;
+                    $roadNum = $book->roadNum??0;
                     $itemId = $book->itemId ?? 0;
-                    $onList[$itemId] = $onNum;
+                    $needCgNum = $book->needCgNum??0;
+                    $onList[$itemId] = ['onNum'=>$onNum,'bookNum'=>$bookNum,'roadNum'=>$roadNum,'needCgNum'=>$needCgNum];
                 }
             }
         }
@@ -47,14 +50,19 @@ class ItemClass extends BaseClass
                 $data['list'][$key]['showUsePrice'] = '';
                 $productId = $val['id'] ?? 0;
                 $stock = $val['stock'] ?? 0;
-                $remainStock = 0;
+                $couldLoan = 0;
                 if (isset($onList[$productId])) {
-                    $onNum = $onList[$productId];
-                    if ($stock > $onNum) {
-                        $remainStock = bcsub($stock, $onNum);
+                    $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);
                     }
                 }
-                $data['list'][$key]['stock'] = $remainStock;
+                $data['list'][$key]['stock'] = $couldLoan;
             }
         }
         return $data;

+ 44 - 12
biz-ghs/order/classes/CheckOrderClass.php

@@ -5,7 +5,9 @@ namespace bizGhs\order\classes;
 use biz\shop\classes\ShopClass;
 use biz\stat\classes\StatPdAddClass;
 use biz\stat\classes\StatPdSubClass;
+use bizGhs\book\classes\BookCustomClass;
 use bizGhs\book\classes\BookItemClass;
+use bizGhs\book\classes\BookItemCustomClass;
 use bizGhs\product\classes\ProductClass;
 use bizGhs\shop\classes\MainClass;
 use bizGhs\stock\classes\StockInDayClass;
@@ -28,7 +30,7 @@ class CheckOrderClass extends BaseClass
         self::STATUS_COMPLETE => '已盘点',
     ];
 
-    public static function loanStock($inId, $outId, $num, $shop, $staff)
+    public static function loanStock($inId, $outId, $num, $shop, $staff,$bookItemCustomRes)
     {
         $sjId = $shop->sjId ?? 0;
         $shopId = $shop->id ?? 0;
@@ -43,26 +45,33 @@ class CheckOrderClass extends BaseClass
             util::fail('没有找到花材。');
         }
         $outName = $out->name ?? '';
-        $remainStock = $out->stock ?? 0;
+        $stock = $out->stock ?? 0;
         $bookSn = $shop->bookSn ?? 0;
+        $couldLoan = 0;
         if (!empty($bookSn)) {
             $booItem = BookItemClass::getByCondition(['bookSn' => $bookSn, 'itemId' => $outId], true);
             if (!empty($booItem)) {
-                $stock = $out->stock ?? 0;
-                $onNum = $booItem->onNum ?? 0;
-                $remainStock = $stock > $onNum ? bcsub($stock, $onNum) : 0;
+                //借出的人预订没有影响
+                $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);
+                }
             }
         }
-
-        $remainOutStock = bcsub($remainStock, $num);
-        if ($remainOutStock < 0) {
-            util::fail("可借数量 " . $remainStock);
+        if($num>$couldLoan){
+            util::fail("只能借{$couldLoan}");
         }
-
         if ($inId == $outId) {
             util::fail('同个花材呢');
         }
 
+        $newOutStock = bcsub($stock, $num,2);
+
         $inStock = $in->stock ?? 0;
         $newInStock = bcadd($inStock, $num);
 
@@ -70,7 +79,7 @@ class CheckOrderClass extends BaseClass
         $staffName = $staff->name ?? '';
         $staffId = $staff->id ?? 0;
 
-        $ghsItemInfo = [['productId' => $outId, 'bigNum' => $remainOutStock, 'smallNum' => 0,]];
+        $ghsItemInfo = [['productId' => $outId, 'bigNum' => $newOutStock, 'smallNum' => 0,]];
         $pdData = [];
         $pdData['itemInfo'] = $ghsItemInfo;
         $pdData['sjId'] = $sjId;
@@ -96,7 +105,30 @@ class CheckOrderClass extends BaseClass
         $pdData['staffName'] = $staffName;
         $pdData['staffId'] = $staffId;
         $pdData['remark'] = "向{$outName}借{$num}个库存";
-        self::opOrder($pdData, false, false);
+        $inOrder = self::opOrder($pdData, false, false);
+
+        //借入的人待采会被影响
+        $needCgNum = $bookItemCustomRes->needCgNum??0;
+        if($num>$needCgNum){
+            $delNeedCgNum = $needCgNum;
+        }else{
+            $delNeedCgNum = $num;
+        }
+        $params = ['staffId'=>$staffId,'staffName'=>$staffName];
+        $params['currentChangeType'] = 'loanStock';
+        $params['outName'] = $outName;
+        $bookItemCustomRes = BookItemCustomClass::delNeedCgNum($bookItemCustomRes,$delNeedCgNum, 0, $inOrder, $shop, $in, $params);
+        $bookItemRes = BookItemClass::getByCondition(['bookSn'=>$bookSn,'itemId'=>$inId],true);
+        if(empty($bookItemRes)){
+            util::fail('借库存没有找到bookItem');
+        }
+        $bookItemRes = BookItemClass::delNeedCgNum($bookItemRes, $delNeedCgNum, 0, $inOrder, $shop, $in, $params);
+        $customId = $bookItemCustomRes->customId??0;
+        $bookCustomRes = BookCustomClass::getByCondition(['bookSn'=>$bookSn,'customId'=>$customId],true);
+        if(empty($bookCustomRes)){
+            util::fail('借库存没有找到bookCustom');
+        }
+        $bookCustomRes = BookCustomClass::delNeedCgNum($bookCustomRes, $delNeedCgNum, 0, $inOrder, $shop, $in, $params);
         return true;
     }
 

+ 17 - 1
biz-ghs/order/classes/StockWastageOrderClass.php

@@ -6,6 +6,7 @@ use biz\shop\classes\ShopCapitalClass;
 use biz\shop\classes\ShopClass;
 use biz\stat\classes\StatOutClass;
 use biz\stat\classes\StatWastClass;
+use bizGhs\book\classes\BookItemClass;
 use bizGhs\order\traits\OrderTrait;
 use bizGhs\product\classes\ProductClass;
 use bizGhs\shop\classes\MainClass;
@@ -52,7 +53,7 @@ class StockWastageOrderClass extends BaseClass
         return $data;
     }
 
-    public static function addOrder($post)
+    public static function addOrder($post,$shop=null,$check=false)
     {
         $mainId = $post['mainId'] ?? 0;
         $data = [];
@@ -71,7 +72,10 @@ class StockWastageOrderClass extends BaseClass
         $totalBig = 0;
         $totalSmall = 0;
         if (!empty($ghsItemInfo)) {
+            $ids = [];
             foreach ($ghsItemInfo as $current) {
+                $productId = $current['productId']??0;
+                $ids[] = $productId;
                 $bigNum = $current['bigNum'] ?? 0;
                 $totalNum = bcadd($totalNum, $bigNum, 2);
                 $smallNum = $current['smallNum'] ?? 0;
@@ -81,6 +85,18 @@ class StockWastageOrderClass extends BaseClass
                 $totalBig = bcadd($totalBig, $bigNum);
                 $totalSmall = bcadd($totalSmall, $smallNum);
             }
+
+            $bookSn = $shop->bookSn ?? 0;
+            if ($check == true && !empty($bookSn)) {
+                $bookItemRes = BookItemClass::getAllByCondition(['bookSn' => $bookSn, 'itemId' => ['in', $ids]], null, '*', null, true);
+                if (!empty($bookItemRes)) {
+                    foreach ($bookItemRes as $bookItem) {
+                        $name = $bookItem->name ?? '未命名';
+                        util::fail($name . " 被预订,不能直接报损");
+                    }
+                }
+            }
+
         }
         $data['bigNum'] = $totalBig;
         $data['smallNum'] = $totalSmall;

+ 3 - 0
common/components/dict.php

@@ -357,6 +357,8 @@ class dict
             'ghsCgRefund' => ['id' => 69, 'name' => 'ghsCgRefund'],
             //供货商的采购单取消
             'ghsCgCancel' => ['id' => 70, 'name' => 'ghsCgCancel'],
+            //借库存
+            'loanStock' => ['id' => 71, 'name' => 'loanStock'],
         ],
         "capitalTypeList" => [//流水类型的对应链接,后台收支明细查看时跳转的链接
             0 => ['link' => '/capital/order-detail', 'name' => '网店', 'orderLink' => '/order/detail', 'id' => 0,],
@@ -400,6 +402,7 @@ class dict
             68 => ['link' => '', 'name' => '减少预订', 'id' => 68,],
             69 => ['link' => '', 'name' => '采购售后', 'id' => 69,],
             70 => ['link' => '', 'name' => '取消采购', 'id' => 70,],
+            71 => ['link' => '', 'name' => '借库存', 'id' => 71,],
         ],
 
         //用户来源