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

ПО Artix позволяет задавать скидочные акции на ограниченное количество товара в чеке. При работе торговых сетей может возникать такая ситуация, при которой необходимо отслеживать покупки клиента и не позволять ему пользоваться данной скидкой повторно в течение определенного времени, например, в течение дня. Для осуществления контроля разработан сервис счетчиков, который будет отслеживать указанную информацию.

Конфигурирование модуля на кассе

Ведение акций со счетчиками активируется параметром enable в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/discountcounters.ini в секции [DiscountCounters]:

В параметрах модуля необходимо указать хост и порт сервиса счетчиков, а также логин и пароль для аутентификации по REST при отправке запросов на получение и сохранение счетчиков.

В кассовом ПО Artix реализована возможность отправки счетчиков, если при их получении возникла ошибка. Данное поведение регулируется параметром forbidSendingOnReceiveError в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/discountcounters.ini в секции [DiscountCounters]:

Шаблон идентификатора источника изменений счетчика задается параметром idChanger в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/discountcounters.ini в секции [DiscountCounters].

НаименованиеТип данныхВозможные значенияОписаниеПримечания
enableлогический
  • true
  • false
Использование счетчиковПо умолчанию false
hostстроковый
Имя хоста, на котором размещен сервис счетчиков
portцелочисленный
Порт, по которому выполняется подключение к сервису счетчиков
timeoutцелочисленный
Таймаут ожидания ответа от сервераПо умолчанию 10 секунд
userстроковый
Логин для аутентификации по REST на сервисе счетчиков
passwordстроковый
Пароль для аутентификации по REST на сервисе счетчиков
forbidSendingOnReceiveErrorлогический
  • true
  • false
Запретить отправку счетчиков, если при их получении возникла ошибкаПо умолчанию true
idChangerстроковый
Шаблон идентификатора источника изменений счетчикаПо умолчанию "%(document.shopCode[04d])%(document.cashCode[02d])%(document.shift[04d])%(document.num[04d])"


[DiscountCounters]
; Настройки счетчиков
; По умолчанию выключены (enable = false)
;enable = false
; Имя хоста
;host = localhost
; Номер порта
;port = 8090
; Таймаут ожидания ответа от сервера
; По умолчанию 10 секунд
;timeout = 10
; Логин
;user = admin
; Пароль
;password = admin
; Запретить отправку счетчиков, если при их получении возникла ошибка
; По умолчанию true
;forbidSendingOnReceiveError = true
; Шаблон идентификатора источника изменений счетчика
; По умолчанию "%(document.shopCode[04d])%(document.cashCode[02d])%(document.shift[04d])%(document.num[04d])"
;idChanger = "%(document.shopCode[04d])%(document.cashCode[02d])%(document.shift[04d])%(document.num[04d])"

Алгоритм ведения акций со счетчиками

Для ведения в ПО Artix акций со счетчиками необходимо:

Порядок ведения акций следующий:

  1. Акция со счетчиками задается в системе Artix Loyalty Management.
  2. Система лояльности выгружается на кассу через кассовый сервер.
  3. При добавлении карты клиента в чек, если сработали условия акции на кассе, к сервису счетчиков отправляется запрос о состоянии счетчиков.
    Если на сервисе имеется такой счетчик, то на кассу возвращается значение счетчика. Если счетчика на сервисе нет, то он создается и ему присваивается значение 0.
    Акция со счетчиком срабатывает на кассе в соответствии с условиями акции и полученным значением счетчика.

  4. После закрытия чека на сервис отправляется значение счетчика, которое добавляется к уже имеющемуся. При следующем срабатывании акции будет применено новое значение. В настоящее время счетчики не имеют срока жизни, т.е. при достижении счетчиком определенного значения акция изменит свое поведение.

    Если в чеке содержится несколько карт клиента, то отправка полученных от дисконта значений счетчиков будет осуществляться по всем картам.


Пусть задана скидочная акция на товар с ограничениями по счетчику:

"Скидка 10% на товар из каталога "Фрукты" со счетчиком "бананы" не более 5 кг".

При применении скидки на кассе на товар из каталога "Фрукты" скидка 10% будет предоставляться до тех пор, пока общее количество приобретенного товара не составит 5 кг.

Например:

1 чек. Количество товара 2 кг. Скидка 10 % будет предоставлена на 2 кг. Счетчик будет изменен со значения 0 на 2.

2 чек. Количество товара 1 кг. Скидка 10 % будет предоставлена на 1 кг. Счетчик будет изменен со значения 2 на 3.

3 чек. Количество товара 3 кг. Скидка 10 % будет предоставлена на 2 кг. На 1 кг скидка не предоставится, т.к. счетчик будет изменен с 3 на 5 и достигнет максимального значения.

На все последующие чеки скидка по данной акции предоставлена не будет.


Пусть задана скидочная акция на товары с ограничениями по счетчикам:

"Скидка 10% на товары из каталога "Фрукты" со счетчиками: "бананы" не более 5 кг, "яблоки" не более 5 кг, "персики" не более 5 кг".

При применении скидки на кассе на товары из каталога "Фрукты" скидка 10% будет предоставляться на каждый товар из каталога до тех пор, пока количество приобретенного товара не составит 5 кг.

Например:

1 позиция. "Яблоки", количество товара 2 кг. Скидка 10 % будет предоставлена на 2 кг. Счетчик для "яблоки" будет изменен со значения 0 на 2.

2 позиция. "Яблоки", количество товара 1 кг. Скидка 10 % будет предоставлена на 1 кг. Счетчик для "яблоки" будет изменен со значения 2 на 3.

