@devjob

Bitrix — Как подписаться на событие блокировки заказа?

Мне необходимо записывать в историю работы с заказом.
При просмотре в админке - заказ автоматически блокируется.
/bitrix/modules/sale/admin/order_view.php:149
if ($boolLocked)
	$errorMsgs[] = Admin\OrderEdit::getLockingMessage($ID);
else
	$orderClass::lock($ID);


/bitrix/modules/sale/lib/order.php:1850
return static::updateInternal($id, array(
	'DATE_LOCK' => new Main\Type\DateTime(),
	'LOCKED_BY' => (is_object($USER) ? $USER->GetID(): false)
));


/bitrix/modules/main/lib/entity/datamanager.php:772
$event = new Event($entity, self::EVENT_ON_BEFORE_UPDATE, array("id" => $primary, "fields" => $fields));
$event->send();


Пытаюсь подписаться на события OnBeforeUpdate, OnBeforeEventSend - ничего не происходит.
Куда копать?

Или придется реализовывать кастомную форму просмотра заказа?
  • Вопрос задан
  • 432 просмотра
Решения вопроса 1
@PetrPo
конкретно на блокировку не знаю, на update заказа можно так, там проверишь если LOCKED_BY не null значит залочен
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('sale', '\Bitrix\Sale\Internals\Order::onUpdate', ['OrderEvents', 'onUpdate']);

class OrderEvents {
	public static function onUpdate(\Bitrix\Main\Event $event) {
		$fields = $event->getParameters()['fields'];
	}
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы