瀏覽代碼

平均成本优化

shish 9 月之前
父節點
當前提交
afc4706602

+ 2 - 2
app-ghs/controllers/CgRefundController.php

@@ -129,7 +129,7 @@ class CgRefundController extends BaseController
     {
 
         $shopAdmin = $this->shopAdmin;
-        if (isset($shopAdmin['super']) == false || $shopAdmin['super'] != 1) {
+        if (!isset($shopAdmin['super']) || $shopAdmin['super'] != 1) {
             util::fail('超管才能操作退款');
         }
         $connection = Yii::$app->db;
@@ -137,7 +137,7 @@ class CgRefundController extends BaseController
         try {
 
             $post = Yii::$app->request->post();
-            $id = isset($post['id']) ? $post['id'] : 0;
+            $id = $post['id'] ?? 0;
             $order = PurchaseOrderClass::getLockById($id);
 
             if ($order->mainId != $this->mainId) {

+ 5 - 0
app-ghs/controllers/StockOutController.php

@@ -274,6 +274,11 @@ class StockOutController extends BaseController
             ShopClass::valid($inShop, $this->sjId);
             $post['inMainId'] = $inShop['mainId'] ?? 0;
 
+            $staff = $this->shopAdmin;
+            $post['staffName'] = $staff->name ?? '';
+            $post['staffId'] = $staff->id ?? 0;
+            $post['adminId'] = $this->adminId;
+
             ProductClass::valid($ghsItemInfo, $this->mainId);
             //判断花材里的信息
             foreach ($ghsItemInfo as $v) {

+ 2 - 0
biz-ghs/cg/classes/CgRefundItemClass.php

@@ -51,6 +51,8 @@ class CgRefundItemClass extends BaseClass
         $recordData['avCost'] = $stockInfo['avCost'] ?? 0;
         $recordData['totalCost'] = $stockInfo['totalCost'] ?? 0;
         $recordData['totalStock'] = $stockInfo['totalStock'] ?? 0;
+        $recordData['changeCost'] = $stockInfo['changeCost'] ?? 0;
+        $recordData['unitCost'] = $stockInfo['unitCost'] ?? 0;
         StockRecordClass::ghsCgApplyRefundAddRecord($recordData);
 
         self::add($data);

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

@@ -572,6 +572,8 @@ class PurchaseOrderClass extends BaseClass
                 $record['totalCost'] = $stockInfo['totalCost'] ?? 0;
                 $record['totalStock'] = $stockInfo['totalStock'] ?? 0;
                 $record['avCost'] = $stockInfo['avCost'] ?? 0;
+                $record['changeCost'] = $stockInfo['changeCost'] ?? 0;
+                $record['unitCost'] = $stockInfo['unitCost'] ?? 0;
                 StockRecordClass::addPurchaseOrderRecord($record);
 
                 //减少路上库存

+ 18 - 0
biz-ghs/order/classes/StockInOrderClass.php

@@ -84,6 +84,18 @@ class StockInOrderClass extends BaseClass
         $ghsItemInfo = $outOrderData['itemInfo'];
         $shopId = $outOrderData['inShopId'] ?? 0;
         $mainId = $outOrderData['inMainId'] ?? 0;
+
+        $adminId = $outOrderData['adminId'] ?? 0;
+        $staffId = 0;
+        $staffName = $outOrderData['staffName'] ?? '';
+        if (!empty($adminId)) {
+            $staff = ShopAdminClass::getByCondition(['mainId' => $mainId, 'adminId' => $adminId], true);
+            $staffId = $staff->id ?? 0;
+            $staffName = $staff->name ?? '';
+        }
+        $data['staffId'] = $staffId;
+        $data['staffName'] = $staffName;
+
         //入库: 需要将itemId 转换成对应的productId,若没有对应的productId,则需要新增
         ProductClass::complementProduct($data['sjId'], $mainId, $shopId, $ghsItemInfo);
         $itemIds = array_column($ghsItemInfo, "itemId");
@@ -244,12 +256,18 @@ class StockInOrderClass extends BaseClass
             $itemInfo[$k]['oldStock'] = $stockInfo['oldStock'];
             $itemInfo[$k]['itemStock'] = $stockInfo['oldStock'];
             $itemInfo[$k]['newStock'] = $stockInfo['newStock'];
+            $itemInfo[$k]['avCost'] = $stockInfo['avCost'] ?? 0;
+            $itemInfo[$k]['totalCost'] = $stockInfo['totalCost'] ?? 0;
+            $itemInfo[$k]['totalStock'] = $stockInfo['totalStock'] ?? 0;
+            $itemInfo[$k]['changeCost'] = $stockInfo['changeCost'] ?? 0;
+            $itemInfo[$k]['unitCost'] = $stockInfo['unitCost'] ?? 0;
         }
 
         //流水记录
         $orderData['shopId'] = $shopId;
         $orderData['itemInfo'] = $itemInfo;
         $orderData['ptStyle'] = dict::getDict('ptStyle', 'ghs');
+        $orderData['relateName'] = $orderData['staffName'] ?? '';
         StockRecordClass::addRecordByOrder($orderData, StockRecordClass::STOCK_RECORD_TYPE_IN_STOCK);
         $outOrderSn = $orderData['outOrderSn'];
         $outShopId = $orderData['outShopId'];

+ 29 - 1
biz-ghs/order/classes/StockOutOrderClass.php

@@ -50,11 +50,13 @@ class StockOutOrderClass extends BaseClass
 
         $outShopId = $data['outShopId'] ?? 0;
         $outMainId = $data['outMainId'] ?? 0;
+        $staffName = $data['staffName'] ?? '';
 
         $ids = array_column($ghsItemInfo, 'productId');
         $productList = ProductClass::getAllByCondition(['id' => ['in', $ids]], null, 'id,avCost', 'id');
 
         $order = self::add($data, true);
+        $map = [];
         //先减库存,若取消出库则加回来
         foreach ($ghsItemInfo as $k => $v) {
             $productId = $v['productId'] ?? 0;
@@ -63,6 +65,12 @@ class StockOutOrderClass extends BaseClass
             $stockInfo = ProductClass::decreaseStock($v['productId'], $v['bigNum'], $v['smallNum'], true, false, ['cost' => $avCost]);
             $ghsItemInfo[$k]['oldStock'] = $stockInfo['oldStock'];
             $ghsItemInfo[$k]['newStock'] = $stockInfo['newStock'];
+            $newAvCost = $stockInfo['avCost'] ?? 0;
+            $totalCost = $stockInfo['totalCost'] ?? 0;
+            $totalStock = $stockInfo['totalStock'] ?? 0;
+            $changeCost = $stockInfo['changeCost'] ?? 0;
+            $unitCost = $stockInfo['unitCost'] ?? 0;
+            $map[$productId] = ['avCost' => $newAvCost, 'totalCost' => $totalCost, 'totalStock' => $totalStock, 'changeCost' => $changeCost,'unitCost'=>$unitCost];
         }
 
         //写入详情表
@@ -84,10 +92,30 @@ class StockOutOrderClass extends BaseClass
         $orderData = self::getOrderDetail($orderSn, $data['outShopId']);
         $orderData['shopId'] = $outShopId;
         $orderData['mainId'] = $outMainId;
+
+        $orderData['staffName'] = $staffName;
+        $orderData['relateName'] = $staffName;
+
         $itemInfo = $orderData['itemInfo'] ?? [];
         if (empty($itemInfo)) {
             util::fail("订单异常");
         }
+        //把平均成本相关参数加进入,存到库存变动明细里去 ssh
+        foreach ($itemInfo as $cKey => $cVal) {
+            $productId = $cVal['productId'] ?? 0;
+            $mapItem = $map[$productId] ?? [];
+            $avCost = $mapItem['avCost'] ?? 0;
+            $totalCost = $mapItem['totalCost'] ?? 0;
+            $totalStock = $mapItem['totalStock'] ?? 0;
+            $changeCost = $mapItem['changeCost'] ?? 0;
+            $unitCost = $mapItem['unitCost']??0;
+            $itemInfo[$cKey]['avCost'] = $avCost;
+            $itemInfo[$cKey]['totalCost'] = $totalCost;
+            $itemInfo[$cKey]['totalStock'] = $totalStock;
+            $itemInfo[$cKey]['changeCost'] = $changeCost;
+            $itemInfo[$cKey]['unitCost'] = $unitCost;
+        }
+        $orderData['itemInfo'] = $itemInfo;
         $orderData['ptStyle'] = dict::getDict('ptStyle', 'ghs');
         StockRecordClass::addRecordByOrder($orderData, StockRecordClass::STOCK_RECORD_TYPE_OUT_STOCK);
         if ($action === self::ACTION_CONFIRM) {
@@ -138,7 +166,7 @@ class StockOutOrderClass extends BaseClass
             util::fail("订单异常");
         }
         $orderData['shopId'] = $shopId;
-        //写入一条数据到入库店的入库订单表,生成入库订单号
+        //写入一条数据到入库店的入库订单表,生成入库订单号
         $inOrderData = StockInOrderClass::addOrder($orderData);
         $inOrderSn = $inOrderData['orderSn'];
         //更新入库订单号

+ 12 - 6
biz-ghs/product/classes/ProductClass.php

@@ -910,10 +910,13 @@ class ProductClass extends BaseClass
         $lastCost = 0;
         $lastStock = 0;
         $avCost = 0;
+        $changeCost = 0;
+        $unitCost = 0;
         if (!empty($params['cost']) && $params['cost'] > 0) {
-            $currentCost = bcmul($params['cost'], $itemNum, 2);
+            $unitCost = $params['cost'];
+            $changeCost = bcmul($params['cost'], $itemNum, 2);
             $totalCost = $productData->totalCost ?? 0;
-            $lastCost = bcadd($currentCost, $totalCost, 2);
+            $lastCost = bcadd($changeCost, $totalCost, 2);
             $totalStock = $productData->totalStock ?? 0;
             $lastStock = bcadd($itemNum, $totalStock, 2);
             $avCost = bcdiv($lastCost, $lastStock, 2);
@@ -936,7 +939,7 @@ class ProductClass extends BaseClass
         }
         util::unlock($key);
         return ['oldStock' => $productData['stock'], 'newStock' => $newStock, 'itemNum' => $itemNum,
-            'avCost' => $avCost, 'totalCost' => $lastCost, 'totalStock' => $lastStock];
+            'avCost' => $avCost, 'totalCost' => $lastCost, 'totalStock' => $lastStock, 'changeCost' => $changeCost, 'unitCost' => $unitCost];
     }
 
     //减库存,允许负库存,负数数量(盘点时)
@@ -966,9 +969,12 @@ class ProductClass extends BaseClass
         $avCost = 0;
         $lastStock = 0;
         $lastCost = 0;
+        $changeCost = 0;
+        $unitCost = 0;
         if (!empty($params['cost']) && $params['cost'] > 0) {
-            $currentCost = bcmul($params['cost'], $itemNum, 2);
-            $lastCost = bcsub($productData->totalCost, $currentCost, 2);
+            $unitCost = $params['cost'];
+            $changeCost = bcmul($params['cost'], $itemNum, 2);
+            $lastCost = bcsub($productData->totalCost, $changeCost, 2);
             $lastStock = bcsub($productData->totalStock, $itemNum, 2);
             $avCost = bcdiv($lastCost, $lastStock, 2);
             $productData->avCost = $avCost;
@@ -1001,7 +1007,7 @@ class ProductClass extends BaseClass
 
         util::unlock($key);
         return ['oldStock' => $productData['stock'], 'newStock' => $newStock, 'itemNum' => $itemNum,
-            'avCost' => $avCost, 'totalCost' => $lastCost, 'totalStock' => $lastStock];
+            'avCost' => $avCost, 'totalCost' => $lastCost, 'totalStock' => $lastStock, 'changeCost' => $changeCost, 'unitCost' => $unitCost];
     }
 
 

+ 8 - 2
biz-ghs/stock/classes/StockRecordClass.php

@@ -12,6 +12,7 @@ use common\services\xhItemService;
 class StockRecordClass extends BaseClass
 {
     use OrderTrait;
+
     public static $baseFile = '\bizGhs\stock\models\StockRecord';
 
     const STOCK_RECORD_TYPE_PURCHASE = 1; //采购
@@ -90,8 +91,8 @@ class StockRecordClass extends BaseClass
     {
         $list = self::$typeMap;
         $arr = [];
-        foreach($list as $id => $val){
-            $arr[] = ['value'=>$id,'label'=>$val];
+        foreach ($list as $id => $val) {
+            $arr[] = ['value' => $id, 'label' => $val];
         }
         return $arr;
     }
@@ -146,6 +147,11 @@ class StockRecordClass extends BaseClass
             $record['newStock'] = $v['newStock'];// 最新库存
             $record['relateName'] = $orderData['relateName'] ?? '';
             $record['ptStyle'] = $orderData['ptStyle'] ?? dict::getDict('ptStyle', 'ghs');
+            $record['avCost'] = $v['avCost'] ?? 0;
+            $record['totalCost'] = $v['totalCost'] ?? 0;
+            $record['totalStock'] = $v['totalStock'] ?? 0;
+            $record['changeCost'] = $v['changeCost'] ?? 0;
+            $record['unitCost'] = $v['unitCost'] ?? 0;
             self::addRecord($record);
         }
     }