|
@@ -53,6 +53,7 @@ class SplitSale extends Command
|
|
|
])->cursor();
|
|
|
$userCommon = User::getIns();
|
|
|
$commonOrder=[];//处理采购销售同一数据
|
|
|
+ $updatePrice=true;
|
|
|
foreach ($data as $sale) {
|
|
|
//处理采购销售同一数据
|
|
|
$tempOrder=[
|
|
@@ -77,6 +78,7 @@ class SplitSale extends Command
|
|
|
];
|
|
|
if( strtotime($sale['addtime']) >= strtotime('2023-07-01 00:00:00'))$this->Tcode ='F';
|
|
|
else $this->Tcode ='';
|
|
|
+ if( strtotime($sale['addtime']) >= strtotime('2024-12-12 23:59:59')) $updatePrice=false;
|
|
|
//补充商品信息
|
|
|
if ($sale['order_type'] == 3 ||$sale['order_type'] == 4) {
|
|
|
//咨询相关
|
|
@@ -122,7 +124,11 @@ class SplitSale extends Command
|
|
|
->findOrEmpty();
|
|
|
|
|
|
//采购总金额和销售总金额
|
|
|
- $cgd_total = $sale_total = $sale['total_price'];
|
|
|
+ if($updatePrice) $cgd_total = $sale_total = $sale['total_price'];
|
|
|
+ else {
|
|
|
+ $cgd_price = $sale_price = $sale['sale_price'];
|
|
|
+ $cgd_total = $sale_total = $sale['total_price'];
|
|
|
+ }
|
|
|
//客户
|
|
|
$customer = ['No' => $sale['customer_code'], 'name' => $sale['customerName']];
|
|
|
|
|
@@ -135,17 +141,25 @@ 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);
|
|
|
+ if($updatePrice)$cgd_total = bcsub($cgd_total, bcmul($sale['total_price'] ?? "0", round($pay_rate['rate'] / 100, 4), 5), 5);
|
|
|
+ else {
|
|
|
+ $cgd_price = bcsub($cgd_price, bcmul($sale_price ?? "0", round($pay_rate['rate'] / 100, 4), 8), 8);
|
|
|
+ $cgd_total =bcmul($cgd_price, $sale['good_num'], 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;
|
|
|
+ $sale['origin_price'] = $sale['good_num'] > 0 ? bcdiv($cgd_total, $sale['good_num'], 8) : "0";
|
|
|
$this->_handle_sale_caixiao($sale, $orderCode, $cgdNo, $sale_total, $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);
|
|
|
//下一个渠道公司/原业务公司的 客户信息
|
|
|
$customer= ['No' => $pay_rate['companyNo'], 'name' => $pay_rate['companyName']];
|
|
|
- $sale_total =$cgd_total; //下一个渠道公司/原业务公司的 销售价未此次的采购单价
|
|
|
+ if($updatePrice) $sale_total =$cgd_total;
|
|
|
+ else {
|
|
|
+ $sale_price =$cgd_price;
|
|
|
+ $sale_total = bcmul($cgd_price, $sale['good_num'], 8);
|
|
|
+ } //下一个渠道公司/原业务公司的 销售价未此次的采购单价
|
|
|
//判断是否是最后一个渠道遍历。最后一次需要额外生成一个销售单给原业务公司;
|
|
|
if($keys == count($pay_rates)-1){
|
|
|
$orderCode = makeNo($this->Tcode.'QR');
|
|
@@ -212,10 +226,10 @@ 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_total ="0.00", array $customer = [], array $supplier = [],array &$tempOrder=[])
|
|
|
{
|
|
|
- $sale_price = $sale['good_num'] > 0 ? bcdiv($sale_total, $sale['good_num'], 5) : 0;
|
|
|
-
|
|
|
+ $sale_price = $sale['good_num'] > 0 ? bcdiv($sale_total, $sale['good_num'], 8) : 0;
|
|
|
+
|
|
|
$origin_total =round($sale['origin_price']*$sale['good_num'],8);
|
|
|
$tmp_sale = [
|
|
|
'manager'=>$sale['manager'],
|
|
@@ -242,7 +256,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,7 +328,7 @@ 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_total ="0.00",array &$tempOrder=[])
|
|
|
{
|
|
|
|
|
|
$good_price = $sale['good_num'] > 0 ? bcdiv($cgd_total, $sale['good_num'], 8) : 0;
|
|
@@ -346,7 +360,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($good_price, $sale['th_num'] ?? "0", 8), 2),
|
|
|
'updatetime' => $sale['updatetime'],
|
|
|
];
|
|
|
|