Убираем суммирование автоматической и ручной скидки в РМК Розница 2.1

1. romti 25.08.16 21:47 Сейчас в теме
В Рознице 2.1.7.9 в РМК.
Добавляем в ТЧ товар1, товар2 и товар3.
На товар1 назначаем ручную скидку.
На товар2 назначаем вручную другую цену.
Товар3 оставляем без изменений.

Выбираем дисконтную карту и жмём "Расчет скидок".
В типовой конфигурации начнется пересчет автоматических скидок и последующее их сложение с введенными вручную скидками. Плюс автоматические скидки срабатывают и на товары с измененной вручную ценой.

Нам так было неудобно и не очень логично, поэтому сделал, чтобы автоматическая скидка назначалась только на товары, цены которых мы никак не трогали.

Итак.
1) В обработке РМКУправляемыйРежим, в табличную часть Товары добавляем новый реквизит "ЦенаИзмененаВручную" с типом Булево.
В форме обработки в ТЧ можно добавить столбец с этим реквизитом, для удобства.

2) В модуле формы в процедуре ТоварыЦенаПриИзменении, перед ОбновитьФорму();
добавляем строку
СтрокаТабличнойЧасти.ЦенаИзмененаВручную = Истина;


3) Далее переходим в общий модуль СкидкиНаценкиСервер и идем в процедуру ПрименитьРезультатРасчетаСкидокКОбъекту

И в конце, добавляем условие к расчету автоматических скидок

Если СтрокаТЧ.ПроцентРучнойСкидки = 0 И СтрокаТЧ.ЦенаИзмененаВручную = ЛОЖЬ Тогда //добавляем эту строку
		
		СуммаСкидки = СуммаАвтоматическойСкидки + СтрокаТЧ.СуммаРучнойСкидки + ?(ЕстьБонусы, СтрокаТЧ.СуммаСкидкиОплатыБонусом, 0);
		
		СтрокаТЧ.ПроцентАвтоматическойСкидки = ?(СуммаБезСкидки = 0, 0 , 100 * СуммаАвтоматическойСкидки / СуммаБезСкидки);
		
		СтрокаТЧ.Сумма    = СуммаБезСкидки - ?(СуммаСкидки > СуммаБезСкидки, СуммаБезСкидки, СуммаСкидки);
		СтрокаТЧ.СуммаНДС = РассчитатьСуммуНДС(СтрокаТЧ.Сумма, СтрокаТЧ.СтавкаНДС, Объект.ЦенаВключаетНДС);
КонецЕсли // и эту
Показать


Теперь работает как надо.

p.s.: не нашел решение в интернете, а вопросы видел. пусть тут полежит, может пригодится кому.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. KulSer 25.08.16 23:58 Сейчас в теме
Извините, я посмотрел Ваш алгоритм, и правильно ли я понял, что в Вашем примере автоматическая скидка будет перерасчитана для товаров 1 и 3, а товар 2 будет пропущен, т.к. у него изменилась цена?
Прочитав тему "Убираем суммирование автоматической и ручной скидки" я думал, что речь идёт о ручных скидках, т.е. о товаре 1.
4. romti 26.08.16 11:06 Сейчас в теме
(2) KulSer, в моем случае код расчета автоматических скидок не выполняется при следующих условиях
СтрокаТЧ.ПроцентРучнойСкидки = 0 И СтрокаТЧ.ЦенаИзмененаВручную = ЛОЖЬ

т.е. или ручную скидку проставили, или вручную изменили цену.

(3) pis49, товар с истекающим сроком годности уценивается и продается с большими скидками. но такой же товар и присутствует с нормальным сроком годности за нормальную цену.
чтобы не городить серии, партии и новые штрихкоды, кассиру проще и быстрее вручную поменять цену
3. pis49 26.08.16 02:32 Сейчас в теме
помойму это все можно настроить через сегменты и ограничения применения скидок.
5. petya73 30.10.17 16:23 Сейчас в теме
В редакции 2.2 добавили в справочник "Условие предоставления скидок" вариант "Внешняя обработка". Образец можно посмотреть в каталоге поставки

Функция ПроверитьУсловие(Условие, СтрокаДереваСкидок, ПараметрыВнешнейОбработки, ПараметрыРасчета) Экспорт
	РезультатПроверки = Новый Структура;
	ТекущееУсловиеВыполнено = Ложь;
	Для Каждого СтрокаТовара Из СтрокаДереваСкидок.СтруктураДополнительныхДанных.ТаблицаТоваровПоСегментам Цикл
		Если СтрокаТовара.СуммаРучнойСкидки = 0 Тогда
			СтрокаТовара.УсловиеПоСтрокеВыполнено = Истина;
			ТекущееУсловиеВыполнено = Истина;			
		КонецЕсли;
	КонецЦикла;
	РезультатПроверки.Вставить("ТекущееУсловиеВыполнено", ТекущееУсловиеВыполнено);
	
	Возврат РезультатПроверки;
	
КонецФункции
Показать
6. user802095 29.01.19 21:14 Сейчас в теме
Все в РМК работает и действительно Товар продается по фикс прайс но в чеке все равно отображается автоматическая скида и если товар возвращают то возврат идет на меньшую сумму чем оплатил покупатель
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот