Каталог решений - Ошибка в бонусной системе в типовой УТ11

Ошибка в бонусной системе в типовой УТ11

Ошибка в бонусной системе в типовой УТ11

В наличии

При проведении нескольких розничных возвратов по одному клиенту по одному отчету о розничных продажах расчет бонусных баллов в типовой конфигурации выполняется некорректно. В данной статье рассмотрено исправление этой ошибки.

Категория:

Описание

Обнаружили вот такую не очень приятную ошибку в бонусной системе УТ11: при оформлении нескольких возвратов по одному клиенту по одному сменному отчету бонусные баллы не списываются, а добавляются.

Создадим бонусную программу лояльности:

Создадим вид карт лояльности:

Создадим вид скидки бонусом для нашего вида карт лояльности:

Сделаем разовое начисление баллов

Теперь оформим продажу — Чек ККМ на какую-либо позицию в количестве 2-х штук, и закроем смену

Посмотрим остатки бонусных баллов:

Теперь проведем последовательно два документа возврата:

После проведения возвратов остаток бонусных баллов должен вернуться в исходное состояние, но не тут-то было:

Две ошибки содержатся в процедуре ЗаполнитьБонусныеБаллыВозвратТоваровОтКлиента модуля БонусныеБаллыСервер.

Во-первых, в запросе к оплатам бонусными баллами — при учете уже выполненных возвратов — разработчики учитывают их со знаком "-":

	|		ТаблицаБонусныеБаллы.БонуснаяПрограммаЛояльности,
	|		ТаблицаБонусныеБаллы.ДатаОплаты,
	|		-ТаблицаБонусныеБаллы.СуммаБонусныхБаллов
	|	ИЗ
	|		Документ.ВозвратТоваровОтКлиента.ОплатаБонуснымиБаллами КАК ТаблицаБонусныеБаллы

Хотя по смыслу вот этого участка кода в запросе надо брать со знаком "+":

НоваяСтрока = ТекущийОбъект.ОплатаБонуснымиБаллами.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЧ, "БонуснаяПрограммаЛояльности, ДатаОплаты");
НоваяСтрока.СуммаБонусныхБаллов = -КСписанию;

Во-вторых, для пропорционального распределения возвращаемых бонусных баллов неправильно берется база распределения — берутся все товары из отчета о розничных продажах, а надо за вычетом уже сделанных возвратов.

В итоге правильный запрос должен выглядеть так:

 

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