Вот полный список событий (модуль sale), которые имеют отношение к компоненту оформления заказа (bitrix:sale.order.ajax), а также смежные события для расчёта заказа и сохранения ордера.
1. События компонента sale.order.ajax (файл: /bitrix/modules/sale/install/components/bitrix/sale.order.ajax/class.php)
-
OnSaleComponentOrderCreated — строка 6048.
Срабатывает после создания заказа (объекта Order). Позволяет модифицировать заказ перед финальным сохранением.
Параметры:$order(объект\Bitrix\Sale\Order),$arUserResult(результаты выбора пользователя). -
OnSaleComponentOrderDeliveriesCalculated — строка 4699.
Срабатывает после расчёта всех доступных доставок. Позволяет изменить массив рассчитанных доставок.
Параметры:$arDeliveryList(массив рассчитанных доставок). -
OnSaleComponentOrderJsData — строка 5258.
Позволяет модифицировать JavaScript-данные, которые передаются в шаблон компонента для AJAX-обновления.
Параметры:$arJsData(массив данных для JS). -
OnSaleComponentOrderOneStepComplete — строка 6552.
Срабатывает после полного завершения оформления заказа (после успешного создания).
Параметры:$orderId(ID созданного заказа),$arUserResult(результаты выбора пользователя). -
OnSaleComponentOrderOneStepFinal — строка 6366.
Срабатывает на финальной стадии перед тем, как результат будет отдан компоненту для отображения.
Параметры:$arResult(результирующий массив компонента),$arUserResult,$isStart. -
OnSaleComponentOrderProperties — строка 971.
Позволяет модифицировать массив свойств заказа (полей формы) перед их выводом.
Параметры:$arPropList(список свойств). -
OnSaleComponentOrderResultPrepared — строка 5534.
Срабатывает после того, как итоговый массив$arResultполностью подготовлен, но до его передачи в шаблон.
Параметры:$arResult(результирующий массив). -
OnSaleComponentOrderShowAjaxAnswer — строка 4940.
Срабатывает перед отправкой AJAX-ответа. Позволяет изменить данные, возвращаемые по AJAX.
Параметры:$arResult(массив для AJAX-ответа). -
OnSaleComponentOrderUserResult — строка 5626.
Срабатывает после получения результата от пользователя (выбор доставки, оплаты и т.д.).
Параметры:$arUserResult(результаты выбора пользователя).
2. События расчёта заказа (файл: /bitrix/modules/sale/general/order.php)
- OnSaleCalculateOrderShoppingCart — строка 64
- OnSaleCalculateOrderPersonType — строка 71
- OnSaleCalculateOrderProps — строка 78
- OnSaleCalculateOrderDelivery — строка 87
- OnSaleCalculateOrderPaySystem — строка 94
- OnSaleCalculateOrderDiscount — строка 103
- OnSaleCalculateOrderShoppingCartTax — строка 147
- OnSaleCalculateOrderDeliveryTax — строка 154
- OnSaleCalculateOrder — строка 160
3. События создания / сохранения заказа
- OnBeforeOrderAdd —
/bitrix/modules/sale/mysql/order.php, строка 53 - OnOrderAdd — там же, строка 127
- OnBeforeOrderUpdate — строка 161
- OnOrderUpdate — строка 233
- OnSaleOrderBeforeSaved —
/bitrix/modules/sale/lib/compatible/eventcompatibility.php, строка 1384 - OnSaleOrderEntitySaved — там же, строка 1400
- OnSaleOrderSaved — там же, строка 1402 (также срабатывает в
sale/options.php,sale/lib/exchange/)
4. Прочие события, связанные с заказом
- OnSaleBeforePayOrder — перед оплатой заказа
- OnSalePayOrder — после оплаты заказа
- OnSaleOrderPaid — заказ оплачен
- OnSaleBeforeCancelOrder — перед отменой заказа
- OnSaleCancelOrder — после отмены заказа
- OnSaleBeforeDeductOrder — перед отгрузкой
- OnSaleDeductOrder — после отгрузки
- OnSaleBeforeDeliveryOrder — перед разрешением доставки
- OnSaleDeliveryOrder — после разрешения доставки
- OnSaleBeforeReserveOrder — перед резервированием
- OnSaleReserveOrder — после резервирования
- OnSaleStatusOrderChange — изменение статуса заказа
- OnSaleOrderStatusChangeSendEmail — отправка письма при смене статуса
- OnOrderNewSendEmail — отправка письма о новом заказе
- OnOrderPaySendEmail — отправка письма об оплате
- OnOrderDeliverSendEmail — отправка письма о доставке
- OnOrderCancelSendEmail — отправка письма об отмене
- OnBasketOrder — при превращении корзины в заказ
- OnDoBasketOrder — при переносе товаров из корзины в заказ
5. События компонента sale.order.checkout (новый SPA-компонент)
- onComponentSaleOrderCheckoutPrepareJsonData —
/bitrix/modules/sale/install/components/bitrix/sale.order.checkout/class.php, строка 833. Срабатывает при подготовке JSON-данных для Vue-приложения.
6. Событие старого компонента sale.order.full
- OnSaleComponentOrderComplete —
/bitrix/modules/sale/install/components/bitrix/sale.order.full/component.php, строка 2260.
Пример подписки на событие OnSaleComponentOrderOneStepComplete:
// регистрируем обработчик в init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale',
'OnSaleComponentOrderOneStepComplete',
'myOrderCompleteHandler'
);
function myOrderCompleteHandler($orderId, array $arUserResult)
{
// $orderId - ID созданного заказа
// $arUserResult - массив с выбранными пользователем данными
// Ваш код, например: запись в лог, отправка доп. уведомления
}
Пример подписки на событие OnSaleComponentOrderResultPrepared:
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale',
'OnSaleComponentOrderResultPrepared',
function(&$arResult) {
// Модифицируем $arResult перед выводом шаблона
$arResult['CUSTOM_DATA'] = 'Дополнительные данные';
}
);