Налаштування резервування товару в конкретному магазині 1С-Бітрікс

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

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

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

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

  • 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С-Бітрікс

Резервування дозволяє покупцю зафіксувати товар у вибраному магазині до моменту оплати або візиту. Залишок зменшується віртуально — інші покупці бачать знижену кількість, хоча фізично товар ще на полиці. Це окреме завдання від BOPIS: можна резервувати без подальшого онлайн-замовлення, просто «відкласти» для візиту.

Модель резервування в Бітрікс

Бітрікс має вбудований механізм резервування через таблицю b_catalog_store_product_reserve. Поля:

  • STORE_ID — ID складу з b_catalog_store
  • PRODUCT_ID — ID товару
  • AMOUNT — зарезервована кількість
  • ORDER_ID — прив'язка до замовлення (якщо резерв від замовлення)
  • DATE_RESERVE — дата створення резерву
  • DATE_RESERVE_END — термін дії резерву

Доступна кількість = b_catalog_store_product.AMOUNTSUM(b_catalog_store_product_reserve.AMOUNT) для даного складу і товару.

Створення резерву через API

CModule::IncludeModule('catalog');

$result = CCatalogStoreProductReserve::Add([
    'STORE_ID'         => $storeId,
    'PRODUCT_ID'       => $productId,
    'AMOUNT'           => $quantity,
    'DATE_RESERVE'     => new CDBDateTime(),
    'DATE_RESERVE_END' => new CDBDateTime(time() + 86400 * 3), // 3 дні
]);

При знятті резерву (закінчився термін, покупець скасував) викликається CCatalogStoreProductReserve::Delete($reserveId).

Форма резервування на сайті

На картці товару розміщується кнопка «Зарезервувати в магазині». Форма містить:

  • Вибір магазину зі списку з актуальними залишками
  • Кількість (з перевіркою доступного залишку)
  • Контактні дані (ім'я, телефон) для сповіщення
  • Термін резервування (зазвичай 24–48 годин)

Запит доступного залишку для конкретного складу:

$available = CCatalogStoreProduct::GetList(
    [],
    ['STORE_ID' => $storeId, 'PRODUCT_ID' => $productId],
    false, false,
    ['AMOUNT']
)->Fetch()['AMOUNT'];

$reserved = array_sum(array_column(
    CCatalogStoreProductReserve::GetList(
        [], ['STORE_ID' => $storeId, 'PRODUCT_ID' => $productId]
    )->fetchAll(), 'AMOUNT'
));

$canReserve = $available - $reserved;

Сповіщення за життєвим циклом резерву

Подія Кому Канал
Резерв створено Покупець SMS + email
Резерв створено Менеджер магазину email
Резерв закінчується через 2 години Покупець SMS
Резерв знято (закінчився) Менеджер системне сповіщення

Нагадування реалізуються через агент, який раз на 30 хвилин перевіряє DATE_RESERVE_END і надсилає сповіщення через CEvent::Send() або SMS-шлюз.

Автоматичне зняття резерву

Агент для звільнення прострочених резервів:

$expiredReserves = CCatalogStoreProductReserve::GetList(
    [],
    ['<DATE_RESERVE_END' => date('Y-m-d H:i:s')]
);
while ($reserve = $expiredReserves->Fetch()) {
    CCatalogStoreProductReserve::Delete($reserve['ID']);
    // Сповістити менеджера
}

Адміністративний інтерфейс

Менеджер магазину має бачити список активних резервів свого складу: товар, кількість, контакт покупця, термін. Інтерфейс будується на основі AdminListTable або як окрема сторінка в розділі «Склади».

Що входить у налаштування

  • Форма резервування з вибором магазину та перевіркою залишків
  • Створення резерву через CCatalogStoreProductReserve::Add()
  • Агент для автоматичного зняття прострочених резервів
  • Сповіщення покупцю та менеджеру через SMS і email
  • Адміністративний інтерфейс управління резервами для співробітників