wuggemail@foxmail.com 4 месяцев назад
Родитель
Сommit
014761cd67
1 измененных файлов с 17 добавлено и 16 удалено
  1. 17 16
      app/command/SplitSale.php

+ 17 - 16
app/command/SplitSale.php

@@ -122,7 +122,8 @@ class SplitSale extends Command
                         ->findOrEmpty();
 					
                     //采购总金额和销售总金额
-                    $cgd_total = $sale_total = $sale['total_price'];
+                   # $cgd_total = $sale_total = $sale['total_price'];
+                    $cgd_price = $sale_price = $sale['sale_price'];
 		            //客户
                     $customer = ['No' => $sale['customer_code'], 'name' => $sale['customerName']];
                    
@@ -135,17 +136,18 @@ class SplitSale extends Command
                         $orderCode = substr($orderCode, 0, -2) . str_pad($this->i, 2, '0', STR_PAD_LEFT);
                         $this->i++;
                         //计算渠道业务公司采购单单价。
-                        $cgd_total = bcsub($cgd_total, bcmul($sale['total_price'] ?? 0, round($pay_rate['rate'] / 100, 4), 5), 5);
+                       # $cgd_total = bcsub($cgd_total, bcmul($sale['total_price'] ?? "0", round($pay_rate['rate'] / 100, 4), 5), 5);
+                        $cgd_price = bcsub($cgd_price, bcmul($sale_price ?? "0", round($pay_rate['rate'] / 100, 4), 8), 8);
                         //此次销售单业务公司信息
 						$supplier = ['No' => $pay_rate['companyNo'], 'name' => $pay_rate['companyName'],"pay_name"=>$pay_rate['pay_name']];
-						$sale['origin_price'] = $sale['good_num'] > 0 ? bcdiv($cgd_total, $sale['good_num'], 5) : 0;
-                        $this->_handle_sale_caixiao($sale, $orderCode, $cgdNo, $sale_total, $customer, $supplier);
+						$sale['origin_price'] = $cgd_price;
+                        $this->_handle_sale_caixiao($sale, $orderCode, $cgdNo, $sale_price, $customer, $supplier);
                         $tempOrder['customerName'] = $pay_rate['companyName'];
                         $tempOrder['customerNo'] = $pay_rate['companyNo'];
-						$this->_handle_cgd_caixiao($cgd, $sale, $pay_rate, $cgdNo, $orderCode, $cgd_total,$tempOrder);
+						$this->_handle_cgd_caixiao($cgd, $sale, $pay_rate, $cgdNo, $orderCode, $cgd_price,$tempOrder);
 						//下一个渠道公司/原业务公司的 客户信息
 						$customer= ['No' => $pay_rate['companyNo'], 'name' => $pay_rate['companyName']];
-	                    $sale_total =$cgd_total; //下一个渠道公司/原业务公司的 销售价未此次的采购单价
+                        $sale_price =$cgd_price; //下一个渠道公司/原业务公司的 销售价未此次的采购单价
 	                    //判断是否是最后一个渠道遍历。最后一次需要额外生成一个销售单给原业务公司;
 						if($keys == count($pay_rates)-1){
 							$orderCode = makeNo($this->Tcode.'QR');
@@ -161,7 +163,7 @@ class SplitSale extends Command
 							}else{
 								$sale['origin_price'] = $cgd['good_price'];
 							}
-							$this->_handle_sale_caixiao($sale, $orderCode, $cgd['cgdNo'] ?? '', $sale_total,$customer, $supplier,$tempOrder);
+							$this->_handle_sale_caixiao($sale, $orderCode, $cgd['cgdNo'] ?? '', $sale_price,$customer, $supplier,$tempOrder);
 						}
                         //把自己覆盖到上一个记录的供应商记录中
                       
@@ -212,10 +214,9 @@ class SplitSale extends Command
     }
 
     //构建销售单
-    private function _handle_sale_caixiao(array $sale = [], string $orderCode = '', string $cgdNo = '', float $sale_total = 0.00, array $customer = [], array $supplier = [],array &$tempOrder=[])
+    private function _handle_sale_caixiao(array $sale = [], string $orderCode = '', string $cgdNo = '', string $sale_price = "0.00", array $customer = [], array $supplier = [],array &$tempOrder=[])
     {
-        $sale_price = $sale['good_num'] > 0 ? bcdiv($sale_total, $sale['good_num'], 5) : 0;
-        
+        $sale_total = bcmul($sale_price, $sale['good_num'], 8);
         $origin_total =round($sale['origin_price']*$sale['good_num'],8);
         $tmp_sale = [
         	'manager'=>$sale['manager'],
@@ -225,7 +226,7 @@ class SplitSale extends Command
 	        'total_origin_price' =>$origin_total,
 	        'total_origin_price_plan' => $sale['plan_total'],
 	        'pay_source' => $supplier['pay_name'],
-            'sale_price' => round($sale_price, 8),
+            'sale_price' => $sale_price,
             'total_price' => $sale_total,
             'post_fee' => $sale['post_fee'] ?? 0,
             'is_diff' => $sale['is_diff'] ?? 0,
@@ -242,7 +243,7 @@ class SplitSale extends Command
              'open_type'=>$sale['open_type'],
             'updatetime' => $sale['updatetime'],
             'delivery_day' => $sale['delivery_day'] ?? 0,
-            'th_fee' => round(bcmul($sale_price, $sale['th_num'] ?? 0, 3), 2),
+            'th_fee' => round(bcmul($sale_price, $sale['th_num'] ?? "0", 3), 2),
             'cost_fee' => $sale['cost_price'] ?? 0,
             'diff_fee' => $sale['diff_fee'] ?? 0,
              'tax' => $sale['tax'] ?? '',
@@ -314,13 +315,13 @@ class SplitSale extends Command
 
     //构建采购单
     private function _handle_cgd_caixiao(array $cgd = [], array $sale = [], array $pay_rate = [], string $cgdNo = '',
-     string $orderCode = '', float $cgd_total = 0.00,array &$tempOrder=[])
+     string $orderCode = '', string $cgd_price ="0.00",array &$tempOrder=[])
     {
 
-        $good_price = $sale['good_num'] > 0 ? bcdiv($cgd_total, $sale['good_num'], 8) : 0;
+        $cgd_total = bcmul($cgd_price, $sale['good_num'], 8);
 
         $tmp_cgd = [
-            'good_price' => round($good_price, 8),
+            'good_price' => $cgd_price,
             'total_fee' => $cgd_total,
             'origin_total' => $cgd_total,
             'pakage_fee' => $cgd['pakge_fee'] ?? 0,
@@ -346,7 +347,7 @@ class SplitSale extends Command
             'send_status' => $sale['send_status'] ?? '',
             "open_type"=>$sale['open_type'],
             'th_num' => $sale['th_num'] ?? 0,
-            'th_fee' => round(bcmul($good_price, $sale['th_num'] ?? 0, 3), 2),
+            'th_fee' => round(bcmul($cgd_price, $sale['th_num'] ?? 0, 3), 2),
             'updatetime' => $sale['updatetime'],
         ];