chenqp 7 meses atrás
pai
commit
6726e3e799
1 arquivos alterados com 36 adições e 5 exclusões
  1. 36 5
      app/Service/CheckService.php

+ 36 - 5
app/Service/CheckService.php

@@ -365,14 +365,45 @@ class CheckService extends Service
             ->where('sales_order_id',$order['id'])
             ->select('product_id','number','retail_price')
             ->get()->toArray();
+
+        //退货的差异
+        $returnExchange_map = [];
+        $returnExchange = ReturnExchangeOrder::where('del_time',0)
+            ->where('type',ReturnExchangeOrder::Order_type)
+            ->where('data_id',$order['id'])
+            ->select('id')
+            ->get()->toArray();
+        $return_product = ReturnExchangeOrderProductInfo::where('del_time',0)
+            ->where('return_exchange_id',array_column($returnExchange,'id'))
+            ->select('product_id','number')
+            ->get()->toArray();
+        foreach ($return_product as $value){
+            if(isset($returnExchange_map[$value['product_id']])){
+                $returnExchange_map[$value['product_id']] += $value['number'];
+            }else{
+                $returnExchange_map[$value['product_id']] = $value['number'];
+            }
+        }
+
         $product_map = $rate = [];
         $total = 0;
-        foreach ($product as $value){
-            $total += $value['number'] * $value['retail_price'];
+        foreach ($product as $key => $value){
+            $return_number = 0;
+            if(isset($returnExchange_map[$value['product_id']])) $return_number = $returnExchange_map[$value['product_id']];
+            $number = $value['number'];
+            if($return_number >= $value['number']) {
+                unset($product[$key]);
+                continue;
+            }else{
+                $number = bcsub($number,$return_number,2);
+                $product[$key]['number'] = $number;
+            }
+
+            $total += $number * $value['retail_price'];
             if(isset($product_map[$value['product_id']])){
-                $product_map[$value['product_id']] += $value['retail_price'] * $value['number'];
+                $product_map[$value['product_id']] += $value['retail_price'] * $number;
             }else{
-                $product_map[$value['product_id']] = $value['retail_price'] * $value['number'];
+                $product_map[$value['product_id']] = $value['retail_price'] * $number;
             }
         }
         foreach ($product_map as $key => $value){
@@ -399,7 +430,7 @@ class CheckService extends Service
             $insert = [];$product_total = 0;
             foreach ($product as $value){
                 $rate_tmp = $rate[$value['product_id']] ?? 0;
-                $price = bcdiv(bcmul($rate_tmp, $fee['other_fee_1'],2),$value['number'],2);
+                $price = bcdiv(bcmul($rate_tmp, $fee['other_fee_1'],2), $value['number'],2);
                 $product_total += $price * $value['number'];
                 $insert[] = [
                     'purchase_order_special_id' => $purchase_order_id,