• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/internals/facebookconversion.php
  • Класс: BitrixSaleInternalsFacebookConversion
  • Вызов: FacebookConversion::onOrderCreatedHandler
static function onOrderCreatedHandler(Order $order): void
{
	if (!self::isAllowedRegion())
	{
		return;
	}

	$application = BitrixMainApplication::getInstance();
	$session = $application ? $application->getSession() : null;
	$isInitiateCheckoutSent =
		$session
			? $session->has('FACEBOOK_CONVERSION_INITIATE_CHECKOUT_SENT_' . SITE_ID)
			: false
	;
	if (BitrixMainContext::getCurrent()->getRequest()->isAjaxRequest())
	{
		if (
			$isInitiateCheckoutSent
			&& BitrixMainContext::getCurrent()->getRequest()->get('action') === 'saveOrderAjax'
		)
		{
			$session->remove('FACEBOOK_CONVERSION_INITIATE_CHECKOUT_SENT_' . SITE_ID);
		}

		return;
	}
	if ($isInitiateCheckoutSent)
	{
		return;
	}
	$session->set('FACEBOOK_CONVERSION_INITIATE_CHECKOUT_SENT_' . SITE_ID, true);

	if (!self::checkClass())
	{
		return;
	}

	$params = self::getFacebookConversionParams(FacebookEvent::EVENT_INITIATE_CHECKOUT);
	if (!$params)
	{
		return;
	}

	if ($params[self::IDS] !== 'Y')
	{
		return;
	}

	$customDataParams = self::getCustomDataParamsForOrderEvent($order, $params);

	if ($params[self::QUANTITY] === 'Y')
	{
		$totalQuantity = 0;
		/** @var BasketItem $basketItem */
		foreach ($order->getBasket()->getBasketItems() as $basketItem)
		{
			$totalQuantity += $basketItem->getQuantity();
		}
		$customDataParams['num_items'] = (int)$totalQuantity;
	}

	self::fireEvent(FacebookEvent::EVENT_INITIATE_CHECKOUT, $customDataParams);
}