- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/internals/buyerstatistic.php
- Класс: BitrixSaleInternalsBuyerStatisticTable
- Вызов: BuyerStatisticTable::recalculate
static function recalculate()
{
$connection = MainApplication::getConnection();
$type = $connection->getType();
if ($type == "mysql")
{
$sqlDelete = "TRUNCATE TABLE ".self::getTableName();
$connection->query($sqlDelete);
$sqlInsertInSelect = "
INSERT INTO ".self::getTableName()." (USER_ID, LID, CURRENCY, LAST_ORDER_DATE, COUNT_FULL_PAID_ORDER, COUNT_PART_PAID_ORDER, SUM_PAID)
SELECT UN.USER_ID, UN.LID, UN.CURRENCY, MAX(UN.DATE_INSERT), SUM(CASE WHEN UN.PAYED = 'Y' THEN 1 ELSE 0 END), SUM(CASE WHEN NOT UN.SUM_PAID = 0 THEN 1 ELSE 0 END), SUM(UN.SUM_PAID)
FROM (
(SELECT USER_ID, LID, CURRENCY, DATE_INSERT, PAYED, SUM_PAID FROM b_sale_order)
UNION
(SELECT USER_ID, LID, CURRENCY, DATE_INSERT, PAYED, SUM_PAID FROM b_sale_order_archive)
) UN
GROUP BY UN.USER_ID, UN.CURRENCY, UN.LID
ORDER BY UN.USER_ID";
$connection->query($sqlInsertInSelect);
}
}