• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/helpers/controller/action/entity/order.php
  • Класс: BitrixSaleHelpersControllerActionEntityOrder
  • Вызов: Order::getOrderProductByBasketItem
static function getOrderProductByBasketItem(SaleBasketItemBase $basketItem): array
{
	$basket = $basketItem->getBasket();
	$basketClone = $basket->createClone();
	$calculateBasketItem = $basketClone->getItemByBasketCode($basketItem->getBasketCode());

	$order = $basketClone->getOrder();
	if (!$order)
	{
		$registry = SaleRegistry::getInstance(SaleRegistry::REGISTRY_TYPE_ORDER);
		/** @var SaleOrder $orderClassName */
		$orderClassName = $registry->getOrderClassName();
		$order = $orderClassName::create($basketClone->getSiteId());
		$order->setBasket($basketClone);
	}

	if ($calculateBasketItem && $order)
	{
		$discounts = $order->getDiscount();
		$showPrices = $discounts->getShowPrices();
		if (!empty($showPrices['BASKET']))
		{
			$data = $showPrices['BASKET'][$calculateBasketItem->getBasketCode()] ?? null;
			if ($data)
			{
				$calculateBasketItem->setFieldNoDemand('BASE_PRICE', $data['SHOW_BASE_PRICE']);
				$calculateBasketItem->setFieldNoDemand('PRICE', $data['SHOW_PRICE']);
				$calculateBasketItem->setFieldNoDemand('DISCOUNT_PRICE', $data['SHOW_DISCOUNT']);
			}
		}
	}

	$basketItemData = static::getBasketProduct($calculateBasketItem);
	return array_merge(
		$basketItemData,
		[
			'CATALOG_PRODUCT' => static::getCatalogProduct($basketItemData)
		]
	);
}