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