调整利润计算

This commit is contained in:
mzl
2025-10-14 11:03:26 +08:00
parent 81f5e3c8ed
commit 0b8155936a
+39 -51
View File
@@ -485,7 +485,7 @@ class StockOrdersService
$this->processVehiclePrices($item, $veh); $this->processVehiclePrices($item, $veh);
// 计算利润 // 计算利润
$profit = $this->calculateProfit($veh, $order); $profit = $this->calculateProfit($veh, $item->mileage, $order);
$item->addMoney('profit', $order->settlement_currency, $profit, $order->contract_exchange_rate, '利润'); $item->addMoney('profit', $order->settlement_currency, $profit, $order->contract_exchange_rate, '利润');
// 累计到岸价 // 累计到岸价
@@ -539,67 +539,55 @@ class StockOrdersService
]; ];
foreach ($priceFields as $field => $description) { foreach ($priceFields as $field => $description) {
if (!empty($veh[$field]['amount'])) { $item->addMoney(
$item->addMoney( $field,
$field, $veh[$field]['currency'],
$veh[$field]['currency'], (float)$veh[$field]['amount'],
$veh[$field]['amount'], $veh[$field]['rate'],
$veh[$field]['rate'], $description
$description );
);
}
} }
// 根据里程处理新车或二手车价格 // 根据里程处理新车或二手车价格
if (!empty($veh['mileage']) && $veh['mileage'] > 0) { if (!empty($veh['mileage']) && $veh['mileage'] > 0) {
// 二手车 // 二手车
if (!empty($veh['listing_price']['amount'])) { $item->addMoney(
$item->addMoney( 'listing_price',
'listing_price', $veh['listing_price']['currency'],
$veh['listing_price']['currency'], (float)$veh['listing_price']['amount'],
$veh['listing_price']['amount'], $veh['listing_price']['rate'],
$veh['listing_price']['rate'], '二手挂牌价'
'二手挂牌价' );
); $item->addMoney(
} 'reduction_price',
$veh['reduction_price']['currency'],
if (!empty($veh['reduction_price']['amount'])) { (float)$veh['reduction_price']['amount'],
$item->addMoney( $veh['reduction_price']['rate'],
'reduction_price', '二手减价'
$veh['reduction_price']['currency'], );
$veh['reduction_price']['amount'],
$veh['reduction_price']['rate'],
'二手减价'
);
}
} else { } else {
// 新车 // 新车
if (!empty($veh['official_price']['amount'])) { $item->addMoney(
$item->addMoney( 'official_price',
'official_price', $veh['official_price']['currency'],
$veh['official_price']['currency'], (float)$veh['official_price']['amount'],
$veh['official_price']['amount'], $veh['official_price']['rate'],
$veh['official_price']['rate'], '官方指导价'
'官方指导价' );
); $item->addMoney(
} 'discount_price',
$veh['discount_price']['currency'],
if (!empty($veh['discount_price']['amount'])) { (float)$veh['discount_price']['amount'],
$item->addMoney( $veh['discount_price']['rate'],
'discount_price', '优惠价'
$veh['discount_price']['currency'], );
$veh['discount_price']['amount'],
$veh['discount_price']['rate'],
'优惠价'
);
}
} }
} }
/** /**
* 计算利润 * 计算利润
*/ */
private function calculateProfit(array $veh, $order): float private function calculateProfit(array $veh, int $mileage, $order): float
{ {
$contractExchangeRate = $order->contract_exchange_rate ?: 1; $contractExchangeRate = $order->contract_exchange_rate ?: 1;
@@ -612,7 +600,7 @@ class StockOrdersService
} }
// 处理主要价格字段,根据是否需要汇率转换来计算 // 处理主要价格字段,根据是否需要汇率转换来计算
if (!empty($veh['mileage']) && $veh['mileage'] > 0) { if ($mileage > 0) {
// 二手车 // 二手车
$listingPriceRate = $veh['listing_price']['rate'] ?: 1; $listingPriceRate = $veh['listing_price']['rate'] ?: 1;
if ($listingPriceRate != $contractExchangeRate) { if ($listingPriceRate != $contractExchangeRate) {
@@ -825,7 +813,7 @@ class StockOrdersService
$modificationText = $this->getModificationText($v->options); $modificationText = $this->getModificationText($v->options);
// 计算单项利润 // 计算单项利润
$itemProfit = $this->calculateProfit($moneyValues, $item); $itemProfit = $this->calculateProfit($moneyValues, $v->mileage, $item);
// 构建车辆信息 // 构建车辆信息
$vehList[$v->unique_id] = [ $vehList[$v->unique_id] = [