- Модуль: 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;
}