Убираем суммирование автоматической и ручной скидки в РМК Розница 2.1
В Рознице 2.1.7.9 в РМК.
Добавляем в ТЧ товар1, товар2 и товар3.
На товар1 назначаем ручную скидку.
На товар2 назначаем вручную другую цену.
Товар3 оставляем без изменений.
Выбираем дисконтную карту и жмём "Расчет скидок".
В типовой конфигурации начнется пересчет автоматических скидок и последующее их сложение с введенными вручную скидками. Плюс автоматические скидки срабатывают и на товары с измененной вручную ценой.
Нам так было неудобно и не очень логично, поэтому сделал, чтобы автоматическая скидка назначалась только на товары, цены которых мы никак не трогали.
Итак.
1) В обработке РМКУправляемыйРежим, в табличную часть Товары добавляем новый реквизит "ЦенаИзмененаВручную" с типом Булево.
В форме обработки в ТЧ можно добавить столбец с этим реквизитом, для удобства.
2) В модуле формы в процедуре ТоварыЦенаПриИзменении, перед ОбновитьФорму();
добавляем строку
3) Далее переходим в общий модуль СкидкиНаценкиСервер и идем в процедуру ПрименитьРезультатРасчетаСкидокКОбъекту
И в конце, добавляем условие к расчету автоматических скидок
Теперь работает как надо.
p.s.: не нашел решение в интернете, а вопросы видел. пусть тут полежит, может пригодится кому.
Добавляем в ТЧ товар1, товар2 и товар3.
На товар1 назначаем ручную скидку.
На товар2 назначаем вручную другую цену.
Товар3 оставляем без изменений.
Выбираем дисконтную карту и жмём "Расчет скидок".
В типовой конфигурации начнется пересчет автоматических скидок и последующее их сложение с введенными вручную скидками. Плюс автоматические скидки срабатывают и на товары с измененной вручную ценой.
Нам так было неудобно и не очень логично, поэтому сделал, чтобы автоматическая скидка назначалась только на товары, цены которых мы никак не трогали.
Итак.
1) В обработке РМКУправляемыйРежим, в табличную часть Товары добавляем новый реквизит "ЦенаИзмененаВручную" с типом Булево.
В форме обработки в ТЧ можно добавить столбец с этим реквизитом, для удобства.
2) В модуле формы в процедуре ТоварыЦенаПриИзменении, перед ОбновитьФорму();
добавляем строку
СтрокаТабличнойЧасти.ЦенаИзмененаВручную = Истина;
3) Далее переходим в общий модуль СкидкиНаценкиСервер и идем в процедуру ПрименитьРезультатРасчетаСкидокКОбъекту
И в конце, добавляем условие к расчету автоматических скидок
Если СтрокаТЧ.ПроцентРучнойСкидки = 0 И СтрокаТЧ.ЦенаИзмененаВручную = ЛОЖЬ Тогда //добавляем эту строку
СуммаСкидки = СуммаАвтоматическойСкидки + СтрокаТЧ.СуммаРучнойСкидки + ?(ЕстьБонусы, СтрокаТЧ.СуммаСкидкиОплатыБонусом, 0);
СтрокаТЧ.ПроцентАвтоматическойСкидки = ?(СуммаБезСкидки = 0, 0 , 100 * СуммаАвтоматическойСкидки / СуммаБезСкидки);
СтрокаТЧ.Сумма = СуммаБезСкидки - ?(СуммаСкидки > СуммаБезСкидки, СуммаБезСкидки, СуммаСкидки);
СтрокаТЧ.СуммаНДС = РассчитатьСуммуНДС(СтрокаТЧ.Сумма, СтрокаТЧ.СтавкаНДС, Объект.ЦенаВключаетНДС);
КонецЕсли // и эту
ПоказатьТеперь работает как надо.
p.s.: не нашел решение в интернете, а вопросы видел. пусть тут полежит, может пригодится кому.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Извините, я посмотрел Ваш алгоритм, и правильно ли я понял, что в Вашем примере автоматическая скидка будет перерасчитана для товаров 1 и 3, а товар 2 будет пропущен, т.к. у него изменилась цена?
Прочитав тему "Убираем суммирование автоматической и ручной скидки" я думал, что речь идёт о ручных скидках, т.е. о товаре 1.
Прочитав тему "Убираем суммирование автоматической и ручной скидки" я думал, что речь идёт о ручных скидках, т.е. о товаре 1.
(2) KulSer, в моем случае код расчета автоматических скидок не выполняется при следующих условиях
т.е. или ручную скидку проставили, или вручную изменили цену.
(3) pis49, товар с истекающим сроком годности уценивается и продается с большими скидками. но такой же товар и присутствует с нормальным сроком годности за нормальную цену.
чтобы не городить серии, партии и новые штрихкоды, кассиру проще и быстрее вручную поменять цену
СтрокаТЧ.ПроцентРучнойСкидки = 0 И СтрокаТЧ.ЦенаИзмененаВручную = ЛОЖЬ
т.е. или ручную скидку проставили, или вручную изменили цену.
(3) pis49, товар с истекающим сроком годности уценивается и продается с большими скидками. но такой же товар и присутствует с нормальным сроком годности за нормальную цену.
чтобы не городить серии, партии и новые штрихкоды, кассиру проще и быстрее вручную поменять цену
В редакции 2.2 добавили в справочник "Условие предоставления скидок" вариант "Внешняя обработка". Образец можно посмотреть в каталоге поставки
Функция ПроверитьУсловие(Условие, СтрокаДереваСкидок, ПараметрыВнешнейОбработки, ПараметрыРасчета) Экспорт
РезультатПроверки = Новый Структура;
ТекущееУсловиеВыполнено = Ложь;
Для Каждого СтрокаТовара Из СтрокаДереваСкидок.СтруктураДополнительныхДанных.ТаблицаТоваровПоСегментам Цикл
Если СтрокаТовара.СуммаРучнойСкидки = 0 Тогда
СтрокаТовара.УсловиеПоСтрокеВыполнено = Истина;
ТекущееУсловиеВыполнено = Истина;
КонецЕсли;
КонецЦикла;
РезультатПроверки.Вставить("ТекущееУсловиеВыполнено", ТекущееУсловиеВыполнено);
Возврат РезультатПроверки;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот