• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/compatible/discountcompatibility.php
  • Класс: BitrixSaleCompatibleDiscountCompatibility
  • Вызов: DiscountCompatibility::roundPrices
static function roundPrices(array &$basket, array $orderData = array())
{
	if (empty($basket))
		return;

	$publicMode = self::usedByClient();

	$clearedBasket = array();
	foreach ($basket as $basketCode => $basketItem)
	{
		if (CSaleBasketHelper::isSetItem($basketItem))
			continue;
		$clearedBasket[$basketCode] = $basketItem;
	}
	unset($basketCode, $basketItem);

	if (!empty($clearedBasket))
	{
		$result = SaleOrderDiscountManager::roundBasket(
			$clearedBasket,
			array(),
			$orderData
		);
		foreach ($result as $basketCode => $roundResult)
		{
			if (empty($roundResult) || !is_array($roundResult))
				continue;

			$code = ($publicMode ? $basket[$basketCode]['ID'] : $basketCode);

			$basket[$basketCode]['PRICE'] = $roundResult['PRICE'];
			$basket[$basketCode]['DISCOUNT_PRICE'] = $roundResult['DISCOUNT_PRICE'];
			//TODO: remove this code after create calculation percent of discount
			if ($basket[$basketCode]['PRICE'] > $basket[$basketCode]['BASE_PRICE'])
			{
				$basket[$basketCode]['BASE_PRICE'] = $basket[$basketCode]['PRICE'];
				$basket[$basketCode]['DISCOUNT_PRICE'] = 0;
			}

			if (!isset(self::$discountResult['BASKET_ROUND']))
				self::$discountResult['BASKET_ROUND'] = array();
			self::$discountResult['BASKET_ROUND'][$code] = array(
				'APPLY' => 'Y',
				'ROUND_RULE' => $roundResult['ROUND_RULE']
			);
		}
		unset($basketCode, $roundResult, $result);
	}
	unset($clearedBasket);
	unset($publicMode);
}