При настройке бонусных программ лояльности в конфигурации 1С:Розница (редакция 2.2) часто возникает неприятная ситуация: покупатель оплачивает часть чека баллами, а оставшуюся часть — деньгами (наличными или банковской картой), при этом бонусные баллы за покупку начисляются на полную стоимость товара без вычета списанных бонусов. В результате бизнес фактически начисляет «бонусы на бонусы», что приводит к неоправданным финансовым потерям компании.
Рассмотрим конкретный пример: товар стоит 100 рублей. Покупатель списывает со своей карты 30 бонусов, а оставшиеся 70 рублей доплачивает наличными. Согласно логике программы лояльности со ставкой 35%, клиенту должно вернуться 35% от внесенных реальных денег (то есть 24,5 рубля), либо начисление должно быть заблокировано вовсе. Однако по умолчанию система производит расчет со всех 100 рублей и начисляет клиенту 35 рублей. Разберем архитектурные причины такого поведения и способы устранения проблемы.
Проанализируем структуру работы подсистемы лояльности в 1С:Розница 2.2. В конфигурации расчет скидок и оформление оплат жестко разделены по этапам:
Товары на основе конечной цены позиции после применения всех прямых скидок.Кроме того, в некоторых релизах проявляется ошибка пересчета: если дисконтная карта считана в чек до набора корзины, или у пользователя активно право Автоматический расчет скидок при редактировании документа продажи, начисленные бонусы фиксируются в чеке и не сбрасываются даже при наличии запрещающей настройки после добавления оплаты баллами.
Разберем вариант решения без вмешательства в исходный код конфигурации, используя встроенные возможности правил начисления бонусных баллов. Мы можем исключить начисление баллов непосредственно в чеке на кассе и перенести эту операцию на регламентный расчет.
Схема компоновки данных - Произвольный.ЧекККМ или регистры накопления продаж и оплат).Наличные и Платежная карта, исключая оплату бонусными баллами.Начисление бонусных баллов по расписанию (например, раз в сутки в ночное время).Этот подход гарантирует математическую точность расчетов и исключает начисление баллов на списанные бонусы без модификации ядра системы.
Если бизнес-процессы требуют, чтобы начисленные баллы отображались в чеке ККМ сразу в момент покупки, типовой расчет необходимо скорректировать. Оптимальным решением является использование механизма расширений (без снятия конфигурации с поддержки).
Рассмотрим алгоритм доработки:
ЧекККМ (после распределения всех оплат).Оплата бонусными баллами.НачисленныеБонусныеБаллы либо уменьшаем сумму начисления в движениях регистра накопления БонусныеБаллыКСписанию / БонусныеБаллыКНачислению.Если в вашей программе уже активирован запрет начисления баллов при оплате бонусами, но программа все равно их начисляет, проанализируем настройки прав кассира. Некорректный пересчет часто связан с оперативным расчетом строк.
Автоматический расчет скидок при редактировании документа продажи.