• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/catalogprovidercompatibility.php
  • Класс: BitrixCatalogProductCatalogProviderCompatibility
  • Вызов: CatalogProviderCompatibility::getProductData
static function getProductData(array $basketItemData)
{
	$context = array();

	if (!empty($basketItemData['SITE_ID']))
	{
		$context['SITE_ID'] = $basketItemData['SITE_ID'];
	}

	if (!empty($basketItemData['USER_ID']))
	{
		$context['USER_ID'] = $basketItemData['USER_ID'];
	}

	$providerClass = static::getProviderClass($context);
	if (!$providerClass)
	{
		return false;
	}

	$productId = $basketItemData['PRODUCT_ID'];
	$transfer = SaleInternalsTransferProvider::create($providerClass, $context);

	$products = array(
		$productId => array(
			'ITEM_CODE' => $productId,
			'QUANTITY_LIST' => array(
				$basketItemData['BASKET_ID'] => $basketItemData['QUANTITY'])
			,
		));

	if (!empty($basketItemData['BASKET_ID']))
	{
		$products[$productId]['BASKET_ID'] = $basketItemData['BASKET_ID'];
	}

	$r = $transfer->getProductData($products);

	if ($r->isSuccess())
	{
		$data = $r->getData();
		if (!empty($data['PRODUCT_DATA_LIST']))
		{
			$productDataList = $data['PRODUCT_DATA_LIST'];
			if (isset($productDataList[$productId]))
			{
				$productData = $productDataList[$productId];

				if (!empty($productData['PRICE_LIST']))
				{
					$basketItemCode = $basketItemData['BASKET_ID'];

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

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

						$productData = $priceData + $productData;
					}
				}

				return $productData;
			}
		}
	}

	return false;
}