• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/orderbase.php
  • Класс: BitrixSaleOrderBase
  • Вызов: OrderBase::callEventOnBeforeOrderSaved
protected function callEventOnBeforeOrderSaved()
{
	$result = new Result();

	/** @var array $oldEntityValues */
	$oldEntityValues = $this->fields->getOriginalValues();

	$eventManager = MainEventManager::getInstance();
	if ($eventsList = $eventManager->findEventHandlers('sale', EventActions::EVENT_ON_ORDER_BEFORE_SAVED))
	{
		/** @var MainEntityEvent $event */
		$event = new MainEvent('sale', EventActions::EVENT_ON_ORDER_BEFORE_SAVED, array(
			'ENTITY' => $this,
			'VALUES' => $oldEntityValues
		));
		$event->send();

		if ($event->getResults())
		{
			/** @var MainEventResult $eventResult */
			foreach($event->getResults() as $eventResult)
			{
				if($eventResult->getType() == MainEventResult::ERROR)
				{
					$errorMsg = new ResultError(MainLocalizationLoc::getMessage('SALE_EVENT_ON_BEFORE_ORDER_SAVED_ERROR'), 'SALE_EVENT_ON_BEFORE_ORDER_SAVED_ERROR');
					if ($eventResultData = $eventResult->getParameters())
					{
						if (isset($eventResultData) && $eventResultData instanceof ResultError)
						{
							/** @var ResultError $errorMsg */
							$errorMsg = $eventResultData;
						}
					}

					$result->addError($errorMsg);
				}
			}
		}
	}

	return $result;
}