35 lines
1.2 KiB
PHP
35 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Services;
|
|
|
|
use App\Models\StoreOrderModel;
|
|
|
|
/**
|
|
* 周转框/周转托盘数量修改(订单附加金额重算)
|
|
*/
|
|
readonly class StoreOrderContainerService
|
|
{
|
|
/**
|
|
* 更新订单周转框/托盘数量并重算附加金额与订单总金额。
|
|
* 历史订单未写商品金额:按「总额 - 附加」反推并回写,保证 总额 = 商品 + 附加 恒成立。
|
|
*/
|
|
public function update(StoreOrderModel $order, int $boxNum, int $trayNum): void
|
|
{
|
|
$boxPrice = (float) site_config('services.box_amount', 0);
|
|
$trayPrice = (float) site_config('services.tray_amount', 0);
|
|
$addedAmount = round($boxNum * $boxPrice + $trayNum * $trayPrice, 2);
|
|
|
|
$productAmount = (float) $order->product_amount;
|
|
if ($productAmount <= 0 && (float) $order->total_amount > 0) {
|
|
$productAmount = round((float) $order->total_amount - (float) $order->added_amount, 2);
|
|
}
|
|
|
|
$order->box_num = $boxNum;
|
|
$order->tray_num = $trayNum;
|
|
$order->product_amount = $productAmount;
|
|
$order->added_amount = $addedAmount;
|
|
$order->total_amount = round($productAmount + $addedAmount, 2);
|
|
$order->save();
|
|
}
|
|
}
|