• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discountbase.php
  • Класс: BitrixSaleDiscountBase
  • Вызов: DiscountBase::roundFullBasketPrices
protected function roundFullBasketPrices()
{
	$basketCodeList = $this->getBasketCodes(true);
	if (!empty($basketCodeList))
	{
		$roundBlock = &$this->discountResult['APPLY_BLOCKS'][$this->discountResultCounter]['BASKET_ROUND'];
		$orderData = $this->orderData;
		unset($orderData['BASKET_ITEMS']);
		$basket = array_intersect_key(
			$this->orderData['BASKET_ITEMS'],
			array_fill_keys($basketCodeList, true)
		);

		/** @var OrderDiscount $storageClassName */
		$storageClassName = $this->getOrderDiscountClassName();

		$result = $storageClassName::roundBasket(
			$basket,
			array(),
			$orderData
		);
		foreach ($result as $basketCode => $roundResult)
		{
			if (empty($roundResult) || !is_array($roundResult))
				continue;
			if (!$this->isExistBasketItem($basketCode))
				continue;
			$this->orderData['BASKET_ITEMS'][$basketCode]['PRICE'] = $roundResult['PRICE'];
			$this->orderData['BASKET_ITEMS'][$basketCode]['DISCOUNT_PRICE'] = $roundResult['DISCOUNT_PRICE'];

			$roundBlock[$basketCode] = array(
				'APPLY' => 'Y',
				'ROUND_RULE' => $roundResult['ROUND_RULE']
			);
		}
		unset($basketCode, $roundResult, $result);
		unset($storageClassName);
		unset($basket, $orderData);
		unset($roundBlock);
	}
	unset($basketCodeList);
}