• Модуль: seo
  • Путь к файлу: ~/bitrix/modules/seo/lib/advsession.php
  • Класс: BitrixSeoAdvSession
  • Вызов: AdvSession::countSessionOrder
static function countSessionOrder($orderId)
{
	if(
		MainLoader::includeModule('sale')
		&& MainLoader::includeModule('catalog')
		&& MainLoader::includeModule('currency')
	)
	{
		$orderLinks = OrderTable::getList(array(
			'filter' => array(
				'=ORDER_ID' => $orderId,
				'=PROCESSED' => OrderTable::NOT_PROCESSED,
			),
			'select' => array('ID', 'BANNER_ID')
		));
		$orderLink = $orderLinks->fetch();
		if($orderLink)
		{
			$linkedProductsList = static::getBannerLinkedProducts($orderLink['BANNER_ID']);
			if(count($linkedProductsList) > 0)
			{
				$basket = BasketTable::getList(array(
					'filter' => array(
						'=ORDER_ID' => $orderId,
					),
					'select' => array('PRODUCT_ID', 'GROSS_PROFIT', 'SUMMARY_PRICE', 'SUMMARY_PURCHASING_PRICE', 'QUANTITY'),
				));

				$sum = 0;
				while($item = $basket->fetch())
				{
					if(in_array($item['PRODUCT_ID'], $linkedProductsList))
					{
						$sum += static::getProductProfit($item);
					}
					else
					{
						$productInfo = CCatalogSKU::GetProductInfo($item['PRODUCT_ID']);

						if(is_array($productInfo) && in_array($productInfo['ID'], $linkedProductsList))
						{
							$sum += static::getProductProfit($item);
						}
					}
				}

				OrderTable::update($orderLink['ID'], array(
					'SUM' => $sum,
					'PROCESSED' => OrderTable::PROCESSED,
				));
			}
		}
	}
}