Перейти к основному содержимому

События связанные с заказом

[OnBeforeOrderApiCreate] Событие перед созданием заказа в МС​

Событие вызывается перед созданием заказа в МС по API. Необходимо, если нужно модифицировать отправляемый запрос в МС на создание заказа.

Параметры события

ПараметрТипОписание
orderIdintID заказа в БУС
orderBx\Bitrix\Sale\OrderОбъект заказа Битрикс
orderChangesStackarray|nullМассив данных, отправляемых в МС как запрос на создание заказа

Возвращаемое значение

Верните EventResult::SUCCESS с модифицированным массивом данных. Массив заменит orderChangesStack перед отправкой в МС.

return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $orderChangeStack);
примечание

Для совместимости со старыми обработчиками те же значения дополнительно передаются под числовыми ключами: 0 — ID заказа, 1 — массив orderChangesStack. В новых обработчиках используйте именованные ключи.


[OnAfterOrderApiCreate] Событие после успешного создания заказа в МС​

Событие вызывается после успешного создания заказа в МС по API. Необходимо для действий с заказом после создания в МС.

Параметры события

ПараметрТипОписание
orderIdintID заказа в БУС
orderMsobjectОбъект созданного заказа в МойСклад (ответ API)

Возвращаемое значение

Ничего возвращать не нужно. Событие информационное — результат не влияет на дальнейшую работу.


[OnBeforeSaveOrderChanges] Событие перед изменением заказа из БУС в МС​

Событие вызывается каждый раз, когда модуль отправляет данные заказа в МС при обновлении заказа в БУС. Можно применять для модификации отправляемых данных в МС.

Параметры события

ПараметрТипОписание
orderIdintID заказа в БУС
orderBx\Bitrix\Sale\OrderОбъект заказа Битрикс
orderMsobjectОбъект заказа МойСклад (текущее состояние в МС)
orderChangesStackarrayМассив изменений, отправляемых в МС

Возвращаемое значение

Верните EventResult::SUCCESS с модифицированным массивом изменений. Массив заменит orderChangesStack перед отправкой в МС.

return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $orderChangeStack);

[OnBeforeImportBxOrder] Событие перед началом импорта заказа в БУС из МС​

Событие вызывается перед тем, как модуль начнёт создавать заказ в Битриксе из заказа МойСклад. Позволяет остановить импорт конкретного заказа.

Параметры события

ПараметрТипОписание
msOrderobjectОбъект заказа МойСклад, который планируется импортировать

Возвращаемое значение

Для остановки импорта — верните new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::ERROR)

Если импорт продолжать — ничего не возвращайте


[OnBeforeCreateBxOrder] Событие перед созданием заказа в БУС из МС​

Событие отличается от события [OnCreateWebhookOrder] тем, что вызывается перед тем, как модуль сохранит заказ в Битриксе и позволяет редактировать его перед созданием.

Параметры события

ПараметрТипОписание
bxOrder\Bitrix\Sale\OrderОбъект заказа БУС (ещё не сохранён в БД)
msOrderobjectОбъект заказа МойСклад

Возвращаемое значение

Ничего возвращать не нужно. Объект $bxOrder передаётся по ссылке — вы можете напрямую модифицировать его через методы Bitrix API.


[OnFilterOrder] Событие для кастомной фильтрации заказов​

Событие вызывается при проверке заказа на соответствие фильтрам модуля. Позволяет добавить собственные правила фильтрации заказов, которые могут запрещать или разрешать экспорт заказа в МС.

Важно!

Событие вызывается только если включена опция «Применять фильтр заказов» (вкладка «Экспорт заказа», раздел Фильтр заказов). Если фильтр выключен, модуль не проверяет заказы фильтром и событие не выбрасывается.

Проверка выполняется при каждом сохранении заказа, оплаты или отгрузки в БУС (до постановки заказа на выгрузку и перед передачей изменений в МС), а также при обработке изменений уже связанного заказа, пришедших из МС (веб-хуки и агент проверки заказов). Прямой вызов агента \Rbs\Moysklad\Agent::createOrderApi(ID) фильтр не проверяет. В параметр isFiltred уже подставлен результат стандартного фильтра по сайту.

Параметры события

ПараметрТипОписание
orderIdintID заказа в БУС
isFiltredboolТекущее состояние фильтрации (true = заказ отфильтрован и НЕ будет отправлен в МС)

Возвращаемое значение

Верните EventResult::SUCCESS с массивом ['isFiltred' => true/false]:

  • true — заказ будет отфильтрован (НЕ отправится в МС)
  • false — заказ пройдёт фильтр (отправится в МС)
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, ['isFiltred' => true]);

[OnBeforeUpdateOrder] Событие перед сбором изменений заказа для отправки в МС​

Событие вызывается в самом начале обновления уже выгруженного заказа из БУС в МС — до того, как модуль соберёт изменения (свойства, комментарии, доставку, оплату, статус, корзину и т.д.) и отправит их в МС. Срабатывает при сохранении заказа, оплаты или отгрузки в БУС, а также в отложенных агентах повторной отправки изменений (onSaleOrderEntitySavedDelay, onSalePaymentEntitySavedDelay).

Удобно, чтобы заранее положить в стек изменений свои данные или подготовить объект заказа. Финальную правку отправляемого массива лучше делать в событии [OnBeforeSaveOrderChanges] (описано выше на этой странице).

Параметры события

ПараметрТипОписание
customerOrder\Rbs\Moysklad\CustomerorderОбъект обработчика заказа модуля. Содержит заказ БУС (getOrderEntity()), заказ МС (getOrder()), ID заказа БУС (getOrderBxId()) и методы работы со стеком изменений (setOrderChangeStack(), addAttributeToOrderChangeStack())

Возвращаемое значение

Возвращаемое значение не используется. Изменения вносятся напрямую в объект customerOrder: он передаётся как объект, поэтому все вызовы его методов сохраняются.


[OnBeforeUpdateAgent] Событие перед обновлением контрагента заказа в МС​

Событие вызывается при сохранении уже выгруженного заказа в БУС (и в отложенном агенте onSaleOrderEntitySavedDelay) сразу после отправки изменений заказа — перед тем, как модуль проверит, нужно ли обновить данные контрагента заказа в МС. Само обновление контрагента выполняется, только если оно включено в настройках вкладки «Контрагент» и не задан контрагент по умолчанию.

Параметры события

ПараметрТипОписание
customerOrder\Rbs\Moysklad\CustomerorderОбъект обработчика заказа модуля. Контрагент заказа МС доступен через getAgent(), заказ БУС — через getOrderEntity()

Возвращаемое значение

Возвращаемое значение не используется. Событие информационное — его можно применять для собственной синхронизации данных контрагента.