3 позиция. "Бананы", количество товара 3 кг. Скидка 10 % будет предоставлена на 3 кг. Счетчик для "бананы" будет изменен со значения 0 на 3.

4 позиция. "Персики", количество товара 2 кг. Скидка 10 % будет предоставлена на 2 кг. Счетчик для "персики" будет изменен со значения 0 на 2.

5 позиция. "Бананы", количество товара 3 кг. Скидка 10 % будет предоставлена на 2 кг. На 1 кг скидка не предоставится, т.к. счетчик для "бананы" будет изменен с 3 на 5 и достигнет максимального значения.

6 позиция. "Молоко", количество товара 1 шт. Товар не входит в каталог "Фрукты". Скидка не будет предоставлена, счетчик для "молоко" будет изменен со значения 0 на 1.

После достижения каждым товаром из каталога "Фрукты" количества 5 кг скидка предоставляться не будет.


Пусть покупателю положены 1000 бонусных баллов, которыми он может оплачивать 10% от покупки.

Необходимо задать следующие скидочные акции:

  1. Первая акция – дает скидку 10% на чек, если не превышен лимит 1000 рублей (счетчики не превышают 1000).
  2. Вторая акция – увеличивает счетчики на сумму скидки из первой акции со сроком жизни до 1 числа следующего месяца. Когда наступит следующий месяц, счетчики автоматически сгорят.


Пусть в зависимости от суммы покупок для покупателя действуют разные скидки:

  • от 0 до 300 – 1%,
  • от 300 до 800 – 2%,
  • от 800 до 1500 – 3%,
  • от 1500 до 2500 – 4%,
  • от 2500 – 5%.

При покупки карты лояльности, сумма покупок будет копиться до конца следующего месяца. Далее сумма покупок будет обнуляться 1-го числа каждого месяца.

Необходимо задать следующие скидочные акции:

  1. "Накопительная скидка" – дает покупателю скидку в процентах, в зависимости от суммы покупок.
  2. "Увеличение счетчика покупок до конца следующего месяца" – увеличивает сумму покупок до конца следующего месяца, если карту приобрели в текущем месяце. Счетчик обнуляется 1 числа.

  3. "Увеличение счетчика покупок до конца текущего месяца" – увеличивает сумму покупок до конца текущего месяца, если карту приобрели в предыдущем месяце. Счетчик обнуляется 1 числа.

  4. "Регистрация даты первой покупки" – необходимо установить счетчик с датой первой покупки, если она не установлена.

Для первой акции не нужно задавать приоритет. Для остальных акций нужно установить приоритет 10, чтобы счетчики увеличивались на актуальную сумму покупок.


Пусть сумма чека равна 30.

Необходимо задать следующие скидочные акции:

  1. Первая акция – при закрытии чека счетчик изменится с 0 на 30.
  2. Вторая акция – при закрытии чека счетчик измениться с 25 на -5.


При отсутствии связи с сервером счетчиков сообщения со значениями счетчиков сохраняются в очередь Artix-Queue и передаются на сервер после восстановления связи.

Работа со счетчиками без привязки к карте

При работе торговых сетей может возникать такая ситуация, при которой необходимо предоставлять покупателям скидку на каждый N-ый чек. Для этого в кассовом ПО Artix реализована возможность работы со счетчиками без привязки к карте. 

Функционал не реализован для онлайн-чеков, отложенных чеков и софт-чеков.

Конфигурирование плагина

Активация плагина для работы со счетчиками без привязки к карте определяется параметром freecounters, который задается в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/freecounters.ini в секции [plugins]. Работает только при включенном плагине discountcounters. При активированном параметре freecounters происходит получение свободных счетчиков при добавлении позиции в чек.

НаименованиеТип данныхВозможные значенияОписаниеПримечания
freecountersстроковый
  • on
  • off
Плагин для работы счетчиков без применения карты

По умолчанию off

Работает с плагином discountcounters


[plugins]
; Плагин для работы счетчиков, без применения карты
;freecounters = off

Удаление свободных счетчиков при возврате из подытога в режим формирования чека определяется параметром removeOnReturnFromSubtotal, который задается в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/freecounters.ini в секции [FreeCounters].

НаименованиеТип данныхВозможные значенияОписаниеПримечания
removeOnReturnFromSubtotalлогический
  • true
  • false
Удаление свободных счетчиков при возвращении из подытога

По умолчанию false


[FreeCounters]
; Удаление свободных счетчиков при возвращении из подытога
; По умолчанию false
;removeOnReturnFromSubtotal = false

Допускается задание нескольких секций с различными значениями SectionName для получения нескольких счетчиков. В каждой секции должны быть заданы следующие параметры:

НаименованиеТип данныхОписаниеПримечания
counterIdстроковыйУникальный идентификатор счетчикаПо умолчанию checkcounter
identifierстроковыйШаблон идентификатора, по которому начисляется и загружается счетчикПо умолчанию %(document.shopCode[04d])%(document.cashCode[02d])
changeOnLoadчисловойЗначение, на которое будет изменен счетчик, перед загрузкой на кассуПо умолчанию 1.0


[FreeCounters.SectionName]
; Уникальный идентификатор счетчика
; По умолчанию checkcounter
;counterId = checkcounter

; Шаблон идентификатора, по которому начисляется и загружается счетчик
; По умолчанию %(document.shopCode[04d])%(document.cashCode[02d])
;identifier = "%(document.shopCode[04d])%(document.cashCode[02d])"

; Значение, на которое будет изменен счетчик, перед загрузкой на кассу
; По умолчанию 1.0
;changeOnLoad = 1.0