- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/compatible/discountcompatibility.php
- Класс: BitrixSaleCompatibleDiscountCompatibility
- Вызов: DiscountCompatibility::fillBasketData
static function fillBasketData(&$basket)
{
if (!self::$init)
self::init();
if (!self::isSuccess() || self::$useMode == self::MODE_SYSTEM || self::$useMode == self::MODE_DISABLED)
return;
if (empty($basket) || !is_array($basket))
return;
$publicMode = self::usedByClient();
$loadBasketProperties = array();
foreach ($basket as $basketCode => $basketItem)
{
$code = ($publicMode ? $basketItem['ID'] : $basketCode);
if (!isset($basketItem['DISCOUNT_PRICE']))
$basketItem['DISCOUNT_PRICE'] = 0;
if (!isset($basketItem['BASE_PRICE']))
{
$basketItem['BASE_PRICE'] = (isset(self::$basketBasePrice[$code])
? self::$basketBasePrice[$code]
: $basketItem['PRICE'] + $basketItem['DISCOUNT_PRICE']
);
}
$checkProperties = true;
if (self::isCustomPrice($basketItem))
{
if (array_key_exists($code, self::$basketDiscountList))
unset(self::$basketDiscountList[$code]);
$checkProperties = false;
}
if (CSaleBasketHelper::isSetItem($basketItem))
{
$basketItem['PRICE'] = $basketItem['BASE_PRICE'];
$basketItem['DISCOUNT_PRICE'] = 0;
$checkProperties = false;
}
if (isset(self::$basketItemsData[$code]))
{
if (isset(self::$basketItemsData[$code]['PRICE_TYPE_ID']))
$basketItem['PRICE_TYPE_ID'] = self::$basketItemsData[$code]['PRICE_TYPE_ID'];
}
if ($checkProperties)
{
if (!isset($basketItem['PROPERTIES']))
{
if (isset($basketItem['PROPS']))
$basketItem['PROPERTIES'] = $basketItem['PROPS'];
elseif (isset($basketItem['ID']))
{
$loadBasketProperties[$basketItem['ID']] = $basketCode;
$basketItem['PROPERTIES'] = array();
}
}
}
$basketItem['ACTION_APPLIED'] = 'N';
$basket[$basketCode] = $basketItem;
}
if (!empty($loadBasketProperties))
{
$iterator = SaleBasketPropertiesCollection::getList(array(
'select' => array('*'),
'filter' => array('BASKET_ID' => 'ASC', 'SORT' => 'ASC', 'ID' => 'ASC')
));
while ($row = $iterator->fetch())
{
$id = $row['ID'];
if (!isset($loadBasketProperties[$id]))
continue;
$basketCode = $loadBasketProperties[$id];
$basket[$basketCode]['PROPERTIES'][] = array(
'CODE' => ((string)$row['CODE'] != '' ? $row['CODE'] : $row['NAME']),
'ID' => $row['ID'],
'VALUE' => $row['VALUE'],
'SORT' => $row['SORT'],
'NAME' => $row['NAME']
);
}
unset($row, $iterator);
}
unset($loadBasketProperties);
unset($basketCode, $basketItem);
}