chenqp 7 tháng trước cách đây
mục cha
commit
47b3bc45dc
1 tập tin đã thay đổi với 47 bổ sung14 xóa
  1. 47 14
      app/Service/StatisticsService.php

+ 47 - 14
app/Service/StatisticsService.php

@@ -369,7 +369,7 @@ class StatisticsService extends Service
             ->get()->toArray();
 
         //退换货
-        $returnExchange_map = $this->returnExchange($data,$sale_order_id);
+        list($returnExchange_map,$returnExchange_map_2) = $this->returnExchange($data,$sale_order_id);
         //产品
         $product_list = Product::whereIn('id',array_unique(array_merge_recursive(array_column($purchase_product,'product_id'),array_keys($returnExchange_map,'product_id'))))
             ->select('id','product_category','title','code')
@@ -394,9 +394,26 @@ class StatisticsService extends Service
             //产品信息
             $product_tmp = $product_list_map[$value['product_id']] ?? [];
 
+            $time_money = 0;
+            if(isset($returnExchange_map_2[$crt_time])) {
+                $time_money = $returnExchange_map_2[$crt_time] ?? 0;
+                unset($returnExchange_map_2[$crt_time]);
+            }
             //钱
             if(isset($purchase_map1[$crt_time])){
-                $purchase_map1[$crt_time]['total'] = bcadd($purchase_map1[$crt_time]['total'],$money,2);
+                $time_total = bcadd($purchase_map1[$crt_time]['total'],$money,2);
+                $time_total = bcsub($time_total,$time_money,2);
+                $purchase_map1[$crt_time]['total'] = $time_total;
+            }
+
+            $return_number = $return_total = 0;
+            $return_category_number = $return_category_total = 0;
+            if(isset($returnExchange_map[$value['product_id']])){
+                $tmp = $returnExchange_map[$value['product_id']];
+                $return_number = bcsub($value['number'], $tmp['number'],2);
+                $return_total = bcsub($money, $tmp['total'],2);
+                $return_category_number = $return_number;
+                $return_category_total = $return_total;
             }
 
             //-------根据产品
@@ -407,10 +424,13 @@ class StatisticsService extends Service
                 $purchase_map[$value['product_id']]['number'] = $tmp_number;
                 $purchase_map[$value['product_id']]['total'] = $tmp_money;
             }else{
+                //减去退换货
+                $number = bcsub($value['number'], $return_number,2);
+                $total = bcsub($money, $return_total,2);
                 $purchase_map[$value['product_id']] = [
                     'title' => $product_tmp['title'] . "(" . $product_tmp['code'] .")",
-                    'number' => $value['number'],
-                    'total' => $money
+                    'number' => $number,
+                    'total' => $total
                 ];
             }
             //-------根据产品
@@ -419,17 +439,23 @@ class StatisticsService extends Service
             //数量
             $category_tmp = json_decode($product_tmp['product_category']);
             $category_tmp = min($category_tmp);
-
+            //退换货
+            $number_2 = bcsub($value['number'], $return_category_number,2);
+            $total_2 = bcsub($money, $return_category_total,2);
             if(isset($purchase_category_map[$category_tmp])){
                 $tmp_number = bcadd($purchase_map[$value['product_id']]['number'], $value['number'],2);
+                $tmp_number = bcsub($tmp_number,$number_2,2);
                 $tmp_money = bcadd($purchase_map[$value['product_id']]['total'], $money,2);
+                $tmp_money = bcsub($tmp_money,$total_2,2);
                 $purchase_category_map[$category_tmp]['number'] = $tmp_number;
                 $purchase_category_map[$category_tmp]['total'] = $tmp_money;
             }else{
+                $num = bcsub($value['number'],$number_2,2);
+                $tol = bcsub($money,$total_2,2);
                 $purchase_category_map[$category_tmp] = [
-                    'number' => $value['number'],
+                    'number' => $num,
                     'title' => $category_return[$category_tmp] ?? "",
-                    'total' => $money
+                    'total' => $tol
                 ];
             }
         }
@@ -464,17 +490,16 @@ class StatisticsService extends Service
         return $return;
     }
 
-    public function returnExchange($data,$sale_order_id){return [];
-        $returnExchange_map = [];
+    public function returnExchange($data,$sale_order_id){
+        $returnExchange_map = $returnExchange_map_2 = [];
         $returnExchange = ReturnExchangeOrder::where('del_time',0)
-            ->where('top_depart_id',$data['top_depart_id'])
             ->where('type',ReturnExchangeOrder::Order_type)
             ->whereIn('data_id',$sale_order_id)
-            ->select('id','difference_amount')
+            ->select('id')
             ->get()->toArray();
         $returnExchange_product = ReturnExchangeOrderProductInfo::where("del_time",0)
             ->whereIn('return_exchange_id',array_column($returnExchange,'id'))
-            ->select('return_exchange_id','product_id','number')
+            ->select('return_exchange_id','product_id','number','return_exchange_price as price','crt_time')
             ->get()->toArray();
         foreach ($returnExchange_product as $value){
             $money = bcmul($value['price'],$value['number'],2);
@@ -492,9 +517,17 @@ class StatisticsService extends Service
                     'total' => $money
                 ];
             }
+
+            $crt_time = date("Y-m-d",$value['crt_time']);
+            if(isset($returnExchange_map_2[$crt_time])){
+                $tmp_money_2 = bcadd($returnExchange_map_2[$crt_time], $money,2);
+                $returnExchange_map_2[$crt_time] = $tmp_money_2;
+            }else{
+                $returnExchange_map_2[$crt_time] = $money;
+            }
         }
 
-        return $returnExchange_map;
+        return [$returnExchange_map,$returnExchange_map_2];
     }
 
     public function statisticsJc($data,$user){
@@ -641,7 +674,7 @@ class StatisticsService extends Service
             ->whereIn('product_id',$product)
             ->select('product_id','number','price')
             ->get()->toArray();
-
+        $in = $out = [];
         foreach ($list as $value){
             if($value['number'] >= 0){
                 $tmp_total = bcmul($value['number'], $value['price'], 2);