Parcourir la source

收入计算问题

shish il y a 5 ans
Parent
commit
c466da2b60

+ 6 - 6
app-ghs/controllers/ConsoleController.php

@@ -2,16 +2,12 @@
 
 namespace ghs\controllers;
 
-use biz\shop\services\ShopService;
-use biz\sj\services\MerchantAssetService;
+use biz\stat\classes\StatStockOutClass;
 use biz\stat\services\StatOutService;
 use bizHd\stat\classes\StatViewClass;
 use bizHd\stat\services\StatIncomeMonthService;
 use bizHd\stat\services\StatIncomeService;
-use bizHd\stat\services\StatOrderService;
 use bizHd\stat\services\StatUserService;
-use bizHd\stat\services\StatVisitService;
-use bizMall\stat\classes\StatOrderClass;
 use common\components\dict;
 use common\components\httpUtil;
 use Yii;
@@ -31,9 +27,13 @@ class ConsoleController extends BaseController
         //今天客户与粉丝数
         $userData = StatUserService::getTodayNum($this->shopId);
         $customNum = isset($userData['riseUserNum']) ? $userData['riseUserNum'] : 0;
-        //今天收入
+
+        //今天总收入-出库收入= 营业收入
         $incomeData = StatIncomeService::getTodayNum($this->shopId);
         $todayIncome = isset($incomeData['amount']) ? $incomeData['amount'] : 0.00;
+        $stockOutAmount = StatStockOutClass::getTodayAmount($this->shop);
+        $todayIncome = bcsub($todayIncome, $stockOutAmount, 2);
+
         //2021.4.14 linqh 今日支出
         $outData = StatOutService::getTodayNum($this->shopId);
         $todayOut = $outData['amount'] ?? '0.00';

+ 100 - 94
biz-ghs/order/classes/StockInOrderClass.php

@@ -4,6 +4,8 @@ namespace bizGhs\order\classes;
 
 use biz\shop\classes\ShopCapitalClass;
 use biz\shop\classes\ShopClass;
+use biz\stat\classes\StatStockInClass;
+use biz\stat\classes\StatStockOutClass;
 use bizGhs\order\models\StockOutOrderItem;
 use bizGhs\order\traits\OrderTrait;
 use bizGhs\product\classes\ProductClass;
@@ -18,7 +20,7 @@ class StockInOrderClass extends BaseClass
 {
     use OrderTrait;
     const STATUS_WAIT = 1; //待入库
-    const STATUS_COMPLETE = 2 ; //已入库
+    const STATUS_COMPLETE = 2; //已入库
     const STATUS_CANCEL = 3; //取消入库
     const ACTION_CONFIRM = 'confirm'; //直接入库
     public static $baseFile = '\bizGhs\order\models\StockInOrder';
@@ -49,7 +51,7 @@ class StockInOrderClass extends BaseClass
     {
         $data = [];
         $data['status'] = self::STATUS_WAIT;//待入库
-        $orderSn =orderSn::getGhsStockInSn();
+        $orderSn = orderSn::getGhsStockInSn();
         $data['orderSn'] = $orderSn;
         $data['sjId'] = $outOrderData['sjId'];
         $data['outShopId'] = $outOrderData['outShopId'];
@@ -63,47 +65,47 @@ class StockInOrderClass extends BaseClass
         $ghsItemInfo = $outOrderData['itemInfo'];
         $shopId = $data['inShopId'];
         //入库: 需要将itemId 转换成对应的productId,若没有对应的productId,则需要新增
-        ProductClass::complementProduct($data['sjId'],$shopId,$ghsItemInfo);
-        $itemIds = array_column($ghsItemInfo,"itemId");
-        $productData = ProductClass::getGhsProductDataByItemIds($shopId,$itemIds);
-        $itemData = array_column($productData,null,'itemId');
+        ProductClass::complementProduct($data['sjId'], $shopId, $ghsItemInfo);
+        $itemIds = array_column($ghsItemInfo, "itemId");
+        $productData = ProductClass::getGhsProductDataByItemIds($shopId, $itemIds);
+        $itemData = array_column($productData, null, 'itemId');
 
         $connection = Yii::$app->db;
         $transaction = $connection->beginTransaction();
 
-        try{
+        try {
             //写入订单表
             $order = self::add($data);
             //写入详情表
             $batchData = [];
 
-            foreach ($ghsItemInfo as $v){
+            foreach ($ghsItemInfo as $v) {
                 $tmp = [];
                 $itemId = $v['itemId'];
-                $productId =  $itemData[$itemId]['id']??0;
-                if(!$productId){
+                $productId = $itemData[$itemId]['id'] ?? 0;
+                if (!$productId) {
                     util::fail("入库失败");
                 }
                 $tmp['productId'] = $productId;
                 $tmp['orderSn'] = $orderSn;
                 $tmp['itemId'] = $itemId;
-                $tmp['itemStock'] = $itemData[$itemId]['stock']??0;//当时库存
+                $tmp['itemStock'] = $itemData[$itemId]['stock'] ?? 0;//当时库存
                 $tmp['itemNum'] = $v['itemNum'];
                 $tmp['itemPrice'] = $v['itemPrice']; //售卖的价格
-                $ratio = $itemData[$itemId]['ratio']??0;
-                $formatStock = ProductClass::formatStock($tmp['itemStock'],$ratio);
+                $ratio = $itemData[$itemId]['ratio'] ?? 0;
+                $formatStock = ProductClass::formatStock($tmp['itemStock'], $ratio);
                 $itemInfo = [
-                    'itemName'=> $v['itemName']??'',
-                    'itemCover'=> $v['cover']??'',
-                    'bigNum'=> $v['bigNum'],// 出库的大单位数量
-                    'smallNum'=> $v['smallNum'], //出库的小单位数量
-                    'bigNumStock'=> $formatStock['bigNum'],// 当时库存大单位数
-                    'smallNumStock'=> $formatStock['smallNum'],//当时库存 小单位数
-                    'itemUnit'=> $v['itemUnit'],
-                    'ratio'=>$v['ratio'],// 比例
-                    'rank'=>$v['rank']??'B',// 花材级别
-                    'bigUnit'=> $v['bigUnit'],
-                    'smallUnit'=> $v['smallUnit'],
+                    'itemName' => $v['itemName'] ?? '',
+                    'itemCover' => $v['cover'] ?? '',
+                    'bigNum' => $v['bigNum'],// 出库的大单位数量
+                    'smallNum' => $v['smallNum'], //出库的小单位数量
+                    'bigNumStock' => $formatStock['bigNum'],// 当时库存大单位数
+                    'smallNumStock' => $formatStock['smallNum'],//当时库存 小单位数
+                    'itemUnit' => $v['itemUnit'],
+                    'ratio' => $v['ratio'],// 比例
+                    'rank' => $v['rank'] ?? 'B',// 花材级别
+                    'bigUnit' => $v['bigUnit'],
+                    'smallUnit' => $v['smallUnit'],
                 ];
                 $tmp['itemInfo'] = json_encode($itemInfo);
                 $batchData[] = $tmp;
@@ -111,9 +113,9 @@ class StockInOrderClass extends BaseClass
             StockInOrderItemClass::batchAddOrderItem($batchData);
             $transaction->commit();
             return $order;
-        }catch (\Exception $exception){
+        } catch (\Exception $exception) {
             $transaction->rollBack();
-            util::fail("入库失败".$exception->getMessage());
+            util::fail("入库失败" . $exception->getMessage());
         }
 
     }
@@ -123,99 +125,102 @@ class StockInOrderClass extends BaseClass
     // 加库存
     // 加流水记录
     //增加门店收支记录 : 出库的门店加金额,入库的门店减金额(用成本价计算)
-    public static function confirmOrder($orderSn,$shopId,$adminId)
+    public static function confirmOrder($orderSn, $shopId, $adminId)
     {
         $data = [
-            'status'=>self::STATUS_COMPLETE,
-            'adminId'=>$adminId,
+            'status' => self::STATUS_COMPLETE,
+            'adminId' => $adminId,
         ];
-        $orderData =  self::getOrderDetail($orderSn,$shopId);
-        if($orderData['status'] != self::STATUS_WAIT){
+        $orderData = self::getOrderDetail($orderSn, $shopId);
+        if ($orderData['status'] != self::STATUS_WAIT) {
             util::fail("订单已处理");
         }
         $orderId = $orderData['id'];
         $connection = Yii::$app->db;
         $transaction = $connection->beginTransaction();
-        try{
-            self::updateById($orderId,$data);
+        try {
+            self::updateById($orderId, $data);
             //加库存
-            $itemInfo = $orderData['itemInfo']??[];
-            if(empty($itemInfo)){
+            $itemInfo = $orderData['itemInfo'] ?? [];
+            if (empty($itemInfo)) {
                 $transaction->rollBack();
                 util::fail("订单异常");
             }
             $inProductMapData = ProductClass::getProductMapData($itemInfo);
             $inTotalCost = 0;
-            foreach ($itemInfo as $k=>$v){
-                $stockInfo = ProductClass::addStockByItemNum($v['productId'],$v['itemNum']);
+            foreach ($itemInfo as $k => $v) {
+                $stockInfo = ProductClass::addStockByItemNum($v['productId'], $v['itemNum']);
                 $itemInfo[$k]['oldStock'] = $stockInfo['oldStock'];
                 $itemInfo[$k]['itemStock'] = $stockInfo['oldStock'];
                 $itemInfo[$k]['newStock'] = $stockInfo['newStock'];
                 $inPId = $v['productId'];
                 $inNum = $v['itemNum'];
-                $cost = $inProductMapData[$inPId]['cost']??0; //成本
-                $inTotalCost = bcadd($inTotalCost,bcmul($inNum,$cost,2),2);
+                $cost = $inProductMapData[$inPId]['cost'] ?? 0; //成本
+                $inTotalCost = bcadd($inTotalCost, bcmul($inNum, $cost, 2), 2);
             }
             //流水记录
             $orderData['shopId'] = $shopId;
             $orderData['itemInfo'] = $itemInfo;
-            StockRecordClass::addRecordByOrder($orderData,StockRecordClass::STOCK_RECORD_TYPE_IN_STOCK);
+            StockRecordClass::addRecordByOrder($orderData, StockRecordClass::STOCK_RECORD_TYPE_IN_STOCK);
             // 门店收支记录:
             //出库门店
             $outOrderSn = $orderData['outOrderSn'];
             $outShopId = $orderData['outShopId'];
-            $outOrderInfo = StockOutOrderClass::getOrderDetail($outOrderSn,$outShopId);
-            $payWay =dict::getDict('payWay', 'unknown');
-            if($outOrderInfo){
-                $outOrderInfoItem = $outOrderInfo['itemInfo']??'';
-                if($outOrderInfoItem){
-                    $outTotalCost = 0;
-                    $outProductData = ProductClass::getProductMapData($outOrderInfoItem);
-                    foreach ($outOrderInfoItem as $v){
-                        $pId = $v['productId'];
-                        $num = $v['itemNum'];
-                        $cost = $outProductData[$pId]['cost']??0; //成本
-                        $outTotalCost = bcadd($outTotalCost,bcmul($num,$cost,2),2);
-                    }
-                    $outEvent = '出库';
-                    $outCapitalType = dict::getDict('capitalType', 'ghsCheckOut', 'id');
-
-                    $shop = ShopClass::getLockById($outShopId);
-
-                    if($shop){
-                        $outCurrentTotalIncome = bcadd($shop->totalIncome, $outTotalCost, 2);
-                    }else{
-                        $outCurrentTotalIncome = $outTotalCost;
-                    }
-                    $shop->totalIncome = $outCurrentTotalIncome;
-                    $shop->save();
-                    $capitalData = [
-                        'capitalType' => $outCapitalType,
-                        'io' => 1,
-                        'totalIncome' => $outCurrentTotalIncome,
-                        'payWay' => $payWay,
-                        'amount' => $outTotalCost,
-                        'sjId' => $outOrderInfo['sjId']??0,
-                        'shopId' => $outShopId,
-                        'event' => $outEvent,
-                    ];
-                    ShopCapitalClass::addCapital($capitalData);
-                }
+            $outOrderInfo = StockOutOrderClass::getOrderDetail($outOrderSn, $outShopId);
+            $payWay = dict::getDict('payWay', 'unknown');
+            if (empty($outOrderInfo)) {
+                util::fail('没有找到出库单');
+            }
+            $outOrderInfoItem = $outOrderInfo['itemInfo'] ?? '';
+            if (empty($outOrderInfoItem)) {
+                util::fail('没有出库单信息');
+            }
+            $outTotalCost = 0;
+            $outProductData = ProductClass::getProductMapData($outOrderInfoItem);
+            foreach ($outOrderInfoItem as $v) {
+                $pId = $v['productId'];
+                $num = $v['itemNum'];
+                $cost = $outProductData[$pId]['cost'] ?? 0; //成本
+                $outTotalCost = bcadd($outTotalCost, bcmul($num, $cost, 2), 2);
+            }
+            $outEvent = '出库';
+            $outCapitalType = dict::getDict('capitalType', 'ghsCheckOut', 'id');
 
+            $shop = ShopClass::getLockById($outShopId);
+            if (empty($shop)) {
+                util::fail('没有找到出库门店');
             }
+            $outCurrentTotalIncome = bcadd($shop->totalIncome, $outTotalCost, 2);
+            $currentTotalStockOut = bcadd($shop->totalStockOut, $outTotalCost, 2);
+            $shop->totalIncome = $outCurrentTotalIncome;
+            $shop->totalStockOut = $currentTotalStockOut;
+            $shop->save();
+            $capitalData = [
+                'capitalType' => $outCapitalType,
+                'io' => 1,
+                'totalIncome' => $outCurrentTotalIncome,
+                'payWay' => $payWay,
+                'amount' => $outTotalCost,
+                'sjId' => $outOrderInfo['sjId'] ?? 0,
+                'shopId' => $outShopId,
+                'event' => $outEvent,
+            ];
+            ShopCapitalClass::addCapital($capitalData);
+            //出库每日和每月统计
+            StatStockOutClass::replace($shop, $outTotalCost);
 
             //入库门店
 
             $inEvent = '入库';
             $inCapitalType = dict::getDict('capitalType', 'ghsCheckIn', 'id');
-
             $inShop = ShopClass::getLockById($shopId);
-            if($inShop){
-                $inCurrentTotalIncome = bcadd($inShop->totalIncome, $inTotalCost, 2);
-            }else{
-                $inCurrentTotalIncome = $inTotalCost;
+            if (empty($inShop)) {
+                util::fail('没有找到入库门店');
             }
+            $inCurrentTotalIncome = bcadd($inShop->totalIncome, $inTotalCost, 2);
             $inShop->totalExpend = $inCurrentTotalIncome;
+            $currentTotalStockIn = bcadd($inShop->totalStockIn, $inTotalCost, 2);
+            $inShop->totalStockIn = $currentTotalStockIn;
             $inShop->save();
             $capitalData = [
                 'capitalType' => $inCapitalType,
@@ -223,15 +228,17 @@ class StockInOrderClass extends BaseClass
                 'totalIncome' => $inCurrentTotalIncome,
                 'payWay' => $payWay,
                 'amount' => $inTotalCost,
-                'sjId' => $orderData['sjId']??0,
+                'sjId' => $orderData['sjId'] ?? 0,
                 'shopId' => $shopId,
                 'event' => $inEvent,
             ];
             ShopCapitalClass::addCapital($capitalData);
+            //入库每天和每月统计
+            StatStockInClass::replace($inShop, $inTotalCost);
 
             $transaction->commit();
 
-        }catch (\Exception $exception){
+        } catch (\Exception $exception) {
             $transaction->rollBack();
             util::fail();
         }
@@ -239,23 +246,22 @@ class StockInOrderClass extends BaseClass
     }
 
 
-
     //2021.1.23 linqh 订单详情
-    public static function getOrderDetail($orderSn,$shopId)
+    public static function getOrderDetail($orderSn, $shopId)
     {
-        $orderData = self::orderExist(['orderSn'=>$orderSn,'inShopId'=>$shopId]);
+        $orderData = self::orderExist(['orderSn' => $orderSn, 'inShopId' => $shopId]);
         $orderInfo = StockInOrderItemClass::getOrderItemDetail($orderSn);
         $itemData = [];
-        if($orderInfo) {
+        if ($orderInfo) {
             foreach ($orderInfo as $v) {
-                $info = json_decode($v['itemInfo'],true);
+                $info = json_decode($v['itemInfo'], true);
                 $tmp = $info;
                 $tmp['itemCover'] = self::groupImg($info['itemCover']);
                 unset($v['itemInfo']);
-                if(!isset($tmp['rank'])){
-                    $tmp['rank']= 'B';
+                if (!isset($tmp['rank'])) {
+                    $tmp['rank'] = 'B';
                 }
-                $tmp = array_merge($tmp,$v);
+                $tmp = array_merge($tmp, $v);
                 $itemData[] = $tmp;
             }
         }
@@ -270,7 +276,7 @@ class StockInOrderClass extends BaseClass
     public static function orderExist($where)
     {
         $orderData = self::getByCondition($where);
-        if(!$orderData) {
+        if (!$orderData) {
             util::fail('订单不存在');
         }
         return $orderData;
@@ -289,7 +295,7 @@ class StockInOrderClass extends BaseClass
     // 获取状态码名称
     public static function getStatusName($status)
     {
-        return self::$statusMap[$status]??'';
+        return self::$statusMap[$status] ?? '';
     }
 
     //组装出库门店信息

+ 35 - 0
biz/stat/classes/StatStockInClass.php

@@ -0,0 +1,35 @@
+<?php
+
+namespace biz\stat\classes;
+
+use biz\base\classes\BaseClass;
+
+class StatStockInClass extends BaseClass
+{
+
+    public static $baseFile = '\biz\stat\models\StatStockIn';
+
+    //入库添加或更新 shish 20210526
+    public static function replace($shop, $amount)
+    {
+        $sjId = $shop->sjId;
+        $shopId = $shop->id;
+        $time = date('Ymd');
+        $stat = self::getByCondition(['sjId' => $sjId, 'shopId' => $shopId, 'time' => $time], true);
+        if (empty($stat)) {
+            $stat = self::add(['shopId' => $shopId, 'sjId' => $sjId, 'time' => $time], true);
+        }
+        $id = $stat->id;
+        $unique = self::getLockById($id);
+        if (empty($unique)) {
+            util::fail('没有记录');
+        }
+        $currentAmount = bcadd($unique->amount, $amount, 2);
+        $unique->amount = $currentAmount;
+        $unique->totalAmount = $shop->totalExpend;
+        $unique->save();
+        //当月
+        StatStockInMonthClass::replace($shop, $amount);
+    }
+
+}

+ 36 - 0
biz/stat/classes/StatStockInMonthClass.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace biz\stat\classes;
+
+use biz\base\classes\BaseClass;
+use common\components\util;
+
+class StatStockInMonthClass extends BaseClass
+{
+
+    public static $baseFile = '\biz\stat\models\StatStockInMonth';
+
+    //入库添加或更新 shish 20210526
+    public static function replace($shop, $amount)
+    {
+        $time = date('Ym');
+        $year = date('Y');
+        $month = date('m');
+        $sjId = $shop->sjId;
+        $shopId = $shop->id;
+        $stat = self::getByCondition(['sjId' => $sjId, 'shopId' => $shopId, 'time' => $time], true);
+        if (empty($stat)) {
+            $stat = self::add(['shopId' => $shopId, 'sjId' => $sjId, 'time' => $time, 'year' => $year, 'month' => $month], true);
+        }
+        $id = $stat->id;
+        $unique = self::getLockById($id);
+        if (empty($unique)) {
+            util::fail('没有记录');
+        }
+        $currentAmount = bcadd($unique->amount, $amount, 2);
+        $unique->amount = $currentAmount;
+        $unique->totalAmount = $shop->totalExpend;
+        $unique->save();
+    }
+
+}

+ 44 - 0
biz/stat/classes/StatStockOutClass.php

@@ -0,0 +1,44 @@
+<?php
+
+namespace biz\stat\classes;
+
+use biz\base\classes\BaseClass;
+
+class StatStockOutClass extends BaseClass
+{
+
+    public static $baseFile = '\biz\stat\models\StatStockOut';
+
+    //出库添加或更新 shish 20210526
+    public static function replace($shop, $amount)
+    {
+        $sjId = $shop->sjId;
+        $shopId = $shop->id;
+        $time = date('Ymd');
+        $stat = self::getByCondition(['sjId' => $sjId, 'shopId' => $shopId, 'time' => $time], true);
+        if (empty($stat)) {
+            $stat = self::add(['shopId' => $shopId, 'sjId' => $sjId, 'time' => $time], true);
+        }
+        $id = $stat->id;
+        $unique = self::getLockById($id);
+        if (empty($unique)) {
+            util::fail('没有记录');
+        }
+        $currentAmount = bcadd($unique->amount, $amount, 2);
+        $unique->amount = $currentAmount;
+        $unique->totalAmount = $shop->totalExpend;
+        $unique->save();
+        //当月
+        StatStockOutMonthClass::replace($shop, $amount);
+    }
+
+    //今天出库金额 shish 20210526
+    public static function getTodayAmount($shop)
+    {
+        $today = date("Ymd");
+        $shopId = $shop->id;
+        $out = self::getByCondition(['time' => $today, 'shopId' => $shopId]);
+        return $out->amount ?? 0;
+    }
+
+}

+ 35 - 0
biz/stat/classes/StatStockOutMonthClass.php

@@ -0,0 +1,35 @@
+<?php
+
+namespace biz\stat\classes;
+
+use biz\base\classes\BaseClass;
+
+class StatStockOutMonthClass extends BaseClass
+{
+
+    public static $baseFile = '\biz\stat\models\StatStockOutMonth';
+
+    //出库添加或更新 shish 20210526
+    public static function replace($shop, $amount)
+    {
+        $time = date('Ym');
+        $year = date('Y');
+        $month = date('m');
+        $sjId = $shop->sjId;
+        $shopId = $shop->id;
+        $stat = self::getByCondition(['sjId' => $sjId, 'shopId' => $shopId, 'time' => $time], true);
+        if (empty($stat)) {
+            $stat = self::add(['shopId' => $shopId, 'sjId' => $sjId, 'time' => $time, 'year' => $year, 'month' => $month], true);
+        }
+        $id = $stat->id;
+        $unique = self::getLockById($id);
+        if (empty($unique)) {
+            util::fail('没有记录');
+        }
+        $currentAmount = bcadd($unique->amount, $amount, 2);
+        $unique->amount = $currentAmount;
+        $unique->totalAmount = $shop->totalExpend;
+        $unique->save();
+    }
+
+}

+ 16 - 0
biz/stat/models/StatStockIn.php

@@ -0,0 +1,16 @@
+<?php
+/**
+ * User: admin
+ * Date Time: 2021/4/13 21:35
+ */
+
+namespace biz\stat\models;
+
+use biz\base\models\Base;
+class StatStockIn extends Base
+{
+    public static function tableName()
+    {
+        return 'xhStatStockIn';
+    }
+}

+ 16 - 0
biz/stat/models/StatStockInMonth.php

@@ -0,0 +1,16 @@
+<?php
+/**
+ * User: admin
+ * Date Time: 2021/4/13 21:35
+ */
+
+namespace biz\stat\models;
+
+use biz\base\models\Base;
+class StatStockInMonth extends Base
+{
+    public static function tableName()
+    {
+        return 'xhStatStockInMonth';
+    }
+}

+ 16 - 0
biz/stat/models/StatStockOut.php

@@ -0,0 +1,16 @@
+<?php
+/**
+ * User: admin
+ * Date Time: 2021/4/13 21:35
+ */
+
+namespace biz\stat\models;
+
+use biz\base\models\Base;
+class StatStockOut extends Base
+{
+    public static function tableName()
+    {
+        return 'xhStatStockOut';
+    }
+}

+ 13 - 0
biz/stat/models/StatStockOutMonth.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace biz\stat\models;
+
+use biz\base\models\Base;
+
+class StatStockOutMonth extends Base
+{
+    public static function tableName()
+    {
+        return 'xhStatStockOutMonth';
+    }
+}

+ 12 - 0
biz/stat/services/StatStockInMonthService.php

@@ -0,0 +1,12 @@
+<?php
+
+namespace biz\stat\services;
+
+use biz\base\services\BaseService;
+
+class StatStockInMonthService extends BaseService
+{
+
+    public static $baseFile = '\biz\stat\classes\StatStockInMonthClass';
+
+}

+ 12 - 0
biz/stat/services/StatStockInService.php

@@ -0,0 +1,12 @@
+<?php
+
+namespace biz\stat\services;
+
+use biz\base\services\BaseService;
+
+class StatStockInService extends BaseService
+{
+
+    public static $baseFile = '\biz\stat\classes\StatStockInClass';
+
+}

+ 11 - 0
biz/stat/services/StatStockOutMonthService.php

@@ -0,0 +1,11 @@
+<?php
+namespace biz\stat\services;
+
+use biz\base\services\BaseService;
+
+class StatStockOutMonthService extends BaseService
+{
+
+    public static $baseFile = '\biz\stat\classes\StatStockOutMonthClass';
+
+}

+ 11 - 0
biz/stat/services/StatStockOutService.php

@@ -0,0 +1,11 @@
+<?php
+namespace biz\stat\services;
+
+use biz\base\services\BaseService;
+
+class StatStockOutService extends BaseService
+{
+
+    public static $baseFile = '\biz\stat\classes\StatStockOutClass';
+
+}