• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/helpers/admin/product.php
  • Класс: BitrixSaleHelpersAdminProduct
  • Вызов: Product::getProviderData
static function getProviderData(array $productsData, $siteId, $userId = null, array &$errors = array())
{
	if(empty($productsData))
		return array();

	if($siteId == '')
		return array();

	$context = array(
		'SITE_ID' => $siteId
	);

	$registry = SaleRegistry::getInstance(SaleRegistry::REGISTRY_TYPE_ORDER);
	/** @var SaleOrder $orderClass */
	$orderClass = $registry->getOrderClassName();

	$order = $orderClass::create($siteId);

	if(intval($userId) > 0)
	{
		$order->setFieldNoDemand("USER_ID", intval($userId));
		$context['USER_ID'] = $userId;
	}

	/** @var SaleBasket $orderClass */
	$basketClass = $registry->getBasketClassName();
	$basket = $basketClass::create($siteId);
	$order->setBasket($basket);

	if(intval($userId) > 0)
	{
		$fUserId = Fuser::getIdByUserId(intval($userId));
		$basket->setFUserId($fUserId);
	}

	foreach($productsData as $productFields)
	{
		if (isset($productFields['OFFER_ID']))
		{
			$productFields['PRODUCT_ID'] = $productFields['OFFER_ID'];
		}

		$r = CatalogProductBasket::addProductToBasket($basket, $productFields, $context);
		if (!$r->isSuccess())
		{
			$errors = $r->getErrorMessages();
			return null;
		}
	}

	return Provider::getProductData($basket, array("PRICE", "AVAILABLE_QUANTITY"));
}