Каталог решений

Покупка продления купона

Продолжительность:
Общая сумма:
0 руб.
Ваш запрос успешно отправлен!

Я согласен с условиями активации продлений
Продлить
Продолжить покупки

Скидка из свойства заказа через правило работы с корзиной

Модуль добавляет новое действие в правила работы с корзиной: устанавливает скидку из свойства заказа, что позволяет задать динамическую величину скидки для заказа.

Скидка из свойства заказа через правило работы с корзиной

Скидка из свойства заказа через правило работы с корзиной

от Intensa
Скриншоты
Описание

Технические данные

Опубликовано:
05.12.2023
Версия:
1.0.0
Установлено:
Менее 50 раз
Подходящие редакции:
«Малый бизнес», «Бизнес»
Адаптивность:
Да
Поддержка Композита:
Да
Совместимо с Сайты24
Нет
Совместимо с PHP 8.1
Да

Пользовательское соглашение

Описание

Модуль добавляет новое действие в правила работы с корзиной: устанавливает скидку из свойства заказа, что позволяет задать динамическую величину скидки для заказа.

Отзывы ()
0 0
Пока что нет отзывов.
Обсуждения (0)
Здесь пока никто ничего не написал. Будьте первым.
Установка
Скачайте и установите модуль.

Создайте свойство заказа с типом данных «Число». Установите флаг «Служебное», если свойство заполняете сами на событии заказа. В противном случае, оно будет отображаться в форме оформления заказа, и пользователь сможет самостоятельно указать скидку.



Добавьте правило работы с корзиной, заполнив стандартные настройки (название, приоритеты и прочее).



Добавьте действие «Intensa: Применить скидку из свойства заказа».



Укажите тип расчета скидки из списка:
  • % — в свойство записывается процент скидки на корзину заказа (указав «не более» можно ограничить максимальную скидку в количественном выражении),
  • RUB на общую сумму товаров — в свойство записывается фиксированная скидка на корзину заказа,
  • RUB на каждый товар — в свойство записывается фиксированная скидка за каждый товар в корзине.


После создания правила, реализуйте заполнение свойства в форме оформления заказа или на событие компонента sale.order.ajax.

В случае, когда свойство заполняется непосредственно пользователем в форме оформления заказа, для применения скидки необходимо вызвать пересчет заказа BX.Sale.OrderAjaxComponent.sendRequest(). Не забывайте валидировать вводимые значения.

В случае, когда свойство заполняется на событии заказа (рекомендованное OnSaleComponentOrderCreated), не забывайте передавать $arUserResult['CALCULATE_PAYMENT'] = 'Y'.

Пример для события в init.php

Добавляем событие и задаем значение 399, чтобы проверить скидку.

\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'sale',
    'OnSaleComponentOrderCreated',
    (static function(\Bitrix\Sale\Order $order, &$arUserResult, \Bitrix\Main\HttpRequest $request, &$arParams, &$arResult) {
        $propertyCollection = $order->getPropertyCollection();

        $property = $propertyCollection->getItemByOrderPropertyCode('BONUSES');

        if (! $property instanceof \Bitrix\Sale\PropertyValueBase) {
            return;
        }

        $property->setValue(399);
        $arUserResult['CALCULATE_PAYMENT'] = 'Y';
    })
);


Добавляем товар в корзину и оформляем заказ.



Смотрим заказ в административной части.



Скидка применена, все работает!
Поддержка
Поддержка (вопросы, ошибки, идеи) осуществляется по электронной почте support24@intensa.ru

Режим работы: 09:00-18:00 по московскому времени.
Время реакции на обращение: 48 часов.
Выходные дни: суббота и воскресенье.

Другие решения разработчика

Решение добавлено в корзину

Перейдите в корзину и оформите заказ или продолжите покупки
Перейти в корзину
Продолжить покупки