- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/orderdiscountbase.php
- Класс: BitrixSaleOrderDiscountBase
- Вызов: OrderDiscountBase::roundBasket
static function roundBasket(array $basket, array $roundData = array(), array $orderData = array())
{
static::init();
if (empty($basket))
return array();
$result = array();
$basketByModules = array();
$roundByModules = array();
foreach ($basket as $basketCode => $basketItem)
{
if (!isset($basketItem['MODULE']))
continue;
$module = $basketItem['MODULE'];
if (!isset($basketByModules[$module]))
{
$basketByModules[$module] = array();
$roundByModules[$module] = array();
}
$basketByModules[$module][$basketCode] = $basketItem;
$roundByModules[$module][$basketCode] = (isset($roundData[$basketCode]) ? $roundData[$basketCode] : array());
}
unset($basketCode, $basketItem);
foreach ($basketByModules as $module => $moduleItems)
{
$moduleResult = static::executeDiscountProvider(
array('MODULE_ID' => $module, 'METHOD' => self::PROVIDER_ACTION_ROUND_BASKET_PRICES),
array($moduleItems, $roundByModules[$module], $orderData)
);
if ($moduleResult === false)
{
$moduleResult = array();
foreach ($moduleItems as $basketCode => $basketItem)
{
$itemResult = static::roundPrice($basketItem, $roundByModules[$module][$basketCode]);
if (!empty($itemResult))
$moduleResult[$basketCode] = $itemResult;
}
}
if (empty($moduleResult))
continue;
foreach (array_keys($moduleResult) as $basketCode)
$result[$basketCode] = $moduleResult[$basketCode];
unset($moduleResult);
}
unset($moduleResult, $module, $moduleItems);
return $result;
}