shish 4 gadi atpakaļ
vecāks
revīzija
0c8e314b88

+ 1 - 1
app-hd/controllers/WorkController.php

@@ -182,7 +182,7 @@ class WorkController extends BaseController
             }
             //花材未锁定,需要锁定并扣库存
             if ($work->stockLock == 0) {
-                WorkClass::lock($work);
+                WorkItemClass::lock($work);
             }
             WorkClass::finish($work);
             $transaction->commit();

+ 17 - 0
biz-hd/stat/classes/StatWorkCatClass.php

@@ -10,4 +10,21 @@ class StatWorkCatClass extends BaseClass
 
     public static $baseFile = '\bizHd\stat\models\StatWorkCat';
 
+    public static function replace($main, $catId, $catName, $num)
+    {
+        $time = date('Ymd');
+        $mainId = $main->id ?? 0;
+        $where = ['mainId' => $mainId, 'catId' => $catId, 'time' => $time];
+        $model = self::getByCondition($where, true);
+        if (empty($model)) {
+            $data = ['mainId' => $mainId, 'time' => $time, 'catId' => $catId, 'catName' => $catName];
+            $model = self::add($data, true);
+        }
+        $id = $model->id;
+        $stat = self::getLockById($id);
+        $stat->workNum = bcadd($num, $stat->workNum);
+        $stat->save();
+        StatWorkCatMonthClass::replace($main, $catId, $catName, $num);
+    }
+
 }

+ 23 - 0
biz-hd/stat/classes/StatWorkCatItemClass.php

@@ -10,4 +10,27 @@ class StatWorkCatItemClass extends BaseClass
 
     public static $baseFile = '\bizHd\stat\models\StatWorkCatItem';
 
+    public static function replace($shop, $catId, $catName, $itemData, $num)
+    {
+        $time = date('Ymd');
+        $mainId = $shop->mainId ?? 0;
+        $itemId = $itemData['itemId'] ?? 0;
+        $ptItemId = $itemData['ptItemId'] ?? 0;
+        $ratio = $itemData['ratio'] ?? 0;
+        $bigUnit = $itemData['bigUnit'] ?? '扎';
+        $smallUnit = $itemData['smallUnit'] ?? '支';
+        $where = ['mainId' => $mainId, 'catId' => $catId, 'itemId' => $itemId, 'time' => $time];
+        $model = self::getByCondition($where, true);
+        if (empty($model)) {
+            $data = ['mainId' => $mainId, 'time' => $time, 'catId' => $catId, 'catName' => $catName, 'ptItemId' => $ptItemId, 'ratio' => $ratio,
+                'bigUnit' => $bigUnit, 'smallUnit' => $smallUnit];
+            $model = self::add($data, true);
+        }
+        $id = $model->id;
+        $stat = self::getLockById($id);
+        $stat->num = bcadd($num, $stat->num);
+        $stat->save();
+        StatWorkCatItemMonthClass::replace($shop, $catId, $catName, $itemData, $num);
+    }
+
 }

+ 24 - 0
biz-hd/stat/classes/StatWorkCatItemMonthClass.php

@@ -10,4 +10,28 @@ class StatWorkCatItemMonthClass extends BaseClass
 
     public static $baseFile = '\bizHd\stat\models\StatWorkCatItemMonth';
 
+    public static function replace($shop, $catId, $catName, $itemData, $num)
+    {
+        $time = date('Ym');
+        $year = date('Y');
+        $month = date('m');
+        $mainId = $shop->mainId ?? 0;
+        $itemId = $itemData['itemId'] ?? 0;
+        $ptItemId = $itemData['ptItemId'] ?? 0;
+        $ratio = $itemData['ratio'] ?? 0;
+        $bigUnit = $itemData['bigUnit'] ?? '扎';
+        $smallUnit = $itemData['smallUnit'] ?? '支';
+        $where = ['mainId' => $mainId, 'catId' => $catId, 'itemId' => $itemId, 'time' => $time];
+        $model = self::getByCondition($where, true);
+        if (empty($model)) {
+            $addData = ['mainId' => $mainId, 'catId' => $catId, 'catName' => $catName, 'time' => $time, 'year' => $year, 'month' => $month, 'ptItemId' => $ptItemId, 'ratio' => $ratio, 'itemId' => $itemId,
+                'bigUnit' => $bigUnit, 'smallUnit' => $smallUnit];
+            $model = self::add($addData, true);
+        }
+        $id = $model->id;
+        $stat = self::getLockById($id);
+        $stat->num = bcadd($num, $stat->num);
+        $stat->save();
+    }
+
 }

+ 17 - 0
biz-hd/stat/classes/StatWorkCatMonthClass.php

@@ -10,4 +10,21 @@ class StatWorkCatMonthClass extends BaseClass
 
     public static $baseFile = '\bizHd\stat\models\StatWorkCatMonth';
 
