При построении систем лояльности с дифференцированным процентом начисления бонусов (например, 5%, 7% или 10% в зависимости от суммы покупок за весь период) разработчики и аналитики сталкиваются с необходимостью выяснить, откуда конфигурация считывает историю продаж и где хранит результаты начислений. Разберем архитектуру хранения данных о продажах и бонусных баллах в «1С:Комплексная автоматизация» (а также в аналогичных конфигурациях «1С:ERP» и «1С:Управление торговлей»).
Для корректной работы накопительных скидок и бонусных программ в системе используется разделение на два ключевых регистра накопления:
ВыручкаИСебестоимостьПродаж. Это основной оборотный регистр, в котором фиксируются все продажи клиентам. Именно по нему типовой алгоритм автоматических скидок и бонусных программ вычисляет накопленный объем покупок партнера или по карте лояльности. В устаревших редакциях конфигураций (например, КА 1.1 или УТ 10.3) эту роль выполнял регистр накопления Продажи.БонусныеБаллы. Это регистр остатков, в котором хранятся непосредственно начисленные, списанные и доступные бонусные баллы в разрезе бонусных программ, карт лояльности и партнеров. Данные о самих покупках сюда не попадают — здесь учитываются только единицы внутренней программы лояльности.Таким образом, когда требуется получить сумму выручки по клиенту за период для проверки условий начисления бонуса, запросы строятся именно к таблице оборотов регистра ВыручкаИСебестоимостьПродаж.
Рассмотрим типовую схему настройки дифференцированного начисления бонусов в пользовательском интерфейсе:
СкидкиНаценки и создадим группу скидок с правилом совместного применения «Максимум».Проанализируем технические особенности, которые необходимо учитывать при настройке и контроле расчетов:
ЧекККМ не делает непосредственных движений по регистру ВыручкаИСебестоимостьПродаж. Движения в регистр записываются документом ОтчетОРозничныхПродажах в момент закрытия кассовой смены. По этой причине покупки, совершенные клиентом в течение дня в розничной точке, увеличивают накопленный объем в регистре только после проведения вечернего отчета.ВозвратТоваровОтКлиента и КорректировкаРеализации формируют сторнирующие движения в регистре ВыручкаИСебестоимостьПродаж. Если покупатель оформляет возврат, его суммарный объем покупок уменьшается, что при следующей продаже может автоматически вернуть его на предыдущую, более низкую ступень начисления бонусов.