Модуль добавляет новое действие в правила работы с корзиной: устанавливает скидку из свойства заказа, что позволяет задать динамическую величину скидки для заказа.
Скачайте и установите модуль.
Создайте свойство заказа с типом данных «Число». Установите флаг «Служебное», если свойство заполняете сами на событии заказа. В противном случае, оно будет отображаться в форме оформления заказа, и пользователь сможет самостоятельно указать скидку.
Добавьте правило работы с корзиной, заполнив стандартные настройки (название, приоритеты и прочее).
Добавьте действие «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 часов.
Выходные дни: суббота и воскресенье.