Начиная с версии 4.6.176 реализована возможность работы счетчиков в чеках возврата и возврата по чекам продажи. Также реализована возможность отрицательного изменения счетчиков.
ПО Artix позволяет задавать скидочные акции на ограниченное количество товара в чеке. При работе торговых сетей может возникать такая ситуация, при которой необходимо отслеживать покупки клиента и не позволять ему пользоваться данной скидкой повторно в течение определенного времени, например, в течение дня. Для осуществления контроля разработан сервис счетчиков, который будет отслеживать указанную информацию.
Конфигурирование модуля на кассе
Ведение акций со счетчиками активируется параметром enable
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/d
iscountcounters.ini
в секции [DiscountCounters]
:
- при значении
true
использование счетчиков включено. Акции со счетчиками срабатывают, - при значении
false
использование счетчиков отключено. Акции, в которых заданы счетчики, не будет срабатывать на кассе.
В параметрах модуля необходимо указать хост и порт сервиса счетчиков, а также логин и пароль для аутентификации по REST при отправке запросов на получение и сохранение счетчиков.
В кассовом ПО Artix реализована возможность отправки счетчиков, если при их получении возникла ошибка. Данное поведение регулируется параметром forbidSendingOnReceiveError
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/d
iscountcounters.ini
в секции [DiscountCounters]
:
- при значении
true
счетчики не будут отправлены через очередь Artix-Queue, если возникла ошибка при их получении, - при значении
false
счетчики будут отправлены через очередь Artix-Queue, если возникла ошибка при их получении.
Шаблон идентификатора источника изменений счетчика задается параметром idChanger
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/d
iscountcounters.ini
в секции [DiscountCounters]
.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
enable | логический |
| Использование счетчиков | По умолчанию false |
host | строковый | Имя хоста, на котором размещен сервис счетчиков | ||
port | целочисленный | Порт, по которому выполняется подключение к сервису счетчиков | ||
timeout | целочисленный | Таймаут ожидания ответа от сервера | По умолчанию 10 секунд | |
user | строковый | Логин для аутентификации по REST на сервисе счетчиков | ||
password | строковый | Пароль для аутентификации по REST на сервисе счетчиков | ||
forbidSendingOnReceiveError | логический |
| Запретить отправку счетчиков, если при их получении возникла ошибка | По умолчанию 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 акций со счетчиками необходимо:
- наличие сервиса счетчиков, который устанавливается на кассовом сервере или отдельном компьютере,
- активировать модуль счетчиков
DiscountCounters
в кассовом ПО, - создать акцию на основании шаблона со счетчиками в системе Artix Loyalty Management.
Порядок ведения акций следующий:
- Акция со счетчиками задается в системе Artix Loyalty Management.
- Система лояльности выгружается на кассу через кассовый сервер.
При добавлении карты клиента в чек, если сработали условия акции на кассе, к сервису счетчиков отправляется запрос о состоянии счетчиков.
Если на сервисе имеется такой счетчик, то на кассу возвращается значение счетчика. Если счетчика на сервисе нет, то он создается и ему присваивается значение 0.
Акция со счетчиком срабатывает на кассе в соответствии с условиями акции и полученным значением счетчика.После закрытия чека на сервис отправляется значение счетчика, которое добавляется к уже имеющемуся. При следующем срабатывании акции будет применено новое значение. В настоящее время счетчики не имеют срока жизни, т.е. при достижении счетчиком определенного значения акция изменит свое поведение.
Если в чеке содержится несколько карт клиента, то отправка полученных от дисконта значений счетчиков будет осуществляться по всем картам.
Пусть задана скидочная акция на товар с ограничениями по счетчику:
"Скидка 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% от покупки.
Необходимо задать следующие скидочные акции:
- Первая акция – дает скидку 10% на чек, если не превышен лимит 1000 рублей (счетчики не превышают 1000).
Вторая акция – увеличивает счетчики на сумму скидки из первой акции со сроком жизни до 1 числа следующего месяца. Когда наступит следующий месяц, счетчики автоматически сгорят.
Пусть в зависимости от суммы покупок для покупателя действуют разные скидки:
- от 0 до 300 – 1%,
- от 300 до 800 – 2%,
- от 800 до 1500 – 3%,
- от 1500 до 2500 – 4%,
- от 2500 – 5%.
При покупки карты лояльности, сумма покупок будет копиться до конца следующего месяца. Далее сумма покупок будет обнуляться 1-го числа каждого месяца.
Необходимо задать следующие скидочные акции:
- "Накопительная скидка" – дает покупателю скидку в процентах, в зависимости от суммы покупок.
"Увеличение счетчика покупок до конца следующего месяца" – увеличивает сумму покупок до конца следующего месяца, если карту приобрели в текущем месяце. Счетчик обнуляется 1 числа.
"Увеличение счетчика покупок до конца текущего месяца" – увеличивает сумму покупок до конца текущего месяца, если карту приобрели в предыдущем месяце. Счетчик обнуляется 1 числа.
"Регистрация даты первой покупки" – необходимо установить счетчик с датой первой покупки, если она не установлена.
Пусть сумма чека равна 30.
Необходимо задать следующие скидочные акции:
- Первая акция – при закрытии чека счетчик изменится с 0 на 30.
- Вторая акция – при закрытии чека счетчик измениться с 25 на -5.
При отсутствии связи с сервером счетчиков сообщения со значениями счетчиков сохраняются в очередь Artix-Queue и передаются на сервер после восстановления связи.
Работа со счетчиками без привязки к карте
При работе торговых сетей может возникать такая ситуация, при которой необходимо предоставлять покупателям скидку на каждый N-ый чек. Для этого в кассовом ПО Artix реализована возможность работы со счетчиками без привязки к карте.
Функционал не реализован для онлайн-чеков, отложенных чеков и софт-чеков.
Конфигурирование плагина
Активация плагина для работы со счетчиками без привязки к карте определяется параметром freecounters
, который задается в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/freecounters.ini
в секции [plugins
]. Работает только при включенном плагине discountcounters
. При активированном параметре freecounters
происходит получение свободных счетчиков при добавлении позиции в чек.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
freecounters | строковый |
| Плагин для работы счетчиков без применения карты | По умолчанию Работает с плагином |
[plugins] ; Плагин для работы счетчиков, без применения карты ;freecounters = off
Удаление свободных счетчиков при возврате из подытога в режим формирования чека определяется параметром removeOnReturnFromSubtotal
, который задается в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/freecounters.ini
в секции [FreeCounters
].
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
removeOnReturnFromSubtotal | логический |
| Удаление свободных счетчиков при возвращении из подытога | По умолчанию |
[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