• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Service/Factory/Deal.php
  • Класс: Bitrix\Crm\Service\Factory\Deal
  • Вызов: Deal::configureAddOperation
protected function configureAddOperation(Operation $operation): void
{
	$operation
		->addAction(
			Operation::ACTION_BEFORE_SAVE,
			new Operation\Action\Compatible\SendEvent\WithCancel\Update(
				'OnBeforeCrmDealAdd',
				'CRM_DEAL_CREATION_CANCELED',
			),
		)
		->addAction(
			Operation::ACTION_BEFORE_SAVE,
			new Operation\Action\Compatible\SendEvent\ProductRowsSave('OnBeforeCrmDealProductRowsSave'),
		)
		->addAction(
			Operation::ACTION_AFTER_SAVE,
			new Operation\Action\ClearCache('b_crm_deal'),
		)
		->addAction(
			Operation::ACTION_AFTER_SAVE,
			new Operation\Action\Compatible\SocialNetwork\ProcessAdd(),
		)
		->addAction(
			Operation::ACTION_AFTER_SAVE,
			new Operation\Action\Compatible\SendEvent('OnAfterCrmDealAdd'),
		)
		->addAction(
			Operation::ACTION_AFTER_SAVE,
			new Operation\Action\Compatible\SendEvent\ExternalAdd('OnAfterExternalCrmDealAdd'),
		)
		->addAction(
			Operation::ACTION_AFTER_SAVE,
			new Operation\Action\Compatible\SendEvent\ProductRowsSave('OnAfterCrmDealProductRowsSave'),
		)
	;

	if ($this->isInventoryManagementEnabled())
	{
		$operation
			->addAction(
				Operation::ACTION_BEFORE_SAVE,
				new Reservation\Actions\CheckProductsOnAdd()
			)
			->addAction(
				Operation::ACTION_AFTER_SAVE,
				new Reservation\Actions\SynchronizeReservesOnAdd()
			)
			->addAction(
				Operation::ACTION_AFTER_SAVE,
				new Reservation\Actions\ProcessInventoryManagementOnAdd()
			)
		;
	}
}