Разделение нехватающего количества товара в корзине на наличие и предзаказ в 1С-Битрикс

Реализовали в 1С-Битрикс интересный функционал по разделению товаров в корзине на наличие и предзаказ.

Задача была такая: В Интернет-магазине есть ряд товаров, которые хотелось бы продавать больше, чем на складе. Например, на складе продавца панелей ПВХ всего 24 шт., но продавец готов продать гораздо больше, т.к. может оперативно докупить на оптовом складе необходимое количество этих панелей и отгрузить их покупателю. Но необходимо предупредить об этом покупателя еще до оформления заказа. Для этого в корзине необходимо разделить позиции в наличии и сколько будет по предзаказу.

В результате мы реализовали этот функционал и в корзине покупателя разделенные товары выглядят так:

Разделение товара в корзине

Рекомендации для тех кто хочет самостоятельно реализовать этот функционал:

  1. У товаров в 1С-Битрикс есть настройка "Разрешить покупку при отсутствии товара (включая разрешение отрицательного количества товара)", которую можно перевести в "Да". Таким образом мы знаем какие товары можно делить на в наличии и предзаказ и внутренние механизмы Битрикса не мешают нам продавать этот товар в минус.
  2. Все обработки и разделения товаров необходимо написать и повесить на обработку событий добавления в корзину. Тут главное не уйти в бесконечный цикл при добавлении товаров из своего же обработчика.
  3. Чтобы добавить предзаказ в корзину отдельной позицией мы использовали добавление товара с дополнительными параметрами.
  4. В самой корзине необходимо модифицировать шаблон и на основании дополнительного параметра помечать, что эта позиция предзаказ.