Описание проблемы
При add/update товаров в draft-заказе менеджер OrdersController::recalculateOrderTotals() пересчитывает только cart_cost, weight и cost = cart + delivery_cost с payment fee = 0. Комиссия оплаты не учитывается.
Это pre-existing расхождение, не введённое #373, но остаётся после унификации finalize/recalculate через ManagerOrderCostRecalculator.
Где
core/components/minishop3/src/Controllers/Api/Manager/OrdersController.php — recalculateOrderTotals() (~1397–1421):
$order->set('cost', $orderService->clampComputedTotal($order, $cartCost, $deliveryCost, 0.0));
Вызывается при операциях с позициями заказа (add/update product paths).
Ожидаемое поведение
Preview cost в черновике совпадает с breakdown из ManagerOrderCostRecalculator::calculateBreakdown() (MODE_AUTO): cart + delivery + payment commission для default handlers, те же правила доставки (free_delivery_amount, %), что у «Пересчитать стоимость» и finalize.
Фактическое поведение
delivery_cost берётся из persisted поля заказа (не пересчитывается при смене состава)
- payment fee всегда 0 в
clampComputedTotal
Предлагаемое решение
Делегировать в ManagerOrderCostRecalculator::calculateBreakdown($order) (как OrderFinalizeService::calculateCosts после #373):
- обновить
cart_cost, weight, delivery_cost, cost из breakdown
- не блокировать save при warnings (это preview, не finalize) — warnings можно логировать или отдавать в meta ответа API при необходимости
Связанные Issues
Критерии приёмки
Out of scope
- Выравнивание web checkout (
OrderCostCalculator::getPaymentCost — база только cart) с manager path
- Блокировка операций при warnings (политика только для finalize)
Описание проблемы
При add/update товаров в draft-заказе менеджер
OrdersController::recalculateOrderTotals()пересчитывает толькоcart_cost,weightиcost = cart + delivery_costс payment fee = 0. Комиссия оплаты не учитывается.Это pre-existing расхождение, не введённое #373, но остаётся после унификации finalize/recalculate через
ManagerOrderCostRecalculator.Где
core/components/minishop3/src/Controllers/Api/Manager/OrdersController.php—recalculateOrderTotals()(~1397–1421):Вызывается при операциях с позициями заказа (add/update product paths).
Ожидаемое поведение
Preview
costв черновике совпадает с breakdown изManagerOrderCostRecalculator::calculateBreakdown()(MODE_AUTO): cart + delivery + payment commission для default handlers, те же правила доставки (free_delivery_amount,%), что у «Пересчитать стоимость» и finalize.Фактическое поведение
delivery_costберётся из persisted поля заказа (не пересчитывается при смене состава)clampComputedTotalПредлагаемое решение
Делегировать в
ManagerOrderCostRecalculator::calculateBreakdown($order)(какOrderFinalizeService::calculateCostsпосле #373):cart_cost,weight,delivery_cost,costиз breakdownСвязанные Issues
Критерии приёмки
order.costвключает payment commission для DefaultPayment при ненулевой доставкеPOST …/recalculate-cost(MODE_AUTO) для типовых delivery/paymentManagerOrderCostRecalculatorRulesTestили отдельный тест на путь контроллера при возможностиcomposer ci:phpпроходитOut of scope
OrderCostCalculator::getPaymentCost— база только cart) с manager path