- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/internals/product2product.php
- Класс: BitrixSaleInternalsProduct2ProductTable
- Вызов: Product2ProductTable::refreshProductStatistic
static function refreshProductStatistic($liveTime = 10)
{
$liveTime = (int)$liveTime;
$connection = MainApplication::getConnection();
if (!$connection->isTableExists('b_sale_order_product_stat'))
return;
$sqlDelete = "TRUNCATE TABLE b_sale_order_product_stat";
$connection->query($sqlDelete);
$dateLimit = "";
if ($liveTime > 0)
{
$helper = $connection->getSqlHelper();
$liveTo = $helper->addSecondsToDateTime($liveTime * 24 * 3600, "b.DATE_INSERT");
$dateLimit = " AND NOW() < $liveTo";
}
$sqlUpdate = "
INSERT INTO b_sale_order_product_stat (PRODUCT_ID, RELATED_PRODUCT_ID, ORDER_DATE, CNT)
SELECT b.PRODUCT_ID as PRODUCT_ID, b1.PRODUCT_ID as RELATED_PRODUCT_ID, DATE(b.DATE_INSERT) as ORDER_DATE, COUNT(b.PRODUCT_ID)
FROM b_sale_basket b, b_sale_basket b1
WHERE b.ORDER_ID = b1.ORDER_ID
AND b.ID <> b1.ID
$dateLimit
GROUP BY b.PRODUCT_ID, b1.PRODUCT_ID, ORDER_DATE
ORDER BY NULL";
$connection->query($sqlUpdate);
$sqlDelete = "TRUNCATE TABLE b_sale_product2product";
$connection->query($sqlDelete);
$sqlUpdate = "
INSERT INTO b_sale_product2product (PRODUCT_ID, PARENT_PRODUCT_ID, CNT)
SELECT ops.PRODUCT_ID, ops.RELATED_PRODUCT_ID, SUM(ops.CNT)
FROM b_sale_order_product_stat ops
GROUP BY PRODUCT_ID, RELATED_PRODUCT_ID
ORDER BY NULL
";
return $connection->query($sqlUpdate);
}