Розробка кастомної логіки знижок 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 охоплює більшість типових сценаріїв. Але коли потрібна скидка, залежна від зовнішньої CRM, від історії замовлень за квартал, від залишків конкурентів або від години доби — стандартні інструменти закінчуються. Тоді пишеться кастомна логіка.

Два рівні розширення

Рівень 1: Кастомний обробник подій кошика

Подія OnBeforeSaleOrderFinalAction дозволяє втрутитися в момент розрахунку кошика до остаточного застосування скидок. Подія OnSaleBasketItemAdd дозволяє перехопити додавання товара.

Приклад: скидка 5% на все замовлення, якщо покупець у цьому місяці вже робив замовлення:

AddEventHandler('sale', 'OnBeforeSaleOrderFinalAction', function(&$order) {
    $userId = $order->getUserId();
    $currentMonth = date('Y-m');

    $prevOrders = \Bitrix\Sale\Order::load(/* фільтр по userId та місяцю */);

    if (!empty($prevOrders)) {
        // застосовуємо програмну скидку
        $basket = $order->getBasket();
        foreach ($basket as $item) {
            $price = $item->getPrice();
            $item->setField('PRICE', $price * 0.95);
            $item->setField('DISCOUNT_PRICE', $price * 0.05);
        }
    }
});

Рівень 2: Кастомний постачальник скидок

Більш чистий підхід — реалізувати інтерфейс \Bitrix\Sale\Discount\DiscountProviderInterface та зареєструвати свого постачальника. Постачальник отримує кошик на вході та повертає список застосованих скидок в стандартному форматі. Стандартні правила з b_sale_discount при цьому продовжують працювати паралельно або замінюються повністю — залежить від конфігурації.

Кастомні умови у конструкторі правил

Розширити список доступних умов у конструкторі маркетингових правил можна без заміни всього механізму. Створюється клас-спадкоємець \Bitrix\Sale\Discount\Actions\Base або умова-спадкоємець \Bitrix\Sale\Discount\Condition\Base:

namespace MyModule\Discount\Condition;

class PreviousOrdersCount extends \Bitrix\Sale\Discount\Condition\Base
{
    public function check(\Bitrix\Sale\Order $order): bool
    {
        // логіка перевірки
    }
}

Клас реєструється через events.php модуля, і в конструкторі правил з'являється нова умова «Кількість попередніх замовлень».

Кастомні скидки з зовнішніх систем

Для інтеграції з зовнішньою CRM або ERP, де зберігаються індивідуальні скидки клієнтів:

  1. При авторизації користувача запитуємо його скидочний профіль з зовнішньої системи
  2. Зберігаємо в сесії або в UF_ полях користувача
  3. Обробник подій кошика читає ці дані та застосовує скидку

Кешування відповіді від зовнішньої системи обов'язково — кожен запит при кожній зміні кошика до зовнішнього API створює неприйнятну затримку. Кешуємо в Redis/Memcached з TTL 15–60 хвилин.

Відладка кастомної логіки скидок

Логування застосованих скидок: в b_sale_order_discount зберігаються всі застосовані до замовлення правила. Для відладки кастомних скидок додаємо запис у цей журнал з ідентифікатором «кастомне правило», щоб у панелі адміністратора було видно, що саме застосувалось.

Строки виконання

Задача Строк
Кастомний обробник подій для одного правила 1–2 дні
Нова умова в конструкторі маркетингових правил 2–3 дні
Повний кастомний постачальник скидок 1–2 тижні
Інтеграція скидок з зовнішньої CRM з кешуванням 3–5 днів