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