Унификация расчёта стоимости заказа: checkout ↔ manager - #476
Conversation
f1eba56 to
31bd029
Compare
f5eece4 to
1fa8ded
Compare
|
Обновление по базе процентной комиссии оплаты (после разбора #372 на живом примере). Принято решение: база комиссии оплаты — Почему (на примере: корзина 10 000, доставка +2 000, оплата +4 %):
Зафиксировано в #460 (уже merged в beta): Про этот PR (#476). Архитектурно он нам нужен — Просьба:
Мы не закрываем #476 — откладываем до сведения на cart-only. Спасибо! |
1fa8ded to
17e627c
Compare
|
@biz87 готово по комментарию:
Описание PR обновлено. Можно смотреть повторно. |
17e627c to
7e918ce
Compare
22c7395 to
741a4fd
Compare
Extract OrderCostEngine for shared delivery/payment math, align web payment commission base with manager (cart + delivery), and register manager recalculator in DI.
Add unit tests in OrderCostEngineTest for the math edge cases called out in #366 review: - Delivery free-threshold: cart at/above free_delivery_amount → 0; just below → weight_price × weight + price; free_delivery_amount = 0 disables it - Percent delivery price applied to cart - Payment percent surcharge base = cart + delivery (#372): 3% of 1500 = 45, total 1545; fixed and empty-price surcharges
…460) OrderCostEngine delegates to OrderService::paymentCommissionBase(); update OrderCostEngineTest and PaymentCommissionBaseTest for MS2 cart-only parity after rebase on beta.
cbaf520 to
645b822
Compare
Описание
Общий слой формул стоимости заказа для витрины и менеджера вместо дублирования в
OrderCostCalculator,ManagerOrderCostRecalculator,DeliveryиPayment.OrderCostEngine— delivery (weight, free threshold, price/%), payment surcharge,paymentCommissionBase()делегирует вOrderService::paymentCommissionBase()(cart-only, fix(order): единая база для процентной комиссии оплаты (cart-only) #460),composeBreakdown()черезOrderService::clampComputedTotalOrderCostCalculator) — MODX cost events; payment fee от cart-only;getTotalCostпередаёт уже посчитанный cart вgetPaymentCost(один проход pipeline)ManagerOrderCostRecalculator) — modes/warnings/log; default handlers делегируют в enginems3_manager_order_cost_recalculatorвServiceRegistry,OrdersControllerберёт сервис из контейнераCloses #366
Тип изменений
Поведение storefront:
%-комиссия оплаты — cart-only (MS2-паритет, #460). Rebase на beta после #460. Округление/clamp без изменений.Связанные Issues
Closes #366
Refs #372, #373, #338, #363, #361, #460
Как это было протестировано?
OrderCostEngineTest.php: cart-only commission base, delivery free-threshold/percent edge cases, wiring grep, single-passgetTotalCost.PaymentCommissionBaseTest.php: cart-only guards (#460).composer ci:php,composer stan)Чеклист
Дополнительные заметки
Events (документировано в docblocks):
msOnBefore/GetCartCost,DeliveryCost,PaymentCost,OrderCostauto/manual/force_provider) и warningsDeferred:
OrderFinalizeServicepayment fee (#373) — отдельный issue; полный runtime integration smoke с mock modX.