Перейти к содержимому

Товары под заказ - продажа при нулевом остатке и сроки

Разбираем продажу того, чего нет на складе: где включается учёт количества, как разрешить заказ при нуле и что показать покупателю вместо «нет в наличии».

Решение

Смотрим настройки количественного учёта:

$product = CCatalogProduct::GetByID($elementId);
printf("учёт=%s можно при нуле=%s количество=%s\n",
$product['QUANTITY_TRACE'], $product['CAN_BUY_ZERO'], $product['QUANTITY']);
// значение D означает «как в настройках модуля», Y и N - решение самого товара

У этих признаков три состояния, а вовсе не два. Значение «по умолчанию» отправляет к общим настройкам модуля, а явные «да» и «нет» решают судьбу товара независимо от них, и путаница между ними даёт самые странные жалобы.

Разрешаем покупку при нулевом остатке:

CCatalogProduct::Update($elementId, [
'QUANTITY_TRACE' => 'Y', // количество учитываем
'CAN_BUY_ZERO' => 'Y', // но покупать разрешаем и при нуле
]);
// у торговых предложений эти признаки задаются отдельно от товара

Учёт количества и запрет покупки - это разные настройки. Товар может честно показывать нулевой остаток и при этом оставаться доступным к заказу: именно так и делают позиции под заказ.

Показываем срок поставки:

$res = CIBlockElement::GetList([], ['IBLOCK_ID' => 5, 'ID' => $elementId], false, false,
['ID', 'PROPERTY_DELIVERY_DAYS']);
$row = $res->Fetch();
printf("под заказ, срок %s дней\n", $row['PROPERTY_DELIVERY_DAYS_VALUE'] ?: '-');

Срок поставки хранят свойством и показывают рядом с кнопкой покупки. Покупатель, понимающий, что товар приедет за неделю, гораздо спокойнее того, кто узнаёт об этом от менеджера после оплаты.

Проверяем поведение корзины:

$basket = \Bitrix\Sale\Basket::loadItemsForFUser(
\Bitrix\Sale\Fuser::getId(), \Bitrix\Main\Context::getCurrent()->getSite());
$result = $basket->getItemByProductId($elementId)?->setField('QUANTITY', 3);
// проверяют покупкой: настройки в форме и поведение корзины расходятся часто
// разрешение покупки при нуле включают на товаре, а не на всём каталоге

Проверяют здесь не настройки в форме, а реальное поведение корзины. Добавление товара при нулевом остатке - единственная надёжная проверка того, что признаки выставлены так, как задумано.

Обмен с учётной системой переписывает признаки вместе с количеством. Позиции под заказ либо помечают на её стороне, либо защищают обработчиком, иначе ночной сеанс вернёт им общий режим.

Схему «под заказ» стоит согласовать с закупкой до включения. Магазин, обещающий неделю и везущий месяц, теряет не одну продажу, а доверие ко всем срокам на сайте разом.

Резерв при нулевом остатке уводит количество в минус. Это нормально для схемы «под заказ», но склад должен об этом знать: отрицательный остаток на витрине выглядит как ошибка данных.

Типичные проблемы

Товар с нулевым остатком нельзя купить.

У него запрещена покупка при нуле, хотя сам учёт количества включён. Разрешение задаётся отдельным признаком в карточке товара.

Товары продаются при пустом складе везде.

Количественный учёт выключен в общих настройках модуля. Без учёта остаток на доступность товара не влияет вовсе.

Настройка товара не действует.

У признака товара стоит значение «по умолчанию». Тогда решают общие настройки модуля, а не карточка товара.

После обмена позиции перестали продаваться.

Учётная система переписала признаки вместе с количеством товара. Схему «под заказ» задают на её стороне либо защищают своим обработчиком.

На витрине отрицательный остаток.

Заказы уводят количество в минус при разрешённой покупке с нулевым остатком. Для витрины такие значения обычно показывают как ноль.

Частые вопросы

Как продавать под заказ только часть каталога?

Признаком у этих товаров, а не общей настройкой модуля. Общая настройка меняет поведение всего каталога сразу.

Показывать ли остаток у товаров под заказ?

Лучше показывать срок поставки вместо числа. Ноль рядом с кнопкой покупки смущает больше, чем помогает.

Что делать с резервом?

Либо не резервировать такие позиции, либо принимать отрицательный остаток. Второе требует договорённости со складом.

Как сообщить покупателю о задержке?

Письмом со сменой статуса заказа и сроком. Молчание до звонка менеджера - самый дорогой вариант.

Смежное

Первоисточник