Quellcode durchsuchen

采购订单:新增,列表,详情

林琦海 vor 5 Jahren
Ursprung
Commit
2a3413e19d

+ 25 - 0
app/ghs/controllers/PurchaseOrderController.php

@@ -2,6 +2,7 @@
 namespace ghs\controllers;
 
 use bizGhs\order\classes\PurchaseOrderClass;
+use bizGhs\order\classes\PurchaseOrderItemClass;
 use common\components\util;
 use Yii;
 class PurchaseOrderController extends BaseController
@@ -15,6 +16,7 @@ class PurchaseOrderController extends BaseController
         $post['shopId'] = $this->shopId;
         $post['adminId'] = $this->adminId;
 
+
         $ghsItemInfo = $post['itemInfo']??'';
         if(empty($ghsItemInfo)){
             util::fail('请选择花材');
@@ -45,4 +47,27 @@ class PurchaseOrderController extends BaseController
         }
     }
 
+    //订单列表
+    public function actionList()
+    {
+        $get = Yii::$app->request->get();
+        $orderStatus = $get['orderStatus']??'';
+        if($orderStatus){
+            $where['orderStatus'] = $orderStatus;
+        }
+        $where['ghsId'] = $this->ghsId;
+        $where['shopId'] = $this->shopId;
+        $data = PurchaseOrderClass::getOrderList($where);
+        $data['list'] = PurchaseOrderClass::groupGhsInfo($data['list']);
+        util::success($data);
+    }
+
+    //订单详情
+    public function actionDetail()
+    {
+        $orderSn = Yii::$app->request->get('orderSn','');
+        $orderData = PurchaseOrderClass::getOrderDetail($orderSn,$this->shopId);
+        util::success($orderData);
+    }
+
 }

+ 34 - 10
biz-ghs/item/classes/ItemInfoClass.php

@@ -34,7 +34,7 @@ class ItemInfoClass extends BaseClass
         $itemIds = array_column($list,'itemId');
         //获取相应的图片,名称,py
         $where = ['id'=>$itemIds];
-        $data = xhItemService::getAllByCondition($where,null,'id,name,pyName,cover,unitNum');
+        $data = xhItemService::getAllByCondition($where,null,'*');
         if(!empty($data)){
             $data = array_column($data, NULL, 'id');
             foreach ($list as $k=>$v){
@@ -45,11 +45,21 @@ class ItemInfoClass extends BaseClass
                 $list[$k]['stockBundle'] = $stockInfo['stockBundle'];
                 $list[$k]['stockPiece'] = $stockInfo['stockPiece'];
                 $list[$k]['itemName'] = $data[$v['itemId']]['name']??'';
+                $list[$k]['unitCount'] = $unitNum?2:1;
+                $list[$k]['bigUnit'] = xhItemService::getUnitName($data[$v['itemId']]['bigUnit']);
+                $list[$k]['smallUnit'] =xhItemService::getUnitName($data[$v['itemId']]['smallUnit']);
             }
         }
         return $list;
     }
 
+    //根据花材ID,库存=》  计算出多少扎,多少支
+    public static function formatStockByItemId($itemId,$stock)
+    {
+        $unitNum = xhItemService::getItemUnitNum($itemId);
+        return self::formatStock($stock,$unitNum);
+    }
+
     //花材的库存转换: 库存是小数,根据各个花材的unitNum, 计算出多少扎,多少支
     public static function formatStock($stock,$unitNum)
     {
@@ -65,6 +75,12 @@ class ItemInfoClass extends BaseClass
         ];
     }
 
