Explorar el Código

出库和入库

shish hace 4 años
padre
commit
cd9b6b8be1
Se han modificado 2 ficheros con 118 adiciones y 128 borrados
  1. 12 2
      app-ghs/controllers/StockInController.php
  2. 106 126
      biz-ghs/order/classes/StockInOrderClass.php

+ 12 - 2
app-ghs/controllers/StockInController.php

@@ -38,8 +38,18 @@ class StockInController extends BaseController
     {
         $get = Yii::$app->request->get();
         $orderSn = $get['orderSn'];
-        StockInOrderClass::confirmOrder($orderSn, $this->shopId, $this->adminId);
-        util::complete("出库成功");
+        $connection = Yii::$app->db;
+        $transaction = $connection->beginTransaction();
+        try {
+            StockInOrderClass::confirmOrder($orderSn, $this->shopId, $this->adminId);
+            util::complete("入库成功");
+            $transaction->commit();
+        } catch (\Exception $exception) {
+            Yii::info("确认入库报错:" . $exception->getMessage());
+            $transaction->rollBack();
+            util::fail();
+        }
+
     }
 
     //取消入库  lqh 2021.1.24

+ 106 - 126
biz-ghs/order/classes/StockInOrderClass.php

@@ -138,141 +138,121 @@ class StockInOrderClass extends BaseClass
     //增加门店收支记录 : 出库的门店加金额,入库的门店减金额(用成本价计算)
     public static function confirmOrder($orderSn, $shopId, $adminId)
     {
-        $data = [
-            'status' => self::STATUS_COMPLETE,
-            'adminId' => $adminId,
-        ];
+        $data = ['status' => self::STATUS_COMPLETE, 'adminId' => $adminId];
         $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);
