Данная обработка позволяет предоставлять скидки, например по купонам с указанной суммой, но с условием, что эта сумма будет составлять не более определенного процента от общей суммы чека.
Пример: Обработка подарочного купона на 500р, но если сумма чека меньше 2500р, то скидка будет составлять 20% от суммы.
Обработка учитывает примененные ранее скидки, если находится в группе "Умножение" с меньшим приоритетом.
// Выполняет расчет скидки (наценки)
//
// Параметры:
// СкидкаНаценка - Строка дерева скидок (наценок). Включает результаты проверки условий, способы совместного применения
// Настройки - Структура - Настройки, заданные пользователем в форме настроек внешней обработки
// Товары - Коллекция товаров, для которых требуется применить скидку (наценку)
// ПараметрыРасчета - Структура - Параметры расчета скидок (наценок)
//
// Возвращаемое значение:
// РезультатРасчета - ТаблицаЗначений - результат расчета
//
Функция Рассчитать(СтрокаДерева, Настройки, Товары, ПараметрыРасчета) Экспорт
РезультатРасчета = СкидкиНаценкиСервер.ПустаяТаблицаСкидокСРасшифровкой();
Если Настройки = Неопределено ИЛИ Не ЗначениеЗаполнено(Настройки.ПроцентСкидки) ИЛИ Не ЗначениеЗаполнено(Настройки.ПределСкидки) Тогда
Возврат РезультатРасчета;
КонецЕсли;
//СтрокаДерева.ИспользоватьКратность = Истина;
ЭтоУмножение = СтрокаДерева.ПрименятьУмножениеВРамкахВышестоящейГруппы;
СуммаДокумента = 0;
Для Каждого Товар Из Товары Цикл
СуммаДокумента = СуммаДокумента + СкидкиНаценкиСервер.ОстатокСуммыПоСтроке(СтрокаДерева, Товар, ПараметрыРасчета, ЭтоУмножение);
КонецЦикла;
//расчет суммы скидки
СуммаСкидки = СуммаДокумента * Настройки.ПроцентСкидки / 100;
Если СуммаСкидки > Настройки.ПределСкидки Тогда
СуммаСкидки = Настройки.ПределСкидки;
КонецЕсли;
СкидкиНаценкиСервер.РаспределитьЗначениеСкидкиНаТовары(СтрокаДерева, СуммаСкидки, Товары, РезультатРасчета, ПараметрыРасчета);
Возврат РезультатРасчета;
КонецФункции
Обработка добавляется как обычно в справочник "Дополнительные отчеты и обработки". После добавления обработки, в справочнике "Скидки (наценки)" появится новый тип скидки "Скидка (наценка) процентом не более предельной суммы". Установка параметров скидки производится с помощью кнопки "Настроить", все остальное стандартно.
Обработка разрабатывалась и тестировалась на УТ 11.4.3.126. Платформа 8.3.13.1690.