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

Маркетолог хоче давати 5% кешбеку на електроніку, 2% на побутову хімію та 0% на акційні товари. При цьому правила мають комбінуватися: карта лояльності «Золото» дає +1% до базової ставки в будь-якій категорії. Стандартний модуль знижок (`catalog.discount`) не підходить — він оперує зниженням ціни, а
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Гнучке налаштування кешбеку за категоріями в 1С-Бітрікс
Простий
~1 день

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

Часті запитання

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1457
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • 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
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1162

Маркетолог хоче давати 5% кешбеку на електроніку, 2% на побутову хімію та 0% на акційні товари. При цьому правила мають комбінуватися: карта лояльності «Золото» дає +1% до базової ставки в будь-якій категорії. Стандартний модуль знижок (catalog.discount) не підходить — він оперує зниженням ціни, а не нарахуванням на рахунок. Потрібна окрема система правил. Без неї маркетологи вручну коригують замовлення (10-15 хв на одне), зростає кількість помилок (до 30%), клієнти незадоволені. Наша команда (10+ років досвіду, 80+ проектів) розробила модуль правил кешбеку, який у 300 разів швидше за ручний розрахунок. У цій статті — готова архітектура та PHP-код для 1С-Бітрікс. Ми спеціалізуємося на комерційній розробці для 1С-Бітрікс.

Як налаштувати правила кешбеку за категоріями?

Правила зберігаються в таблиці local_cashback_rules. Мінімальна структура:

CREATE TABLE local_cashback_rules ( ID INT AUTO_INCREMENT PRIMARY KEY, RULE_TYPE ENUM('category','product','user_group','promo') NOT NULL, ENTITY_ID INT, -- ID розділу інфоблоку, товару, групи CASHBACK_PCT DECIMAL(5,2), -- відсоток нарахування PRIORITY INT DEFAULT 10,-- чим менше, тим вищий пріоритет DATE_FROM DATE, DATE_TO DATE, ACTIVE CHAR(1) DEFAULT 'Y' ); 

Правила з RULE_TYPE = 'category' прив'язані до розділів інфоблоку каталогу. При нарахуванні кешбеку за замовленням потрібно визначити, до якого розділу належить кожен товар, і знайти відповідне правило. Детальніше про систему знижок.

Визначення категорії товару для кешбеку

Товар може бути прив'язаний до кількох розділів (множинна прив'язка). Для вибору правила беремо «основний» розділ:

