Эх сурвалжийг харах

制作工单库存函数拆分,增加取消工单方法

林琦海 4 жил өмнө
parent
commit
e0cd88b06a

+ 16 - 0
biz-ghs/stock/classes/StockRecordClass.php

@@ -26,6 +26,8 @@ class StockRecordClass extends BaseClass
     const STOCK_RECORD_TYPE_HD_ORDER = 11;//花店销售单
     const STOCK_RECORD_TYPE_GOODS_CONSUME = 12;//制作成品消耗
     const STOCK_RECORD_TYPE_GOODS_WASTAGE = 13;//制作成品损耗
+    const STOCK_RECORD_TYPE_GOODS_CONSUME_CANCEL = 14;//取消制作成品损耗
+    const STOCK_RECORD_TYPE_GOODS_WASTAGE_CANCEL = 15;//取消制作成品损耗
 
     public static $typeMap = [
         self::STOCK_RECORD_TYPE_PURCHASE => '采购入库',
@@ -41,6 +43,8 @@ class StockRecordClass extends BaseClass
         self::STOCK_RECORD_TYPE_HD_ORDER => '开单',
         self::STOCK_RECORD_TYPE_GOODS_CONSUME => '制作成品消耗',
         self::STOCK_RECORD_TYPE_GOODS_WASTAGE => '制作成品损耗',
+        self::STOCK_RECORD_TYPE_GOODS_CONSUME_CANCEL => '取消制作成品消耗',
+        self::STOCK_RECORD_TYPE_GOODS_WASTAGE_CANCEL => '取消制作成品损耗',
     ];
 
     public static function getRecordList($where)
@@ -190,4 +194,16 @@ class StockRecordClass extends BaseClass
         $data['recordType'] = self::STOCK_RECORD_TYPE_GOODS_WASTAGE;
         return self::addRecord($data);
     }
+
+    public static function cancelMakeGoodsConsume($data)
+    {
+        $data['recordType'] = self::STOCK_RECORD_TYPE_GOODS_CONSUME_CANCEL;
+        return self::addRecord($data);
+    }
+
+    public static function cancelMakeGoodsWastage($data)
+    {
+        $data['recordType'] = self::STOCK_RECORD_TYPE_GOODS_WASTAGE_CANCEL;
+        return self::addRecord($data);
+    }
 }

+ 172 - 17
biz-hd/order/classes/OrderGoodsClass.php

@@ -8,6 +8,7 @@ use bizGhs\stock\classes\StockRecordClass;
 use bizGhs\stock\services\StockRecordService;
 use bizHd\goods\classes\GoodsClass;
 use common\components\business;
+use common\components\util;
 use Yii;
 use bizHd\base\classes\BaseClass;
 
@@ -97,6 +98,177 @@ class OrderGoodsClass extends BaseClass
         return $data;
     }
 
