Другие модули на выбор

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

Стоимость: руб.
Этот компонент мы сможете использовать только при наличии лицензии. Подходящие редакции:

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

Скачайте и установите модуль.

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



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



Добавьте действие «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'; }) );
Добавляем товар в корзину и оформляем заказ.



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



Скидка применена, все работает!