Каталог решений - Модификация автоматической скидки для ценовых групп

Модификация автоматической скидки для ценовых групп

Модификация автоматической скидки для ценовых групп

В наличии

В конфигурации УТП 1.2 для Украины есть возможность давать скидку как на сумму покупки, так и на количество товара. Последнее реализовано двумя способами — через прямой выбор позиции Номенклатуры или через «Ценовую группа» (установку признака в элементе Номенклатуры с соотношением одна позиция — одна группа).

Мне такое исполнение показалась неудобным — зачем создавать скидки для Ценовых групп, а затем пытаться узнать, а кто же в этой группе находится, если проще установить скидку напрямую — ведь при расчете скидок объединения по признаку «Ценовая группа» не происходит — учитывается количество каждой позиции.

Описанные ниже изменения позволяют начислять скидку на всю группу, используя суммарное количество товара в одной ценовой группе.

Категория:

Описание

1. Добавляем Перечисление.УсловияСкидкиНаценки.ПоГрупповомуКоличествуТовара
Синоним — «Кол-во в ценовой группе товаров документа превысило»

2. Документ.УстановкаСкидокНоменклатуры
   — МодульОбъекта
         Функция РассчитыватьАвтоматическиеСкидки(ТекВид) , стр.74
       Дополняем  условие проверкой

ИначеЕсли ТекВид = Перечисления.УсловияСкидкиНаценки.ПоГрупповомуКоличествуТовара Тогда   Результат = ИспользованиеСкидок.ИспользоватьСкидкиПоКоличествуТовара;

   — ФормаДокумента
     Процедура ПередОткрытием() , стр.467
      Добавить строку

ЭлементыФормы.Условие.СписокВыбора.Добавить(Перечисления.УсловияСкидкиНаценки.ПоГрупповомуКоличествуТовара);  

3. Общий модуль.ОбработкаТабличныхЧастей
   Процедура РассчитатьСкидкиПриПродаже
    Дополнить кодом,  стр.1215

УсловиеГруппКво = Перечисления.УсловияСкидкиНаценки.ПоГрупповомуКоличествуТовара;

стр.1220

ТаблицаКоличестваГруппТоваров = ТаблицаТоваров.Скопировать( , Номенклатура, ХарактеристикаНоменклатуры, Количество, Коэффициент");
ТаблицаКоличестваГруппТоваров.Колонки.Добавить("ЦеноваяГруппа",,"Группа");
Для Каждого СтрокаТЧ Из ТаблицаКоличестваГруппТоваров Цикл
СтрокаТЧ.ЦеноваяГруппа=СтрокаТЧ.Номенклатура.ЦеноваяГруппа;
КонецЦикла;

ТаблицаКоличестваГруппТоваров.Колонки.Удалить("Номенклатура");
ТаблицаКоличестваГруппТоваров.Свернуть("Номенклатура, ХарактеристикаНоменклатуры", "Количество");
ТаблицаКоличестваГруппТоваров.Индексы.Добавить("Номенклатура, ХарактеристикаНоменклатуры");
СтруктураПоискаГруппКоличества = Новый Структура("Номенклатура, ХарактеристикаНоменклатуры");

    стр. 1275

СтруктураПоискаГруппКоличества.ЦеноваяГруппа = СтрокаТЧ.Номенклатура.ЦеноваяГруппа;
СтруктураПоискаГруппКоличества.ХарактеристикаНоменклатуры = СтрокаТЧ.ХарактеристикаНоменклатуры;

Если (СтрокаСкидок.НУсловие=УсловиеГруппКво) ИЛИ (СокрЛП(СтрокаСкидок.НУсловие)="") Тогда // Последнее условие для промахнувшихся с описанием скидки
КоличествоНоменклатуры = НайтиСтрокуТабЧасти(ТаблицаКоличестваГруппТоваров, СтруктураПоискаГруппКоличества).Количество;
Иначе
КоличествоНоменклатуры = НайтиСтрокуТабЧасти(ТаблицаКоличестваТоваров, СтруктураПоискаКоличества).Количество;
КонецЕсли;

Если
((СтрокаСкидок.НУсловие = УсловиеКолво ИЛИ СтрокаСкидок.НУсловие = УсловиеГруппКво) И СтрокаСкидок.НЗначениеУсловия < КоличествоНоменклатуры Или (СтрокаСкидок.НУсловие <> УсловиеКолво И СтрокаСкидок.НУсловие <> УсловиеГруппКво))
И
((СтрокаСкидок.ЦУсловие = УсловиеКолво ИЛИ СтрокаСкидок.НУсловие = УсловиеГруппКво)И СтрокаСкидок.ЦЗначениеУсловия < КоличествоНоменклатуры Или (СтрокаСкидок.ЦУсловие <> УсловиеКолво И СтрокаСкидок.ЦУсловие <> УсловиеГруппКво))
Тогда

  Указаны номера строк для стандартной конфигурации 1.2.9.1

  Полностью не выкладываю, т.к. у меня есть целый ряд изменений, адаптированных под конкретные нужды заказчика.

  Одновременно использовать стандартный механизм скидок и с ценовыми группами по одним и тем же позициям не рекомендую — запутаетесь…

has been added to your cart:
Оформление заказа