+    public static function mergeItemNumByItemId($itemNumBundle,$itemNumPiece,$itemId)
+    {
+        $unitNum = xhItemService::getItemUnitNum($itemId);
+        return self::mergeItemNum($itemNumBundle,$itemNumPiece,$unitNum);
+    }
+
     //花材扎、支 转换  统一数
     public static function mergeItemNum($itemNumBundle,$itemNumPiece,$unitNum)
     {
@@ -116,12 +132,13 @@ class ItemInfoClass extends BaseClass
     //根据数量加库存
     public static function addStockByItemNum($ghsItemInfoId,$itemNum)
     {
-        $itemInfoData =self::getById($ghsItemInfoId);
+        $itemInfoData =self::getById($ghsItemInfoId,true);
         if(!$itemInfoData){
             util::fail("花材不存在");
         }
-        $newStock = bcadd($itemInfoData['stock'],$itemNum,2);
-        self::updateById($ghsItemInfoId,['stock'=>$newStock]);
+        $newStock = bcadd($itemInfoData->stock,$itemNum,2);
+        $itemInfoData->stock = $newStock;
+        $itemInfoData->save();
         return true;
     }
 
@@ -134,7 +151,7 @@ class ItemInfoClass extends BaseClass
      */
     public static function decreaseStock($ghsItemInfoId,$itemNumBundle,$itemNumPiece)
     {
-        $itemInfoData =self::getById($ghsItemInfoId);
+        $itemInfoData =self::getById($ghsItemInfoId,true);
         if(!$itemInfoData){
             util::fail("花材不存在");
         }
@@ -143,7 +160,8 @@ class ItemInfoClass extends BaseClass
         //转成小数,更新库存
         $itemNum = self::mergeItemNum($itemNumBundle,$itemNumPiece,$unitNum);
         $newStock = bcsub($itemInfoData['stock'],$itemNum,2);
-        self::updateById($ghsItemInfoId,['stock'=>$newStock]);
+        $itemInfoData->stock = $newStock;
+        $itemInfoData->save();
         return true;
     }
 
@@ -192,15 +210,21 @@ class ItemInfoClass extends BaseClass
 
     //根据门店ID, 平台花材ID, 获取门店的花材ID
     public static function getGhsItemInfoId($shopId,$itemId)
+    {
+        $data = self::getGhsItemInfoDataByItemId($shopId,$itemId);
+        if($data){
+            return $data['id'];
+        }
+        return 0;
+    }
+
+    public static function getGhsItemInfoDataByItemId($shopId,$itemId)
     {
         $where = [
             'shopId'=>$shopId,
             'itemId'=>$itemId,
         ];
         $data = self::getByCondition($where);
-        if($data){
-            return $data['id'];
-        }
-        return 0;
+        return $data;
     }
 }

+ 76 - 2
biz-ghs/order/classes/PurchaseOrderClass.php

@@ -3,6 +3,7 @@
 namespace bizGhs\order\classes;
 
 use bizGhs\base\classes\BaseClass;
+use bizGhs\stock\services\StockRecordService;
 use bizGhs\item\classes\ItemInfoClass;
 use common\components\util;
 use common\services\xhItemService;
@@ -81,20 +82,34 @@ class PurchaseOrderClass extends BaseClass
                     'itemCover'=> $itemData[$itemId]['cover']??'',
                     'itemNumBundle'=> $v['itemNumBundle'],
                     'itemNumPiece'=> $v['itemNumPiece'],
+                    'itemUnit'=> $unitNum?2:1,
+                    'itemBigUnit'=> xhItemService::getUnitName($itemData[$v['itemId']]['bigUnit']),
+                    'itemSmallUnit'=> xhItemService::getUnitName($itemData[$v['itemId']]['smallUnit']),
                 ];
                 $tmp['itemInfo'] = json_encode($itemInfo);
                 $batchData[] = $tmp;
             }
 
             PurchaseOrderItemClass::batchAddOrderItem($batchData);
-            //现在暂时点击确定,定时完成 加库存
+            //现在暂时点击确定,完成 加库存
             foreach ($batchData as $v){
                 $itemId = $v['itemId'];
-                $ghsItemInfoId = ItemInfoClass::getGhsItemInfoId($shopId,$itemId);
+                $ghsItemInfoData = ItemInfoClass::getGhsItemInfoDataByItemId($shopId,$itemId);
+                $ghsItemInfoId = $ghsItemInfoData['id']??0;
                 if(!$ghsItemInfoId){
                     $transaction->rollBack();
                     util::fail('有商品不存在');
                 }
+                //流水记录
+                $record = [];
+                $record['ghsId'] = $ghsId;
+                $record['shopId'] = $shopId;
+                $record['orderSn'] = $orderSn;
+                $record['itemId'] = $itemId;
+                $record['itemNum'] = $v['itemNum'];
+                $record['oldStock'] = $ghsItemInfoData['stock'];
+                $record['newStock'] =  bcadd($ghsItemInfoData['stock'],$v['itemNum'],2);
+                StockRecordService::addPurchaseOrderRecord($record);
                 //加库存
                 ItemInfoClass::addStockByItemNum($ghsItemInfoId,$v['itemNum']);
             }
@@ -107,4 +122,63 @@ class PurchaseOrderClass extends BaseClass
         return false;
     }
 
