• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discount/cumulativecalculator.php
  • Класс: BitrixSaleDiscountCumulativeCalculator
  • Вызов: CumulativeCalculator::sumOrders
private function sumOrders($filter, $orderType)
{
	$provider = null;
	if ($orderType === self::TYPE_ORDER_ARCHIVED)
	{
		/** @var BitrixSaleArchiveManager $provider */
		$provider = 'BitrixSaleArchiveManager';
	}
	elseif ($orderType === self::TYPE_ORDER_NON_ARCHIVED)
	{
		/** @var BitrixSaleOrder $provider */
		$provider = 'BitrixSaleOrder';
	}

	if ($provider === null)
	{
		return false;
	}

	$orders = $provider::getList(
		array(
			'filter' => $filter,
			'select' => array('DATE_INSERT', 'PRICE', 'CURRENCY')
		)
	);

	$sum = 0;
	$currency = null;
	foreach ($orders as $orderData)
	{
		if (!$currency)
		{
			$currency = $orderData['CURRENCY'];
		}

		if ($currency !== $orderData['CURRENCY'])
		{
			$sum += CCurrencyRates::ConvertCurrency($orderData['PRICE'], $orderData['CURRENCY'], $currency);
		}
		else
		{
			$sum += $orderData['PRICE'];
		}
	}

	return $sum;
}