• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/helpers/controller/action/entity/order.php
  • Класс: BitrixSaleHelpersControllerActionEntityOrder
  • Вызов: Order::getOrderProductsByBasket
static function getOrderProductsByBasket(SaleBasketBase $basket): array
{
	$result = [];

	$basketClone = $basket->createClone();

	$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 ($order)
	{
		$discounts = $order->getDiscount();
		$showPrices = $discounts->getShowPrices();
		if (!empty($showPrices['BASKET']))
		{
			foreach ($showPrices['BASKET'] as $basketCode => $data)
			{
				$basketItem = $basketClone->getItemByBasketCode($basketCode);
				if ($basketItem instanceof SaleBasketItemBase)
				{
					$basketItem->setFieldNoDemand('BASE_PRICE', $data['SHOW_BASE_PRICE']);
					$basketItem->setFieldNoDemand('PRICE', $data['SHOW_PRICE']);
					$basketItem->setFieldNoDemand('DISCOUNT_PRICE', $data['SHOW_DISCOUNT']);
				}
			}
		}
	}

	$basketData = static::getBasketProducts($basketClone);
	foreach ($basketClone as $item)
	{
		$result[] = array_merge(
			$basketData[$item->getId()],
			[
				'CATALOG_PRODUCT' => static::getCatalogProduct($basketData[$item->getId()])
			]
		);
	}

	return $result;
}