+    public static function getOrderList($where)
+    {
+        $data = self::getList('*', $where, 'addTime DESC');
+        $list = isset($data['list']) && !empty($data['list']) ? $data['list'] : [];
+        if (empty($list)) {
+            return $data;
+        }
+        $data['list'] = $list;
+        return $data;
+    }
+
+
+    //供应商信息
+    public static function groupGhsInfo($list){
+        foreach ($list as $k=>$v){
+            $gysId = $v['gysId'];
+            $gysInfo = self::getGysInfo($gysId);
+            $list[$k]['gysName'] = $gysInfo['gysName'];
+            $list[$k]['gysCover'] = $gysInfo['gysCover'];
+        }
+        return $list;
+    }
+
+    public static function getOrderDetail($orderSn,$shopId)
+    {
+        $where = [
+            'orderSn'=>$orderSn,
+            'shopId'=>$shopId,
+        ];
+        $orderData = self::getByCondition($where);
+        if(!$orderData) {
+            util::fail('订单不存在');
+        }
+        $orderInfo = PurchaseOrderItemClass::getOrderItemDetail($orderSn);
+        $itemData = [];
+        if($orderInfo) {
+            foreach ($orderInfo as $v) {
+                $info = json_decode($v['itemInfo'],true);
+                $tmp = $info;
+                $tmp['itemId'] = $v['itemId'];
+                $tmp['itemPrice'] = $v['itemPrice'];
+                $itemData[] = $tmp;
+            }
+        }
+        $gysInfo = self::getGysInfo($orderData['gysId']);
+        $orderData['gysName'] = $gysInfo['gysName'];
+        $orderData['gysCover'] = $gysInfo['gysCover'];
+        $orderData['itemInfo'] = $itemData;
+        return $orderData;
+    }
+
+    public static function getGysInfo($gysId)
+    {
+        return [
+            'gysName'=>'供应商1',
+            'gysCover'=>'http://www.baidu.com',
+        ];
+    }
+
 }

+ 5 - 0
biz-ghs/order/classes/PurchaseOrderItemClass.php

@@ -15,4 +15,9 @@ class PurchaseOrderItemClass extends BaseClass
     {
         self::batchAdd($data);
     }
+
+    public static function getOrderItemDetail($orderSn)
+    {
+        return self::getAllByCondition(['orderSn'=>$orderSn],null,'*');
+    }
 }

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

@@ -0,0 +1,22 @@
+<?php
+namespace bizGhs\stock\classes;
+
+
+use bizGhs\base\classes\BaseClass;
+
+class StockRecordClass extends BaseClass
+{
+
+    public static $baseFile = '\bizGhs\stock\models\StockRecord';
+    const STOCK_RECORD_TYPE_PURCHASE = 1; //采购
+    const STOCK_RECORD_TYPE_OUT_STOCK = 2; //出库
+    const STOCK_RECORD_TYPE_IN_STOCK = 3; //入库
+    const STOCK_RECORD_TYPE_CHECK_STOCK = 4; //盘点
+    const STOCK_RECORD_TYPE_SELL_STOCK = 5; //销售(卖出)
+
+
+    public static function addRecord($data)
+    {
+        return self::add($data);
+    }
+}

+ 12 - 0
biz-ghs/stock/models/StockRecord.php

@@ -0,0 +1,12 @@
+<?php
+namespace bizGhs\stock\models;
+use bizGhs\base\models\Base;
+
+//库存流水记录表
+class StockRecord extends Base
+{
+    public static function tableName()
+    {
+        return 'xhGhsStockRecord';
+    }
+}

+ 48 - 0
biz-ghs/stock/services/StockRecordService.php

@@ -0,0 +1,48 @@
+<?php
+namespace bizGhs\stock\services;
+
+
+use bizGhs\base\services\BaseService;
+use bizGhs\stock\classes\StockRecordClass;
+
+class StockRecordService extends BaseService
+{
+    public static $baseFile = '\bizGhs\stock\classes\StockRecordClass';
+    //采购订单流水记录
+
+    /**
+     * @param $data  ghsId,shopId,orderSn,itemId,itemNum,oldStock(原库存),newStock(订单完成后新库存)
+     * @return mixed
+     */
+    public static function addPurchaseOrderRecord($data)
+    {
+        $data['recordType'] = StockRecordClass::STOCK_RECORD_TYPE_PURCHASE;
+        return StockRecordClass::addRecord($data);
+    }
+
+    //盘点订单流水记录
+    public static function addCheckOrderRecord($data)
+    {
+        $data['recordType'] = StockRecordClass::STOCK_RECORD_TYPE_CHECK_STOCK;
+        return StockRecordClass::addRecord($data);
+    }
+    //出库订单流水记录
+    public static function addOutStockOrderRecord($data)
+    {
+        $data['recordType'] = StockRecordClass::STOCK_RECORD_TYPE_OUT_STOCK;
+        return StockRecordClass::addRecord($data);
+    }
+    //入库订单流水记录
+    public static function addInStockOrderRecord($data)
+    {
+        $data['recordType'] = StockRecordClass::STOCK_RECORD_TYPE_IN_STOCK;
+        return StockRecordClass::addRecord($data);
+    }
+
+    //销售订单流水记录
+    public static function addSellStockOrderRecord($data)
+    {
+        $data['recordType'] = StockRecordClass::STOCK_RECORD_TYPE_SELL_STOCK;
+        return StockRecordClass::addRecord($data);
+    }
+}

+ 10 - 0
common/services/xhItemService.php

@@ -32,4 +32,14 @@ class xhItemService
     {
         return xhItem::getByIds($ids);
     }
+
+    //先写死,之后查表
+    public static function getUnitName($unit)
+    {
+        $map = [
+            1=>'扎',
+            2=>'支',
+        ];
+        return $map[$unit]??'';
+    }
 }