Kaynağa Gözat

盈亏计算

shish 5 yıl önce
ebeveyn
işleme
039346155d

+ 1 - 3
app-ghs/controllers/CheckOrderController.php

@@ -35,7 +35,6 @@ class CheckOrderController extends BaseController
     //盘点确认 linqh 2021.1.22
     public function actionCreateOrder()
     {
-
         $shopAdmin = $this->shopAdmin;
         if (isset($shopAdmin->super) == false || $shopAdmin->super != 1) {
             util::fail('超管才能盘点');
@@ -45,8 +44,7 @@ class CheckOrderController extends BaseController
         $post['sjId'] = $this->sjId;
         $post['shopId'] = $this->shopId;
         $post['adminId'] = $this->adminId;
-        //盘点是否有未处理的草稿,有的话先处理之前的草稿??
-        //todo
+
         $this->saveOrder($post, false, false);
 
     }

+ 20 - 5
biz-ghs/order/classes/CheckOrderClass.php

@@ -42,7 +42,9 @@ class CheckOrderClass extends BaseClass
         }
 
         $data['orderSn'] = $orderSn;
-        $ghsItemInfo = $data['itemInfo']; // [{bigNum:0,smallNum:0,productId:1}]
+        //数据格式 [{bigNum:0,smallNum:0,productId:1}]
+        $ghsItemInfo = $data['itemInfo'];
+        //之前出现过同个花材在不现分类下出现,这里进行组合
         $ghsItemInfo = self::mergeItemInfo($ghsItemInfo);
 
         $sumNum = self::sumNumByItemInfo($ghsItemInfo);
@@ -56,10 +58,13 @@ class CheckOrderClass extends BaseClass
                 self::deleteByCondition(['orderSn' => $orderSn]);
                 CheckOrderItemClass::deleteByCondition(['orderSn' => $orderSn]);
             }
-            $order = self::add($data);
+            $order = self::add($data, true);
             //写入详情表
             $batchData = self::groupOrderItem($ghsItemInfo, $orderSn);
             CheckOrderItemClass::batchAddOrderItem($batchData);
+
+            $addPrice = 0;
+            $subPrice = 0;
             if ($draft === false) {
                 //盘点完成完成,直接将库存中的数量改为当时盘点的数量
                 foreach ($batchData as $v) {
@@ -92,8 +97,20 @@ class CheckOrderClass extends BaseClass
                     $record['oldStock'] = $productData['stock'];
                     $record['newStock'] = $v['itemNum']; //新库存直接等于盘点的数量
                     StockRecordService::addCheckOrderRecord($record);
+
+                    $amount = $v['amount'] ?? 0;
+                    if ($amount > 0) {
+                        $addPrice = bcadd($addPrice, $amount, 2);
+                    } else {
+                        $subPrice = bcadd($subPrice, $amount, 2);
+                    }
                 }
             }
+            $order->addPrice = $addPrice;
+            $order->subPrice = $subPrice;
+            $order->price = bcadd($addPrice, $subPrice, 2);
+            $order->save();
+
             $transaction->commit();
             return $order;
 
@@ -169,9 +186,6 @@ class CheckOrderClass extends BaseClass
     public static function groupOrderItem($ghsItemInfo, $orderSn)
     {
         $productData = self::getProductMapData($ghsItemInfo);
-        // $itemIds =  array_column($productData,'itemId');
-        //$itemData = xhItemService::getByIds($itemIds);
-        //$itemData = array_column($itemData, NULL, 'id');
         //写入详情表
         $batchData = [];
         foreach ($ghsItemInfo as $v) {
@@ -188,6 +202,7 @@ class CheckOrderClass extends BaseClass
             $tmp['itemPrice'] = $productData[$productId]['price'] ?? 0; //当时售卖的价格
             $tmp['itemCost'] = $productData[$productId]['cost'] ?? 0; //当时成本的价格
             $tmp['profitLossNum'] = bcsub($tmp['itemNum'], $tmp['itemStock'], 2); //盈亏数 = 盘点数-当时库存数
+            $tmp['amount'] = bcmul($tmp['profitLossNum'], $tmp['itemCost'], 2);
             $stockFormat = ProductClass::formatStock($tmp['itemStock'], $unitNum); // 库存总单位数量转大小单位的数量
             $itemInfo = [
                 'itemName' => $productData[$productId]['name'] ?? '',//花材名称