Розробка функціоналу попереднього замовлення на 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Розробка функціоналу попереднього замовлення на 1С-Бітрікс
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Розробка функціоналу передзамовлення на 1С-Bitrix

Товар ще не поступив на склад, але карточка вже є в каталозі. Стандартна поведінка Bitrix — кнопка «Немає в наявності» й сповіщення про поступлення. Це втрачає гарячого клієнта: він хоче купити зараз, а не отримати листа через тиждень. Передзамовлення розв'язує завдання: клієнт оформляє замовлення на відсутній товар, фіксує ціну й місце в черзі, магазин отримує прогнозований попит.

Чим передзамовлення відрізняється від «Сповіщення про поступлення»

Модуль catalog.subscribe у Bitrix — це підписка на наявність. Користувач залишає email, при зміні CATALOG_AVAILABLE = Y отримує лист. Ніякого замовлення, ніякої фіксації ціни, ніякої черги.

Передзамовлення — це повноцінне замовлення зі спеціальним статусом. Товар резервується за клієнтом, оплата може бути повною, частковою (задаток) або відкладеною. Коли товар поступає — замовлення переводиться в обробку.

Механіка на рівні каталогу

Управління передзамовленням починається з властивості товара. Створюємо властивість інфоблока PREORDER_AVAILABLE (тип: список, значення: Y/N). Вона визначає, доступний лі товар для передзамовлення, коли CATALOG_AVAILABLE = N.

У шаблоні catalog.element логіка кнопки змінюється:

  • Якщо CATALOG_AVAILABLE = Y — стандартна «Купити».
  • Якщо CATALOG_AVAILABLE = N й PREORDER_AVAILABLE = Y — кнопка «Передзамовлення».
  • Якщо обидва N — «Немає в наявності» + підписка.

Кнопка «Передзамовлення» додає товар в кошик з міткою. Міцку зберігаємо у властивості елемента кошика: \Bitrix\Sale\BasketItem::setField('PROPS', ...) — додаємо властивість IS_PREORDER = Y.

Обхід перевірки наявності

Головна технічна проблема: Bitrix не дозволяє додати в кошик товар з нульовим залишком. Метод \Bitrix\Catalog\Product\Basket::addProduct() перевіряє CATALOG_AVAILABLE й повертає помилку.

Два підходи:

1. Віртуальний склад передзамовлень. Створюємо окремий склад у Магазин → Склади з назвою «Передзамовлення». Коли товар помічений як доступний для передзамовлення — встановлюємо на цьому складі кількість, рівну ліміту передзамовлень (наприклад, 100). Товар стає CATALOG_AVAILABLE = Y, але реальний склад пуст. При обробці замовлення менеджер бачить, що товар зарезервований на складі «Передзамовлення», й розуміє ситуацію.

Перевага: не потрібно модифікувати ядро. Працює зі стандартним оформленням замовлення. Недолік: спотворює залишки в звітах, потребує дисципліни при обміні з 1С.

2. Обробник события. Підписуємось на OnBeforeBasketAdd або OnSaleBasketItemBeforeSaved й перехоплюємо перевірку наявності. Якщо товар помічений PREORDER_AVAILABLE = Y — пропускаємо валідацію залишків. Цей спосіб чистіший, але потребує тестування з кожним оновленням Bitrix, так як механізм перевірки наявності змінювався між версіями модуля sale.

Статуси замовлень

Для передзамовлень створюємо додаткові статуси у Магазин → Статуси замовлень:

Код Назва Описання
PP Передзамовлення прийнято Замовлення створено, товар відсутній
PW Очікування поставки Товар замовлено у постачальника
PR Товар поступив Можна переводити в збірку

Автоматизація переходу PP → PR реалізується через обробник OnStoreProductUpdate. При зміні залишку на основному складі перевіряємо, є лі замовлення зі статусом PP з цим товаром. Якщо залишку достатньо — змінюємо статус на PR й відправляємо сповіщення клієнту.

Оплата передзамовлення

Три стратегії:

Повна передоплата. Клієнт платить одразу. Проста схема, але ризикована для покупця — якщо поставка зійде нанівець, потрібен повернення.

Задаток. При оформленні передзамовлення створюємо оплату на фіксовану суму (наприклад, 10-20% від вартості). Реалізується через кастомне правило кошика або через створення двох Payment у замовленні: перший — задаток (активний), другий — решта (відкладений). Метод \Bitrix\Sale\Payment::setField('SUM', $depositAmount).

Оплата при поступленні. Замовлення створюється без оплати. Коли товар приходить — менеджер активує платіж, клієнт отримує посилання на оплату. Для онлайн-оплати використовуйте метод \Bitrix\Sale\PaySystem\Service::initiatePay(), який генерує платіжну форму.

Ліміти й черга

Без лімітів передзамовлення перетворюється на проблему: 500 клієнтів оформили передзамовлення, а поставка — 50 одиниць. Ліміт задається через властивість товара PREORDER_LIMIT й перевіряється при додаванні в кошик. Поточна кількість передзамовлень лічиться запитом до b_sale_basket з фільтром за властивістю IS_PREORDER = Y й привязкою до незавершених замовлень.

Черга формується за датою створення замовлення. При поступленні товара пріоритет надається ранніх замовленням. Реалізується сортуванням ORDER BY DATE_INSERT ASC при виборі передзамовлень для переводу в статус PR.

Строки

Масштаб Що входить Строк
Базовий Кнопка передзамовлення, віртуальний склад, статуси 4-5 днів
Повний Задаток, автосмена статусів, ліміти, сповіщення, інтеграція з 1С 8-12 днів