• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/internals/transferprovidercompatibility.php
  • Класс: BitrixSaleInternalsTransferProviderCompatibility
  • Вызов: TransferProviderCompatibility::reserve
public function reserve(array $products)
{
	$result = new SaleResult();
	$resultList = array();

	foreach ($products as $productId => $productData)
	{
		$productQuantity = 0;
		if (array_key_exists('QUANTITY', $productData))
		{
			$productQuantity = $productData['QUANTITY'];
		}
		elseif (!empty($productData['QUANTITY_LIST']))
		{
			foreach ($productData['QUANTITY_LIST'] as $basketCode => $quantity)
			{
				$productQuantity += $quantity;
			}
		}

		/**
		 * @var SaleProviderBase $product
		 * @var SaleResult $r
		 */
		$r = SaleProvider::reserveProduct($this->getProviderClass(), $productId, $productQuantity);
		if ($r->isSuccess())
		{
			$fields = $r->getData();
			if (!empty($fields))
			{
				$resultList[$productId] = array(
					'QUANTITY_RESERVED' => $fields['QUANTITY']
				);
			}
		}
		else
		{
			$result->addErrors($r->getErrors());
		}

		if ($r->hasWarnings())
		{
			$result->addWarnings($r->getWarnings());
		}
	}

	if (!empty($resultList))
	{
		$result->setData(
			array(
				'RESERVED_PRODUCTS_LIST' => $resultList
			)
		);
	}

	return $result;
}