瀏覽代碼

制作成品时库存变动方法

林琦海 4 年之前
父節點
當前提交
7bc5819d33

+ 2 - 3
biz-ghs/product/classes/ProductClass.php

@@ -316,11 +316,10 @@ class ProductClass extends BaseClass
             self::changeStatus($productId, 1);
         }
         util::unlock($key);
-        return ['oldStock' => $productData['stock'], 'newStock' => $newStock];
+        return ['oldStock' => $productData['stock'], 'newStock' => $newStock,'itemNum'=>$itemNum];
     }
 
     //减库存,允许负库存,负数数量(盘点时)
-    //todo 库存修改 加锁
     /**
      * @param $productId  门店下的花材ID(xhGhsItemInfo 主键ID)
      * @param $itemNumBundle  花材数量(扎)
@@ -364,7 +363,7 @@ class ProductClass extends BaseClass
         }
 
         util::unlock($key);
-        return ['oldStock' => $productData['stock'], 'newStock' => $newStock];
+        return ['oldStock' => $productData['stock'], 'newStock' => $newStock,'itemNum'=>$itemNum];
     }
 
 

+ 96 - 6
biz-hd/order/classes/OrderGoodsClass.php

@@ -2,8 +2,11 @@
 
 namespace bizHd\order\classes;
 
+use biz\stock\classes\GoodsStockRecordClass;
 use bizGhs\product\classes\ProductClass;
 use bizGhs\stock\classes\StockRecordClass;
+use bizGhs\stock\services\StockRecordService;
+use bizHd\goods\classes\GoodsClass;
 use common\components\business;
 use Yii;
 use bizHd\base\classes\BaseClass;
@@ -94,16 +97,103 @@ class OrderGoodsClass extends BaseClass
         return $data;
     }
 
-    //制作成品库存变更方法(加成品库存,减花材库存) todo
-    public static function  changeStockByMakeGoods()
+    //制作成品库存变更方法(加成品库存,减花材库存(消耗、损耗))
+    //消耗花材信息:$consumeItemInfo = [{"id":12233,"num":1,"unitType":0}]
+    //损耗花材信息:$wastageItemInfo = [{"id":12233,"num":1,"unitType":0}]
+    //id 是当前产品的id,单价unitType 是当前单位类型,0表示大单位,1表示小单位,默认0 num 是当前花材数量
+    public static function  changeStockByMakeGoods($orderSn,$sjId,$shopId,$mainId,$goodsId,$goodsNum,$consumeItemInfo,$wastageItemInfo)
     {
-
+        //加成品库存
+        GoodsClass::addStock($goodsId,$mainId,$goodsNum);
+        //成品流水记录
+        $data = [];
+        $data['sjId'] = $sjId;
+        $data['shopId'] = $shopId;
+        $data['mainId'] = $mainId;
+        $data['orderSn'] = $orderSn;
+        $data['goodsId'] = $goodsId;
+        $data['goodsNum'] = $goodsNum;
+        GoodsStockRecordClass::addMakeGoods($data);
+        //花材消耗
+        if(!empty($consumeItemInfo)){
+            foreach ($consumeItemInfo as $v){
+                //库存减少
+                $bigNum = 0;
+                $smallNum = 0;
+                $productId = $v['id'];
+                if($v['unitType']==0){
+                    //大单位
+                    $bigNum = $v['num'];
+                }else{
+                    //小单位
+                    $smallNum = $v['num'];
+                }
+                //扣库存
+                $stockInfo = ProductClass::decreaseStock($productId, $bigNum, $smallNum, true);
+                //记录流流水
+                $productData = ProductClass::getById($productId);
+                $record = [];
+                $record['sjId'] = $sjId;
+                $record['shopId'] = $shopId;
+                $record['mainId'] = $productData['mainId'];
+                $record['orderSn'] = $orderSn;
+                $record['itemId'] = $productData['itemId'];
+                $record['productId'] = $productId;
+                $record['itemNum'] = $stockInfo['itemNum'];
+                $record['oldStock'] = $stockInfo['oldStock'];
+                $record['newStock'] =$stockInfo['newStock']; //
+                StockRecordClass::makeGoodsConsume($record);
+            }
+        }
+        //花材损耗
+        if(!empty($wastageItemInfo)){
+            foreach ($wastageItemInfo as $v){
+                //库存减少
+                $bigNum = 0;
+                $smallNum = 0;
+                $productId = $v['id'];
+                if($v['unitType']==0){
+                    //大单位
+                    $bigNum = $v['num'];
+                }else{
+                    //小单位
+                    $smallNum = $v['num'];
+                }
+                //扣库存
+                $stockInfo = ProductClass::decreaseStock($productId, $bigNum, $smallNum, true);
+                //记录流流水
+                $productData = ProductClass::getById($productId);
+                $record = [];
+                $record['sjId'] = $sjId;
+                $record['shopId'] = $shopId;
+                $record['mainId'] = $productData['mainId'];
+                $record['orderSn'] = $orderSn;
+                $record['itemId'] = $productData['itemId'];
+                $record['productId'] = $productId;
+                $record['itemNum'] = $stockInfo['itemNum'];
+                $record['oldStock'] = $stockInfo['oldStock'];
+                $record['newStock'] =$stockInfo['newStock']; //
+                StockRecordClass::makeGoodsWastage($record);
+            }
+        }
+        return true;
     }
 
-    //销售成品库存变更方法(减库存) todo
-    public static function changeStockBySellGoods()
+    //销售成品库存变更方法(减库存)
+    public static function changeStockBySellGoods($orderSn,$sjId,$shopId,$mainId,$goodsId,$goodsNum)
     {
-
+        //加成品库存
+        GoodsClass::decreaseStock($goodsId,$mainId,$goodsNum);
+        //成品流水记录
+        $data = [];
+        $data['sjId'] = $sjId;
+        $data['shopId'] = $shopId;
+        $data['mainId'] = $mainId;
+        $data['orderSn'] = $orderSn;
+        $data['goodsId'] = $goodsId;
+        $data['goodsNum'] = $goodsNum;
+        GoodsStockRecordClass::sellGoods($data);
+        return true;
     }
 
 }

+ 42 - 4
biz/stock/classes/GoodsStockRecordClass.php

@@ -21,7 +21,7 @@ class GoodsStockRecordClass extends BaseClass
     const STOCK_RECORD_TYPE_REFUND = 10;// 退款退货
 
     public static $typeMap = [
-        self::STOCK_RECORD_TYPE_PURCHASE => '采购入库',
+        self::STOCK_RECORD_TYPE_PURCHASE => '制作成品',
         self::STOCK_RECORD_TYPE_IN_STOCK => '调拨入库',
         self::STOCK_RECORD_TYPE_OUT_STOCK => '调拨出库',
         self::STOCK_RECORD_TYPE_CHECK_STOCK => '盘点',
@@ -33,21 +33,59 @@ class GoodsStockRecordClass extends BaseClass
         self::STOCK_RECORD_TYPE_REFUND => '退货',
     ];
 
-    //采购or制作成品
+    //采购or工单(制作成品)
+    public static function addMakeGoods($data)
+    {
+        $data['recordType'] = self::STOCK_RECORD_TYPE_PURCHASE;
+        return self::addRecord($data);
+    }
 
+    //销售成品
+    public static function sellGoods($data)
+    {
+        $data['recordType'] = self::STOCK_RECORD_TYPE_SELL_STOCK;
+        return self::addRecord($data);
+    }
 
     //新增库存变更记录
     public static function addRecord($data)
     {
-        $respond = self::add($data);
+        $record = [];
+        $record['sjId'] = $data['sjId']??0;
+        $record['shopId'] = $data['shopId']??0;
+        $record['mainId'] = $data['mainId']??0;
+        $record['orderSn'] = $data['orderSn']??'';
+        $record['recordType'] = $data['recordType']??'';
+        $record['goodsId'] = $data['goodsId']??'';
+        $record['goodsNum'] = $data['goodsNum']??'';
+        $record['oldStock'] =  $data['oldStock']??'';
+        $record['newStock'] =  $data['newStock']??'';
+        $respond = self::add($record);
         return $respond;
     }
 
 
 
-    //获取某个成品的库存变更记录 todo
+    //获取某个成品的库存变更记录
+    public static function getRecordList($where)
+    {
+        $data = self::getList('*', $where, 'addTime DESC');
+        $list = isset($data['list']) && !empty($data['list']) ? $data['list'] : [];
+        if (empty($list)) {
+            return $data;
+        }
+        foreach ($list as $k => $v) {
 
+            $list[$k]['typeName'] = self::getTypeName($v['recordType']);
+        }
+        $data['list'] = $list;
+        return $data;
+    }
 
+    public static function getTypeName($type)
+    {
+        return self::$typeMap[$type] ?? '';
+    }
 
 
 }