Обновлено 27.09.2024

Вызывается до «‎сборки» объекта компании перед отправкой его в Амо. Позволяет подставить свою компанию, или отменить создание компании.

Параметры

  1. Rover\AmoCRM\Directory\Entity\Profile — объект профиля интеграции.
  2. array — массив дополнительных сущностей, с которыми была запрошена компания по апи amoCRM.
  3. Rover\AmoCRM\Directory\Entity\Event — событие интеграции, в котором была создана сделка.

Пример обработчика

Не создавать компанию в зависимости от каких-либо условий

use Bitrix\Main\Event;
use Bitrix\Main\EventManager;
use Bitrix\Main\Loader;
use Bitrix\Main\EventResult;
use Rover\AmoCRM\Event\PostEvent;

if (Loader::includeModule('rover.amocrm')) {
    EventManager::getInstance()->addEventHandler(
        'rover.amocrm',
        'onBeforeBuildCompanies',
        ["AmoEventHandler", "onBeforeBuildCompaniesHandler"]
    );

    /**
     * Class FixAspro
     *
     * @author Pavel Shulaev (https://rover-it.me)
     */
    class AmoEventHandler
    {
        public static function onBeforeBuildCompaniesHandler(Event $event)
        {
            /** @var PostEvent $amoEvent */
            $amoEvent = $event->getParameter(2); // параметеры нумеруются с 0.
            // фильтруем почтовое событие
            if (false === $amoEvent instanceof PostEvent) {
                return;
            }

            // ид нужного почтового события
            if ($amoEvent->getSourceId() != 95) {
                return;
            }

            $postEventData = \Bitrix\Main\Mail\Internal\EventTable::getRow([
                'filter' => ['=ID' => $amoEvent->getEntityId()]
            ]);

            // не создаём компанию если стоимость доставки менее 500
            if ($postEventData['C_FIELDS']['DELIVERY_PRICE'] < 500) {
                return new EventResult(EventResult::ERROR, $event->getParameters());
            }
        }
    }
}