• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basket/baserefreshstrategy.php
  • Класс: BitrixSaleBasketBaseRefreshStrategy
  • Вызов: BaseRefreshStrategy::prepareData
protected function prepareData(BasketItemBase $item, $data)
{
	if (empty($data))
	{
		return false;
	}

	$preparedData = array();

	$registry = Registry::getInstance(Registry::REGISTRY_TYPE_ORDER);
	/** @var BasketItemBase $basketItemClassName */
	$basketItemClassName = $registry->getBasketItemClassName();

	if (!empty($data['PRICE_LIST']))
	{
		$basketItemCode = $item->getBasketCode();

		if (!empty($data['PRICE_LIST'][$basketItemCode]))
		{
			$priceData = $data['PRICE_LIST'][$basketItemCode];

			if (!isset($priceData['QUANTITY']) && isset($priceData['AVAILABLE_QUANTITY']))
			{
				$priceData['QUANTITY'] = $priceData['AVAILABLE_QUANTITY'];
			}

			$data = $priceData + $data;
			if (isset($data['QUANTITY']))
			{
				$data['QUANTITY'] = $data['AVAILABLE_QUANTITY'] = static::getAvailableQuantityFromPool($item, $data['QUANTITY']);
			}
		}
		else
		{
			return false;
		}
	}

	$settableFields = $basketItemClassName::getSettableFieldsMap();
	$roundFields = array_fill_keys($basketItemClassName::getRoundFields(), true);

	foreach ($data as $key => $value)
	{
		if (isset($settableFields[$key]))
		{
			if (
				$item->isMarkedFieldCustom($key)
				||
				$key === 'DISCOUNT_PRICE' && $item->isMarkedFieldCustom('PRICE')
			)
			{
				$value = $item->getField($key);
			}

			if (isset($roundFields[$key]))
			{
				$value = PriceMaths::roundPrecision($value);
			}

			$preparedData[$key] = $value;
		}
	}

	return $preparedData;
}