tryUnship
\Bitrix\Sale\Result public \Bitrix\Catalog\Product\CatalogProvider::tryUnship( array $products );
Метод проверяет, можно ли вернуть товары на остаток при отмене отгрузки. При включенном складском учете он проверяет складские записи и количества, иначе — общее количество товара. Остатки метод не изменяет. Нестатический метод.
Параметры
| Параметр | Описание |
|---|---|
$products | Массив товаров с идентификаторами товаров в ключах. Передайте положительное количество и складские данные отгрузки, если включен складской учет |
Возвращаемое значение
Метод возвращает объект \Bitrix\Sale\Result. Ключ PRODUCTS_LIST_SHIPPED содержит логический результат проверки по товарам. При ошибке проверки общего количества метод возвращает объект результата внутренней проверки. Ошибки складской проверки не переносятся в итоговый результат: в этом случае он может быть успешным и не содержать PRODUCTS_LIST_SHIPPED. Проверяйте наличие и значение записи нужного товара.
Исключения
При складской проверке метод выбрасывает \Bitrix\Main\ArgumentNullException, если в контексте провайдера отсутствует непустой SITE_ID.
Пример
<?php
use Bitrix\Catalog\Config\State;
use Bitrix\Catalog\Product\CatalogProvider;
use Bitrix\Main\Loader;
if (!Loader::includeModule('catalog') || !Loader::includeModule('sale'))
{
throw new RuntimeException('Не удалось подключить модули catalog и sale');
}
if (State::isUsedInventoryManagement())
{
echo 'Пример предназначен для работы без складского учета';
return;
}
// Идентификатор ранее отгруженного товара
$productId = 123;
$provider = new CatalogProvider(['SITE_ID' => SITE_ID]);
$result = $provider->tryUnship([
$productId => [
'PRODUCT_ID' => $productId,
'QUANTITY' => 1,
],
]);
if (!$result->isSuccess())
{
echo implode(PHP_EOL, $result->getErrorMessages());
return;
}
print_r($result->getData()['PRODUCTS_LIST_SHIPPED'][$productId] ?? false);