Для финансовых отделов некоторых торговых сетей существует необходимость автоматического закрытия кассовых смен, накануне завершения календарного дня для максимизации выручки в текущем календарном дне (учет выручки ведется строго по фактически закрытым сменам в календарном дне). Начиная с версии 10.2.95.0 касса сама может закрывать смену в указанное время (если на ней не авторизован кассир).
Механика работы:
Пример параметров для триггеров по срабатыванию автоматического закрытия:
Дополнительная информация:
Для выполнения настройки выполните скрипт отправки в базе данных set на сервере SetCentrum или SetRetail.
Параметры | Описание | |
---|---|---|
enabled |
| |
triggers | Массив триггеров, каждый из которых - JSON-объект с расписанием закрытия смены. | |
cronExpression | Время автоматического закрытия смены в формате crontab. | |
shiftDuration | Минимальная длительность смены в минутах через, когда будет произведено автоматическое закрытие смены. |
SELECT add_property('SHIFT_AUTO_CLOSE', null, 'shift.auto.close.settings', ' { "enabled": true, "triggers": [ { "cronExpression": "0 55 23 ? * *", "shiftDuration": 10 } ] } ', null, 10, 2, 0); |
SELECT add_property('SHIFT_AUTO_CLOSE', null, 'shift.auto.close.settings', ' { "enabled": true, "triggers": [ { "cronExpression": "0 55 23 ? * *", "shiftDuration": 10 }, { "cronExpression": "15 30 11 L * ? *", "shiftDuration": 40 } ] } ', null, 10, 2, 0); |
После включения функциональности для дальнейшего обновления расписания автоматического закрытия используйте запрос UPDATE:
UPDATE sales_management_properties SET property_value=' { "enabled": true, "triggers": [ { "cronExpression": "0 29 20 ? * *", "shiftDuration": 10 } ] } ', send_status=0 WHERE property_key='shift.auto.close.settings'; |
Пример: установлено автоматическое закрытие смены в 20:24.
Если кассир авторизован, то на кассе появляется сообщение о том, что смена будет закрыта:
По наступлению времени автоматического закрытия смены касса принудительно предлагает это сделать. Функциональность осуществления продажи блокируется.
Если кассир не был авторизован, тогда смена закроется автоматически. Справа появится знак предупреждения.
Пример: установлено автоматическое закрытие смены в 20:42.
Если кассир авторизован, то на кассе появляется сообщение о том, что смена будет закрыта:
По наступлению времени автоматического закрытия смены касса принудительно предлагает это сделать.
Функциональность осуществления продажи блокируется. При попытке сделать расчет появляется сообщение.
Если кассир не был авторизован, тогда смена закроется автоматически. За несколько минут до её закрытия появится сообщение, о том, что смену нужно закрыть.
После автоматического закрытия смены сообщение пропадет с экрана. Смена закрыта.
Cron (Command Run On) - это система для автоматического запуска задач в определенное время.
Cron-выражения предназначены для возможности задавать периодичность и время срабатывания задач планировщика.
Период срабатывания определенной задачи задается посредством синтаксиса cron-выражений.
Cron-выражение - это строка, состоящая из 6 или 7 полей, отделенных между собой пробелами, где:
Seconds, Minutes, Day of month
и др. - это хронологический параметр; YES
- указание обязательности использования данного фрагмента cron-выражения; 0-59
- значение, допустимый интервал для заданного элемента cron-выражения; (* /- ,)
- набор разрешенных спецсимволов.Поля могут содержать любые из допустимых значений, а также различные комбинации специальных символов.
Формат cron-выражения выглядит следующим образом:
Seconds YES 0-59 , - * /
Minutes YES 0-59 , - * /
Hours YES 0-23 , - * /
Day of month YES 1-31 , - * ? / L W
Month YES 1-12 or JAN-DEC , - * /
Day of week YES 1-7 or SUN-SAT , - * ? / L #
Year NO empty, 1970-2099 , - * /
В cron-выражениях используются следующие специальные символы:
*
- все значения в пределах одного фрагмента cron-выражения. Например, в поле "Minutes" специальный символ "*" обозначает, что задача будет выполняться каждую минуту;
?
- неопределенное значение. Если Вам необходимо, чтобы задача запускалась, к примеру 10 числа каждого месяца, но не важно, в какой день недели, то в поле "Day of month" необходимо установить значение "10", а в поле "Day of week" - "?";
-
- определение диапазонов. Например, "10-12" в поле "Hours" означает часы 10, 11 и 12;
,
- указание дополнительных значений. К примеру, значения "ПОНЕДЕЛЬНИК, СРЕДА, ПЯТНИЦА" в поле "Day of week" будут использоваться в cron-выражении в виде запуска задачи в понедельник, среду и пятницу;
/
- приращение значений. Например, "5/15" в области секунд означает "секунды 5, 20, 35, и 50, то есть значение "5" будет увеличиваться на "15";
L
- определение последнего дня. В поле "Day of month", к примеру, значение "L" подразумевает, что задача будет выполняться в последний день каждого месяца. В поле "Month" значение "6L" обозначает, что задача была запущена в прошлую пятницу месяца;
W
- определение буднего дня (понедельник - пятница). Например, в поле "Day of month" значение "15 W" будет обозначать самый близкий будний день к 15-ому из месяца, то есть если 15-м числом является суббота, задача будет запущена в пятницу 14-го. Если 15-ым числом будет воскресенье, то задача будет запущена в понедельник 16-го.
0 0 12 * * ?
(запуск задачи каждый день в 12.00);0 15 10 ? * *
(запуск задачи в 10.15 каждый день);0 15 10 * * ? 2020
(запуск задачи в 10.15 каждый день в течение всего 2020 года);0 * 14 * * ?
(запуск задачи каждую минуту с 2.00 до 2.55 каждый день);0 0/5 14 * * ?
(запуск задачи каждые 5 минут, с 2.00 до 2.55 каждый день);0 0/5 14,18 * * ?
(запуск задачи каждые 5 минут, с 2.00 до 2.55 и каждые 5 минут с 18.00 до 18.55);0 10,44 14 ? 3 WED
(запуск задачи в 2.10 и в 2.44 каждую среду в марте);0 15 10 ? * MON-FRI
(запуск задачи каждый день с понедельника по пятницу включительно);0 15 10 15 * ?
(запуск задачи в 10.15 пятнадцатого числа каждого месяца);0 15 10 ? * 6L
(запуск задачи в прошлую пятницу каждого месяца);0 15 10 ? * 6#3
(запуск задачи в 10.15 в третью пятницу каждого месяца);0 0 12 1/5 * ?
(запуск задачи в 12.00 каждые пять дней каждый месяц, начиная с первого дня месяца);0 11 11 11 11 ?
(запуск задачи каждого одиннадцатого ноября в 11.11).