-            //加库存
-            $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']);
-                $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);
-            }
-            //流水记录
-            $orderData['shopId'] = $shopId;
-            $orderData['itemInfo'] = $itemInfo;
-            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 (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('没有找到出库门店');
-            }
-            $mainId = $shop->mainId ?? 0;
-            $main = MainClass::getLockById($mainId);
-            if (empty($main)) {
-                util::fail('没有main信息');
-            }
-            $outCurrentTotalIncome = bcadd($main->totalIncome, $outTotalCost, 2);
-            $currentTotalStockOut = bcadd($main->totalStockOut, $outTotalCost, 2);
-            $main->totalIncome = $outCurrentTotalIncome;
-            $main->totalStockOut = $currentTotalStockOut;
-            $main->save();
-            $capitalData = [
-                'capitalType' => $outCapitalType,
-                'io' => 1,
-                'totalIncome' => $outCurrentTotalIncome,
-                'payWay' => $payWay,
-                'amount' => $outTotalCost,
-                'sjId' => $outOrderInfo['sjId'] ?? 0,
-                'shopId' => $outShopId,
-                'event' => $outEvent,
-                'mainId' => $mainId,
-            ];
-            ShopCapitalClass::addCapital($capitalData);
-            //每天和每月收入统计,出库也算收入
-            StatIncomeClass::updateOrInsert($main, $shop, $outTotalCost);
-
-            //出库每日和每月统计
-            StatStockOutClass::replace($main, $shop, $outTotalCost);
-
-            //入库门店
-            $inEvent = '入库';
-            $inCapitalType = dict::getDict('capitalType', 'ghsCheckIn', 'id');
-            $inShop = ShopClass::getLockById($shopId);
-            if (empty($inShop)) {
-                util::fail('没有找到入库门店');
-            }
-            $inMainId = $inShop->mainId ?? 0;
-            $inMain = MainClass::getLockById($inMainId);
-            if (empty($inMain)) {
-                util::fail('没有main信息');
-            }
-            $inCurrentTotalExpend = bcadd($inMain->totalExpend, $inTotalCost, 2);
-            $inMain->totalExpend = $inCurrentTotalExpend;
-            $currentTotalStockIn = bcadd($inMain->totalStockIn, $inTotalCost, 2);
-            $inMain->totalStockIn = $currentTotalStockIn;
-            $inMain->save();
-            $capitalData = [
-                'capitalType' => $inCapitalType,
-                'io' => 0,
-                'totalExpend' => $inCurrentTotalExpend,
-                'payWay' => $payWay,
-                'amount' => $inTotalCost,
-                'sjId' => $orderData['sjId'] ?? 0,
-                'shopId' => $shopId,
-                'event' => $inEvent,
-                'mainId' => $mainId,
-            ];
-            ShopCapitalClass::addCapital($capitalData);
-            //当天和当月支出统计,调拨入库算支出
-            StatOutClass::updateOrInsert($main, $shop, $inTotalCost);
-            //入库每天和每月统计
-            StatStockInClass::replace($inMain, $inShop, $inTotalCost);
-
-            $transaction->commit();
+        self::updateById($orderId, $data);
+        //加库存
+        $itemInfo = $orderData['itemInfo'] ?? [];
+        if (empty($itemInfo)) {
+            util::fail("订单异常");
+        }
+        $inProductMapData = ProductClass::getProductMapData($itemInfo);
+        $inTotalCost = 0;
+        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);
+        }
+        //流水记录
+        $orderData['shopId'] = $shopId;
+        $orderData['itemInfo'] = $itemInfo;
+        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 (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');
 
-        } catch (\Exception $exception) {
-            Yii::info("确认入库报错:" . $exception->getMessage());
-            $transaction->rollBack();
-            util::fail();
+        $shop = ShopClass::getLockById($outShopId);
+        if (empty($shop)) {
+            util::fail('没有找到出库门店');
         }
+        $mainId = $shop->mainId ?? 0;
+        $main = MainClass::getLockById($mainId);
+        if (empty($main)) {
+            util::fail('没有main信息');
+        }
+        $outCurrentTotalIncome = bcadd($main->totalIncome, $outTotalCost, 2);
+        $currentTotalStockOut = bcadd($main->totalStockOut, $outTotalCost, 2);
+        $main->totalIncome = $outCurrentTotalIncome;
+        $main->totalStockOut = $currentTotalStockOut;
+        $main->save();
+        $capitalData = [
+            'capitalType' => $outCapitalType,
+            'io' => 1,
+            'totalIncome' => $outCurrentTotalIncome,
+            'payWay' => $payWay,
+            'amount' => $outTotalCost,
+            'sjId' => $outOrderInfo['sjId'] ?? 0,
+            'shopId' => $outShopId,
+            'event' => $outEvent,
+            'mainId' => $mainId,
+        ];
+        ShopCapitalClass::addCapital($capitalData);
+        //每天和每月收入统计,出库也算收入
+        StatIncomeClass::updateOrInsert($main, $shop, $outTotalCost);
+        //出库每日和每月统计
+        StatStockOutClass::replace($main, $shop, $outTotalCost);
+        //入库门店
+        $inEvent = '入库';
+        $inCapitalType = dict::getDict('capitalType', 'ghsCheckIn', 'id');
+        $inShop = ShopClass::getLockById($shopId);
+        if (empty($inShop)) {
+            util::fail('没有找到入库门店');
+        }
+        $inMainId = $inShop->mainId ?? 0;
+        $inMain = MainClass::getLockById($inMainId);
+        if (empty($inMain)) {
+            util::fail('没有main信息');
+        }
+        $inCurrentTotalExpend = bcadd($inMain->totalExpend, $inTotalCost, 2);
+        $inMain->totalExpend = $inCurrentTotalExpend;
+        $currentTotalStockIn = bcadd($inMain->totalStockIn, $inTotalCost, 2);
+        $inMain->totalStockIn = $currentTotalStockIn;
+        $inMain->save();
+        $capitalData = [
+            'capitalType' => $inCapitalType,
+            'io' => 0,
+            'totalExpend' => $inCurrentTotalExpend,
+            'payWay' => $payWay,
+            'amount' => $inTotalCost,
+            'sjId' => $orderData['sjId'] ?? 0,
+            'shopId' => $shopId,
+            'event' => $inEvent,
+            'mainId' => $mainId,
+        ];
+        ShopCapitalClass::addCapital($capitalData);
+        //当天和当月支出统计,调拨入库算支出
+        StatOutClass::updateOrInsert($main, $shop, $inTotalCost);
+        //入库每天和每月统计
+        StatStockInClass::replace($inMain, $inShop, $inTotalCost);
     }
 
-
     //2021.1.23 lqh 订单详情
     public static function getOrderDetail($orderSn, $shopId)
     {