+
+    //制作工单完成,新增成品库存
+    public static function addGoodsStockByMakeGoods($orderSn,$sjId,$shopId,$mainId,$goodsId,$goodsNum)
+    {
+        //加成品库存
+        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);
+        return true;
+    }
+
+    //制作工单消耗花材
+    //消耗花材信息:$consumeItemInfo = [{"id":12233,"num":1,"unitType":0}]
+    public static function consumeItemByMakeGoods($orderSn,$sjId,$shopId,$consumeItemInfo)
+    {
+        if(empty($consumeItemInfo)){
+            util::fail("参数错误");
+        }
+        //花材消耗
+        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);
+        }
+        return true;
+    }
+
+    //制作工单 花材损耗
+    //损耗花材信息:$wastageItemInfo = [{"id":12233,"num":1,"unitType":0}]
+    public static function wastageItemByMakeGoods($orderSn,$sjId,$shopId,$wastageItemInfo)
+    {
+        //花材损耗
+        if(empty($wastageItemInfo)){
+            util::fail("参数错误");
+        }
+        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);
+        }
+    }
+
+    //销售成品库存变更方法(减库存)
+    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;
+    }
+
+    //制作单取消
+    //退回花材损耗,退回花材消耗,退回成品库存
+    public static function cancelMakeGoods($orderSn)
+    {
+        //是否有损耗
+        $whereWastage = [];
+        $whereWastage['orderSn'] = $orderSn;
+        $whereWastage['recordType'] = StockRecordClass::STOCK_RECORD_TYPE_GOODS_WASTAGE;
+        $wastageDatas = StockRecordClass::getAllByCondition($whereWastage,null,"*");
+        if($wastageDatas){
+            foreach ($wastageDatas as $v){
+                //加库存
+                $stockInfo = ProductClass::addStockByItemNum($v['productId'],$v['itemNum']);
+                //加流水记录
+                $record = $v;
+                $record['oldStock'] = $stockInfo['oldStock'];
+                $record['newStock'] = $stockInfo['newStock'];
+                unset($record['id']);
+                StockRecordClass::cancelMakeGoodsWastage($record);
+            }
+        }
+        //是否有消耗
+        $whereConsume = [];
+        $whereConsume['orderSn'] = $orderSn;
+        $whereConsume['recordType'] = StockRecordClass::STOCK_RECORD_TYPE_GOODS_CONSUME;
+        $consumeDatas = StockRecordClass::getAllByCondition($whereConsume,null,"*");
+        if($consumeDatas){
+            foreach ($consumeDatas as $v){
+                //加库存
+                $stockInfo = ProductClass::addStockByItemNum($v['productId'],$v['itemNum']);
+                //加流水记录
+                $record = $v;
+                $record['oldStock'] = $stockInfo['oldStock'];
+                $record['newStock'] = $stockInfo['newStock'];
+                unset($record['id']);
+                StockRecordClass::cancelMakeGoodsConsume($record);
+            }
+        }
+
+        //是否有成品
+        $whereGoods = [];
+        $whereGoods['orderSn'] = $orderSn;
+        $whereGoods['recordType'] = GoodsStockRecordClass::STOCK_RECORD_TYPE_PURCHASE;
+        $goodsData = GoodsStockRecordClass::getByCondition($whereGoods,null,"*");
+        if($goodsData){
+            //减库存
+            GoodsClass::decreaseStock($goodsData['goodsId'],$goodsData['mainId'],$goodsData['goodsNum']);
+            //流水记录
+            unset($goodsData['id']);
+            GoodsStockRecordClass::cancelMakeGoods($goodsData);
+
+        }
+
+
+    }
+
+
+
+    //该方法已经拆开来了(弃用)
     //制作成品库存变更方法(加成品库存,减花材库存(消耗、损耗))
     //消耗花材信息:$consumeItemInfo = [{"id":12233,"num":1,"unitType":0}]
     //损耗花材信息:$wastageItemInfo = [{"id":12233,"num":1,"unitType":0}]
@@ -179,21 +351,4 @@ class OrderGoodsClass extends BaseClass
         return true;
     }
 
-    //销售成品库存变更方法(减库存)
-    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;
-    }
-
 }

+ 9 - 0
biz/stock/classes/GoodsStockRecordClass.php

@@ -19,6 +19,7 @@ class GoodsStockRecordClass extends BaseClass
     const STOCK_RECORD_TYPE_SELL_STOCK_CANCEL = 8;// 取消订单
     const STOCK_RECORD_TYPE_WASTAGE = 9;// 报损
     const STOCK_RECORD_TYPE_REFUND = 10;// 退款退货
+    const STOCK_RECORD_TYPE_PURCHASE_CANCEL = 11; //取消退回采购(制作成品)
 
     public static $typeMap = [
         self::STOCK_RECORD_TYPE_PURCHASE => '制作成品',
@@ -31,6 +32,7 @@ class GoodsStockRecordClass extends BaseClass
         self::STOCK_RECORD_TYPE_SELL_STOCK_CANCEL => '取消订单',
         self::STOCK_RECORD_TYPE_WASTAGE => '报损',
         self::STOCK_RECORD_TYPE_REFUND => '退货',
+        self::STOCK_RECORD_TYPE_PURCHASE_CANCEL => '取消制作成品',
     ];
 
     //采购or工单(制作成品)
@@ -40,6 +42,13 @@ class GoodsStockRecordClass extends BaseClass
         return self::addRecord($data);
     }
 
+    //工单退回
+    public static function cancelMakeGoods($data)
+    {
+        $data['recordType'] = self::STOCK_RECORD_TYPE_PURCHASE_CANCEL;
+        return self::addRecord($data);
+    }
+
     //销售成品
     public static function sellGoods($data)
     {