shish 9 ماه پیش
والد
کامیت
033fcdcde1

+ 10 - 6
app-ghs/controllers/CheckOrderController.php

@@ -158,7 +158,7 @@ class CheckOrderController extends BaseController
     public function actionSendStock()
     {
         $shopAdmin = $this->shopAdmin;
-        if (isset($shopAdmin->super) == false || $shopAdmin->super != 1) {
+        if (!isset($shopAdmin->super) || $shopAdmin->super != 1) {
             util::fail('超管才能盘点');
         }
         $post = Yii::$app->request->post();
@@ -207,7 +207,11 @@ class CheckOrderController extends BaseController
         $post['shopId'] = $this->shopId;
         $post['adminId'] = $this->adminId;
         $post['mainId'] = $this->mainId;
-        $order = $this->saveOrder($post, false, false);
+
+        $staff = $this->shopAdmin;
+        $post['staffName'] = $staff->name ?? '';
+
+        $order = $this->saveOrder($post, false, false, ['motherId' => $motherId]);
         util::success($order);
     }
 
@@ -306,10 +310,10 @@ class CheckOrderController extends BaseController
         util::success($order);
     }
 
-    protected function saveOrder($post, $draft = false, $update = false)
+    protected function saveOrder($post, $draft = false, $update = false, $params = [])
     {
         $shopAdmin = $this->shopAdmin;
-        if (isset($shopAdmin->super) == false || $shopAdmin->super != 1) {
+        if (!isset($shopAdmin->super) || $shopAdmin->super != 1) {
             util::fail('超管才能操作');
         }
 
@@ -332,9 +336,9 @@ class CheckOrderController extends BaseController
         }
         $post['itemInfo'] = $ghsItemInfo;
         if ($update === true) {
-            $order = CheckOrderClass::opOrder($post, $draft, $update);
+            $order = CheckOrderClass::opOrder($post, $draft, $update, true, $params);
         } else {
-            $order = CheckOrderClass::opOrder($post, $draft, $update);
+            $order = CheckOrderClass::opOrder($post, $draft, $update, true, $params);
         }
         return $order;
     }

+ 48 - 6
biz-ghs/order/classes/CheckOrderClass.php

@@ -267,7 +267,7 @@ class CheckOrderClass extends BaseClass
     }
 
     //2021.1.22 lqh 操作订单  添加/保存草稿/草稿编辑保存: 区别在添加是立即改库存和记录流水记录,而保存草稿是只保存订单信息