+    public static function replace($main, $catId, $catName, $num)
+    {
+        $time = date('Ym');
+        $year = date('Y');
+        $month = date('m');
+        $mainId = $main->id ?? 0;
+        $where = ['mainId' => $mainId, 'catId' => $catId, 'time' => $time,];
+        $model = self::getByCondition($where, true);
+        if (empty($model)) {
+            $model = self::add(['mainId' => $mainId, 'catId' => $catId, 'catName' => $catName, 'time' => $time, 'year' => $year, 'month' => $month, 'num' => 1], true);
+        }
+        $id = $model->id;
+        $stat = self::getLockById($id);
+        $stat->workNum = bcadd($num, $stat->workNum);
+        $stat->save();
+    }
+
 }

+ 15 - 7
biz-hd/work/classes/WorkClass.php

@@ -11,6 +11,7 @@ use bizHd\goods\classes\GoodsItemClass;
 use bizHd\order\classes\OrderClass;
 use bizHd\order\classes\OrderGoodsClass;
 use bizHd\shop\classes\ShopClass;
+use bizHd\stat\classes\StatWorkCatClass;
 use common\components\dict;
 use common\components\imgUtil;
 use common\components\orderSn;
@@ -27,6 +28,19 @@ class WorkClass extends BaseClass
     const STATUS_COMPLETE = 1;
     const STATUS_CANCEL = 2;
 
+    //创建制作单 ssh 20220618
+    public static function addWork($data, $main)
+    {
+        $catId = $data['catId'] ?? 0;
+        if (empty($catId)) {
+            util::fail('没有选择分类');
+        }
+        $catName = $data['catName'] ?? '';
+        $num = 1;
+        StatWorkCatClass::replace($main, $catId, $catName, $num);
+        return self::add($data, true);
+    }
+
     //打印工单 ssh 20220601
     public static function print($work, $shop, $mustPrint = true)
     {
@@ -144,7 +158,7 @@ class WorkClass extends BaseClass
         unset($data['setItemNum']);
         $data['flowerNum'] = isset($data['flowerNum']) && is_numeric($data['flowerNum']) ? $data['flowerNum'] : 0;
         $data['sn'] = date("j") . StatWorkCountClass::addOrder($main);
-        $work = WorkClass::add($data, true);
+        $work = WorkClass::addWork($data, $main);
         $product = $data['product'] ?? [];
         if (!empty($product)) {
             $mainId = $main->id ?? 0;
@@ -171,12 +185,6 @@ class WorkClass extends BaseClass
         return $work;
     }
 
-    //锁定制作单 ssh 20220320
-    public static function lock($work)
-    {
-        WorkItemClass::lock($work);
-    }
-
     //取消制作单
     public static function cancel($work)
     {

+ 33 - 2
biz-hd/work/classes/WorkItemClass.php

@@ -6,6 +6,8 @@ use biz\stock\classes\StockClass;
 use bizGhs\order\classes\StockWastageOrderClass;
 use bizGhs\product\classes\ProductClass;
 use bizHd\order\classes\OrderGoodsClass;
+use bizHd\shop\classes\ShopClass;
+use bizHd\stat\classes\StatWorkCatItemClass;
 use common\components\arrayUtil;
 use common\components\dict;
 use common\components\imgUtil;
@@ -178,6 +180,18 @@ class WorkItemClass extends BaseClass
         $sjId = $work->sjId ?? 0;
         $shopId = $work->shopId ?? 0;
 
+        $shop = ShopClass::getById($shopId, true);
+        if (empty($shop)) {
+            util::fail('没有找到门店');
+        }
+        $stockModel = $shop->stockModel ?? 0;
+
+        $catId = $work->catId ?? 0;
+        $catName = $work->catName ?? '';
+        if (empty($catId)) {
+            util::fail('没有分类');
+        }
+
         $stockLock = $work->stockLock ?? 0;
         if ($stockLock == 1) {
             util::fail('库存已锁定了');
@@ -194,9 +208,26 @@ class WorkItemClass extends BaseClass
             $unitType = $item->unitType ?? 0;
             $num = $item->num ?? 0;
             $itemId = $item->itemId ?? 0;
-            //减库存
-            $totalNum = bcmul($workNum, $num);
+            //管到扎,不需要根据制作单上要求的作品数X花材数
+            if ($stockModel == 0) {
+                $totalNum = $num;
+            } else {
+                $totalNum = bcmul($workNum, $num);
+            }
             OrderGoodsClass::consumeItemByMakeGoods($workSn, $sjId, $shopId, $itemId, $totalNum, $unitType);
+
+            $ptItemId = $item->ptItemId ?? 0;
+            $ratio = $item->ratio ?? 0;
+            $bigUnit = $item->bigName ?? '扎';
+            $smallUnit = $item->smallName ?? '支';
+            $itemData = [
+                'itemId' => $itemId,
+                'ptItemId' => $ptItemId,
+                'ratio' => $ratio,
+                'bigUnit' => $bigUnit,
+                'smallUnit' => $smallUnit,
+            ];
+            StatWorkCatItemClass::replace($shop, $catId, $catName, $itemData, $totalNum);
         }
         $work->bigNum = $bigNum;
         $work->smallNum = $smallNum;