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