• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/saleproviderbase.php
  • Класс: BitrixSaleSaleProviderBase
  • Вызов: SaleProviderBase::tryUnship
public function tryUnship(array $products);

/**
 * @param array $products
 *
 * @return SaleResult
 */
abstract public function ship(array $products);

/**
 * @param array $products
 *
 * @return SaleResult
 */
abstract public function unship(array $products);

/**
 * @param array $products
 *
 * @return SaleResult
 */
abstract public function getBundleItems(array $products);

/**
 * @param array $products
 *
 * @return SaleResult
 */
abstract public function reserve(array $products);

/**
 * @param array $products
 *
 * @return SaleResult
 */
abstract public function getAvailableQuantity(array $products);

/**
 * @param array $products
 *
 * @return SaleResult
 */
abstract public function deliver(array $products);

/**
 * @param array $products
 *
 * @return SaleResult
 */
abstract public function viewProduct(array $products);

/**
 * @param array $products
 *
 * @return SaleResult
 */
abstract public function getProductListStores(array $products);

/**
 * @param array $items
 *
 * @return SaleResult
 */
abstract public function checkBarcode(array $items);

/**
 * @param array $products
 *
 * @return Result
 */
abstract public function getAvailableQuantityAndPrice(array $products);

public function getAvailableQuantityByStore(array $products): Result
{
	$result = $this->getAvailableQuantity($products);
	if (!$result->isSuccess())
	{
		return $result;
	}

	$data = $result->getData();
	if (empty($data) || empty($data[self::FLAT_AVAILABLE_QUANTITY_LIST]))
	{
		return $result;
	}
	if (!is_array($data[self::FLAT_AVAILABLE_QUANTITY_LIST]))
	{
		$result->setData([]);

		return $result;
	}

	$quantityByStore = [];

	foreach ($products as $productId => $item)
	{
		$quantityByStore[$productId] = $this->distributeQuantityByStore($item['QUANTITY_LIST_BY_STORE'], $data[self::FLAT_AVAILABLE_QUANTITY_LIST][$productId]);
	}

	$result->setData([
		self::STORE_AVAILABLE_QUANTITY_LIST => $quantityByStore
	]);

	return $result;
}