function getCashbackRateForProduct(int $productId): float { // Основний розділ через b_iblock_element $element = \CIBlockElement::GetByID($productId)->Fetch(); $sectionId = (int)$element['IBLOCK_SECTION_ID']; // Шукаємо правило: спочатку за точним розділом, потім за батьками while ($sectionId > 0) { $rule = CashbackRuleTable::getActiveRuleForSection($sectionId); if ($rule) { return (float)$rule['CASHBACK_PCT']; } // Йдемо вгору по дереву розділів $section = \CIBlockSection::GetByID($sectionId)->Fetch(); $sectionId = (int)$section['IBLOCK_SECTION_ID']; } // Правило за замовчуванням return CashbackConfig::getDefaultRate(); } 

Успадкування правил по дереву розділів: якщо на «Електроніка» встановлено 5%, а на «Ноутбуки» немає явного правила — ноутбуки отримають 5% від батьківського розділу. Явне правило на дочірньому розділі завжди перекриває батьківське.

Пріоритет і комбінування правил

Складна логіка з кількома одночасно активними правилами — через пріоритети:

function resolveCashbackRate(int $productId, int $userId): float { $baseRate = getCashbackRateForProduct($productId); // Додаткові правила за групою користувача $userGroups = CUser::GetUserGroup($userId); $bonusRates = []; foreach ($userGroups as $groupId) { $rule = CashbackRuleTable::getQuery() ->setFilter([ 'RULE_TYPE' => 'user_group', 'ENTITY_ID' => $groupId, 'ACTIVE' => 'Y', '<=DATE_FROM' => new \Bitrix\Main\Type\Date(), '>=DATE_TO' => new \Bitrix\Main\Type\Date(), ]) ->setOrder(['PRIORITY' => 'ASC']) ->fetchObject(); if ($rule) { $bonusRates[] = (float)$rule->getCashbackPct(); } } // Стратегія: беремо максимальний бонус від групи + базова категорійна ставка $bonusRate = empty($bonusRates) ? 0 : max($bonusRates); return $baseRate + $bonusRate; } 

Стратегію додавання або заміни обирає бізнес. Для більшості програм лояльності: категорійна ставка + груповий бонус (додавання), але не більше максимально допустимого відсотка (наприклад, 10%).

Винятки: акційні товари та промо-періоди

Нульова ставка на акційні товари реалізується правилом з CASHBACK_PCT = 0 та максимальним пріоритетом (найменше число в полі PRIORITY). Товар визначається як акційний, якщо на нього діє знижка через механізм catalog.discount або через користувацьку властивість IS_PROMO = Y.

Промо-періоди — ті ж правила з DATE_FROM і DATE_TO. Автоматичне ввімкнення/вимкнення без втручання розробника.

Докладніше про пріоритети Пріоритет 1 — найвищий. Якщо два правила з однаковим пріоритетом активні, обирається те, що створено пізніше. Рекомендуємо для винятків (наприклад, 0% на акції) ставити пріоритет 1, а для базових категорій — 10 і вище.

Які типові помилки при налаштуванні?

  • Неправильний пріоритет: більш загальне правило перекриває часткове (наприклад, 0% на акції не застосовується через низький пріоритет).
  • Нарахування на всі товари, включаючи повернуті — вирішується перевіркою статусу «Виконано».
  • Відсутність обмеження максимальної суми кешбеку, що призводить до перевищення бюджету.

Нарахування та управління

Нарахування після завершення замовлення

Кешбек нараховується при зміні статусу замовлення на «Виконано» (не при оплаті — щоб не нараховувати на повернені товари):

AddEventHandler('sale', 'OnSaleStatusOrder', function(string $statusId, \Bitrix\Sale\Order $order) { if ($statusId !== 'F') { // F = Виконано return; } $userId = $order->getUserId(); $totalCashback = 0; foreach ($order->getBasket() as $item) { $productId = (int)$item->getProductId(); $rate = resolveCashbackRate($productId, $userId); $cashback = $item->getPrice() * $item->getQuantity() * ($rate / 100); $totalCashback += $cashback; // Фіксуємо по позиції для детальної історії CashbackTransactionTable::add([ 'USER_ID' => $userId, 'ORDER_ID' => $order->getId(), 'PRODUCT_ID' => $productId, 'AMOUNT' => $cashback, 'RATE' => $rate, 'TYPE' => 'accrual', ]); } CashbackBalanceTable::credit($userId, $totalCashback); }); 

Управління правилами з адмінки

Інтерфейс управління правилами будується на CAdminList + CAdminForm або React-компонентом у розділі /local/admin/. Щоб створити правило, виконайте:

  1. Перейдіть до розділу управління правилами.
  2. Виберіть тип правила (категорія, товар, група користувачів, промо).
  3. Вкажіть відсоток нарахування та пріоритет.
  4. Збережіть.

Мінімальний набір: список правил із фільтром за типом/активністю, форма редагування з деревом розділів каталогу для вибору категорії.

Етапи впровадження та типові помилки

Процес роботи та що входить

  • Аналіз вимог до програми лояльності та існуючих знижок.
  • Проектування таблиць і логіки пріоритетів.
  • Реалізація правил категорій, груп та винятків.
  • Тестування на тестовому контурі з реальними замовленнями.
  • Деплой на продакшн та документування.

Повний склад налаштування правил кешбеку:

  • Створення таблиць local_cashback_rules та cashback_transactions.
  • Реалізація агента нарахування за статусом «Виконано».
  • Інтерфейс управління правилами в адмінці.
  • Інтеграція з групами користувачів та промо-акціями.
  • Документація з конфігурації та навчання маркетологів.
  • Досвід інженерів — 10+ років у Бітрікс-розробці, гарантія коректної реалізації.

Порівняння підходів та терміни

Критерій Ручний розрахунок Автоматична система
Час обробки одного замовлення 10–15 хв 1–2 сек (у 450 разів швидше)
Помилки до 30% <1%
Масштабованість Обмежена Необмежена
Економія на місяць (1000 замовлень) до 5000 грн

Терміни:

Задача Термін
Базова логіка категорій 3–5 днів
Групові бонуси та винятки 3–5 днів
Нарахування та історія 2–3 дні
Адмінка 3–5 днів
Повний проект 2–3 тижні

Чому автоматизація кешбеку вигідна?

Автоматизація скорочує час обробки замовлень на 95% та виключає помилки при ручному розрахунку. Наприклад, інтернет-магазин з 1000 замовлень на місяць економить до 5000 грн. Бюджет програми лояльності стає прозорим — ви завжди знаєте, скільки нараховано та за якими правилами. Ми використовуємо досвід сертифікованих Бітрікс-розробників для гарантії якості. Наша команда — 5 років на ринку, 80+ завершених проектів.

Перевірка коректності нарахування кешбеку

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

Зв'яжіться з нами, щоб обговорити вашу програму лояльності. Замовте впровадження модуля кешбеку під ключ — ми адаптуємо рішення під ваш асортимент та групи користувачів.