-    public static function opOrder($data, $draft = false, $update = false, $check = true)
+    public static function opOrder($data, $draft = false, $update = false, $check = true, $params = [])
     {
         $sjId = $data['sjId'];
         $shopId = $data['shopId'];
@@ -324,6 +324,16 @@ class CheckOrderClass extends BaseClass
             $batchData = self::groupOrderItem($ghsItemInfo, $orderSn);
             CheckOrderItemClass::batchAddOrderItem($batchData);
 
+            $avCost = 0;
+            $changeCost = 0;
+            $unitCost = 0;
+            $totalCost = 0;
+            $totalStock = 0;
+            if (isset($params['motherId']) && $params['motherId'] > 0) {
+                $motherInfo = ProductClass::getById($params['motherId'], true);
+                $unitCost = $motherInfo->avCost ?? 0;
+            }
+
             $addAmount = 0;
             $subAmount = 0;
             $ids = [];
@@ -338,32 +348,64 @@ class CheckOrderClass extends BaseClass
                     if (!$lock) {
                         util::fail("系统繁忙,请稍后再试");
                     }
-                    $productData = ProductClass::getById($productId);
+                    $productData = ProductClass::getById($productId, true);
+
+                    if (isset($params['motherId']) && $params['motherId'] > 0) {
+                        $changeNum = bcsub($productData->stock,$v['itemNum'],2);
+                        $changeNum = abs($changeNum);
+                        $changeCost = bcmul($unitCost, $changeNum, 2);
+                        $totalCost = $productData->totalCost ?? 0;
+                        $totalStock = $productData->totalStock ?? 0;
+                        if ($productId == $params['motherId']) {
+                            $totalCost = bcsub($totalCost, $changeCost, 2);
+                            $totalStock = bcsub($totalStock, $changeNum, 2);
+                            $avCost = $unitCost;
+                            $productData->avCost = $avCost;
+                            $productData->totalCost = $totalCost;
+                            $productData->totalStock = $totalStock;
+                            $productData->save();
+                        } else {
+                            $totalCost = bcadd($changeCost, $totalCost, 2);
+                            $totalStock = bcadd($changeNum, $totalStock, 2);
+                            $avCost = bcdiv($totalCost, $totalStock, 2);
+                            $productData->avCost = $avCost;
+                            $productData->totalCost = $totalCost;
+                            $productData->totalStock = $totalStock;
+                            $productData->save();
+                        }
+                    }
+
                     ProductClass::updateStockById($productId, $v['itemNum'], $adminId);
                     //上架
-                    if ($v['itemNum'] > 0 && $productData['status'] == 2) {
+                    if ($v['itemNum'] > 0 && $productData->status == 2) {
                         ProductClass::changeStatus($productId, 1);
                     }
                     //下架
-                    if ($v['itemNum'] <= 0 && $productData['status'] == 1) {
+                    if ($v['itemNum'] <= 0 && $productData->status == 1) {
                         ProductClass::changeStatus($productId, 2);
                     }
                     util::unlock($key);
+
                     //流水记录
                     $record = [];
                     $record['sjId'] = $sjId;
                     $record['shopId'] = $shopId;
-                    $record['mainId'] = $productData['mainId'];
+                    $record['mainId'] = $productData->mainId ?? 0;
                     $record['orderSn'] = $orderSn;
                     $record['ptStyle'] = 2;
                     $record['relateName'] = $data['staffName'] ?? '';
                     $record['itemId'] = $v['itemId'];
                     $record['productId'] = $productId;
                     $record['itemNum'] = abs($v['profitLossNum']);
-                    $record['oldStock'] = $productData['stock'];
+                    $record['oldStock'] = $productData->stock ?? 0;
                     $record['newStock'] = $v['itemNum'];
                     $record['targetId'] = $order->id ?? 0;
                     $record['remark'] = $remark;
+                    $record['avCost'] = $avCost;
+                    $record['changeCost'] = $changeCost;
+                    $record['unitCost'] = $unitCost;
+                    $record['totalStock'] = $totalStock;
+                    $record['totalCost'] = $totalCost;
                     StockRecordClass::addCheckOrderRecord($record);
 
                     $amount = $v['amount'] ?? 0;

+ 1 - 1
biz-ghs/order/classes/OrderClass.php

@@ -381,7 +381,7 @@ class OrderClass extends BaseClass
                     $className = isset($classList[$classId]) && isset($classList[$classId]['name']) ? $classList[$classId]['name'] : '';
                     $objPHPExcel->getActiveSheet()->setCellValue('T' . $i, $className);
                     $objPHPExcel->getActiveSheet()->setCellValue('U' . $i, $orderInfo['remark']);
-                    $objPHPExcel->getActiveSheet()->setCellValue('V' . $i, $orderInfo['cost']);
+                    $objPHPExcel->getActiveSheet()->setCellValue('V' . $i, $orderInfo['avCost']);
 
                     //居左
                     $objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

+ 1 - 1
biz-ghs/product/classes/ProductClass.php

@@ -1347,7 +1347,7 @@ class ProductClass extends BaseClass
             $currentGhsProduct = $ghsProductData[$ghsProductId] ?? [];
             $itemId = $currentGhsProduct['itemId'] ?? 0;
             $ratio = $currentGhsProduct['ratio'] ?? 0;
-            $cost = $currentGhsProduct['cost'] ?? 0;
+            $cost = $currentGhsProduct['avCost'] ?? 0;
             $classId = $currentGhsProduct['classId'] ?? 0;
 
             $bigNum = $v['bigNum'] ?? 0;