Skip to content

fix(events): OrderFinalizeService вызывает зарегистрированные msOnBeforeMgrCreateOrder / msOnMgrCreateOrder#217

Open
biz87 wants to merge 1 commit intobetafrom
fix/finalize-order-mgr-events
Open

fix(events): OrderFinalizeService вызывает зарегистрированные msOnBeforeMgrCreateOrder / msOnMgrCreateOrder#217
biz87 wants to merge 1 commit intobetafrom
fix/finalize-order-mgr-events

Conversation

@biz87
Copy link
Copy Markdown
Member

@biz87 biz87 commented Apr 22, 2026

Summary

OrderFinalizeService вызывал msOnBeforeFinalizeOrder и msOnFinalizeOrder — имена, которых не существует в _build/elements/events.php. После install/upgrade ни одного modEvent с такими именами в системе не появлялось — подписать плагин через UI MODX было нельзя.

Параллельно в билдере уже зарегистрированы подходящие по семантике msOnBeforeMgrCreateOrder и msOnMgrCreateOrder, но они нигде не вызывались.

Что сделано

В OrderFinalizeService заменил два invokeEvent:

Было Стало
msOnBeforeFinalizeOrder msOnBeforeMgrCreateOrder
msOnFinalizeOrder msOnMgrCreateOrder

Добавил комментарии, что «manager create» здесь означает финализацию draft'а в готовый заказ (получает номер, меняется статус, уходят уведомления).

_build/elements/events.php не трогается — имена в билдере сохраняются, Mgr-префикс однозначно указывает на админский флоу.

Scope

OrderFinalizeService::finalize() вызывается только из POST /api/mgr/orders/{id}/finalize (manager route, permission msorder_save). Никаких web-API или фронтовых путей — проверено grep'ом по core/ и assets/.

Test plan

  • Elements → Plugins → Создать плагин, на вкладке System events в списке видны msOnBeforeMgrCreateOrder и msOnMgrCreateOrder
  • Подписать плагин на msOnBeforeMgrCreateOrder, выполнить finalize любого draft-заказа из админки — плагин должен сработать
  • Аналогично для msOnMgrCreateOrder (срабатывает после смены статуса)

…rder for finalize

OrderFinalizeService invoked msOnBeforeFinalizeOrder and msOnFinalizeOrder —
names that were never registered in _build/elements/events.php. Plugins couldn't
subscribe through the MODX UI because no modEvent rows existed for them.

Meanwhile the builder registers msOnBeforeMgrCreateOrder and msOnMgrCreateOrder
(intended as sibling of msOnSubmitOrder for the manager flow) that were never
fired. Point the service at those — no builder changes, plugins can attach
through the stock MODX Plugins → System events UI. Comments above each invoke
spell out that 'manager create' here means finalizing a draft into a real order.

Scope: finalize is called only from POST /api/mgr/orders/{id}/finalize
(manager route, msorder_save permission). No frontend/Web API caller exists —
grep over core/ and assets/ confirms.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants