• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/analytics/catalog.php
  • Класс: BitrixMainAnalyticsCatalog
  • Вызов: Catalog::getOrderInfo
static function getOrderInfo($orderId)
{
	// order itself
	$order = CSaleOrder::getById($orderId);

	// buyer info
	$siteUserId = $order['USER_ID'];

	$phone = '';
	$phone256 = '';
	$phone256_e164 = '';

	$email = '';
	$email256 = '';

	$result = CSaleOrderPropsValue::GetList(array(), array("ORDER_ID" => $orderId));
	while ($row = $result->fetch())
	{
		if (empty($phone) && mb_stripos($row['CODE'], 'PHONE') !== false)
		{
			$stPhone = static::normalizePhoneNumber($row['VALUE']);

			if (!empty($stPhone))
			{
				$phone = sha1($stPhone);
				$phone256 = hash('sha256', $stPhone);
				$phone256_e164 = hash('sha256', '+'.$stPhone);
			}
		}

		if (empty($email) && mb_stripos($row['CODE'], 'EMAIL') !== false)
		{
			if (!empty($row['VALUE']))
			{
				$email = sha1($row['VALUE']);
				$email256 = hash('sha256', mb_strtolower(trim($row['VALUE'])));
			}
		}
	}

	// products info
	$products = array();

	$result = CSaleBasket::getList(
		array(), $arFilter = array('ORDER_ID' => $orderId), false, false,
		array('PRODUCT_ID', 'RECOMMENDATION', 'QUANTITY', 'PRICE', 'CURRENCY', 'MODULE')
	);

	while ($row = $result->fetch())
	{
		$realProductId = $row['PRODUCT_ID'];
		$iblockId = 0;

		// get iblock id for catalog products
		if ($row['MODULE'] == 'catalog')
		{
			$productInfo = CCatalogSKU::GetProductInfo($row['PRODUCT_ID']);

			if (!empty($productInfo['ID']))
			{
				$realProductId = $productInfo['ID'];
				$iblockId = $productInfo['IBLOCK_ID'];
			}
			else
			{
				// get iblock id
				$element = BitrixIblockElementTable::getRow(array(
					'select' => array('IBLOCK_ID'),
					'filter' => array('=ID' => $realProductId)
				));

				if (!empty($element))
				{
					$iblockId = $element['IBLOCK_ID'];
				}
			}
		}

		$products[] = array(
			'product_id' => $realProductId,
			'iblock_id' => $iblockId,
			'quantity' => $row['QUANTITY'],
			'price' => $row['PRICE'],
			'currency' => $row['CURRENCY'],
			'recommendation' => $row['RECOMMENDATION']
		);
	}

	// all together
	$data = array(
		'order_id' => $orderId,
		'user_id' => $siteUserId,
		'phone' => $phone,
		'phone256' => $phone256,
		'phone256_e164' => $phone256_e164,
		'email' => $email,
		'email256' => $email256,
		'products' => $products,
		'price' => $order['PRICE'],
		'currency' => $order['CURRENCY']
	);

	return $data;
}