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