支付金额取整

This commit is contained in:
Dev
2026-10-28 15:37:49 +08:00
parent 9622b908d6
commit f552fb957f
4 changed files with 134 additions and 24 deletions
@@ -351,17 +351,18 @@ class DemandService
$winContract = ContractService::updateCustomerContractData($demandId, $formData);
//如果新的合同金额与旧的合同金额不符,则通过修改尾款订单的金额的方式来弥补差价
$firstContract = ContractService::getFirstContract($demandId);
if ($firstContract && $firstContract->total_amount != $winContract->total_amount && $winContract->status2 != ContractService::STATUS_FINISHED) {
$diffAmount = $winContract->total_amount - $firstContract->total_amount;
//更新尾款订单的金额
if ($firstContract && bccomp((string)$firstContract->total_amount, (string)$winContract->total_amount, 2) !== 0 && $winContract->status2 != ContractService::STATUS_FINISHED) {
// 尾款 = 新合同总额 - 首付款,不按固定 50% 重算
$firstOrder = OrderService::getDemandOrder($demand->parent_order_no, OrderService::ORDER_TYPE_FIRST_PAYMENT);
$finalOrder = OrderService::getDemandOrder($demand->parent_order_no, OrderService::ORDER_TYPE_FINAL_PAYMENT);
$finalOrder->total_amount += $diffAmount;
$finalOrder->goods_amount += $diffAmount;
$finalOrder->payment_amount += $diffAmount;
$saveRes = $finalOrder->save();
if (!$saveRes) {
exception('弥补订单差价金额失败');
if (!$firstOrder || !$finalOrder) {
exception('获取分期订单失败');
}
$finalAmount = bcsub((string)$winContract->total_amount, (string)$firstOrder->payment_amount, 2);
if (bccomp($finalAmount, '0', 2) < 0) {
exception('合同金额不能小于已确定的首付款');
}
OrderService::applyOrderAmount($finalOrder, $finalAmount);
}
//获取签约订单用于支付
$order = OrderService::getDemandOrder($demand->parent_order_no, $contractType);