Касса ◾️ Автоматическое закрытие смены на кассе

Описание

Для финансовых отделов некоторых торговых сетей существует необходимость автоматического закрытия кассовых смен, накануне завершения календарного дня для максимизации выручки в текущем календарном дне (учет выручки ведется строго по фактически закрытым сменам в календарном дне). Начиная с версии 10.2.95.0 касса сама может закрывать смену в указанное время (если на ней не авторизован кассир).

Логика работы

Механика работы:

  1. Касса включена и кассир на ней работает.
  2. По срабатыванию триггера касса ждет закрытия текущего чека, после которого выводит сообщение кассиру о времени, оставшемся до закрытия смены.
  3. Если кассир не авторизован, тогда касса автоматически закроет смену.
  4. Далее кассиру необходимо авторизоваться стандартным образом.
  5. После авторизации кассир продолжает работу в штатном режиме в новой смене.
  6. Если товар был добавлен в чек и наступил момент закрытия смены, то смену нужно закрыть. Осуществить продажу будет невозможно.

Пример параметров для триггеров по срабатыванию автоматического закрытия:

  1. Промежуток времени, по наступлению которого касса начнет процесс автоматического закрытия после завершения текущего чека (например, с 23:35 по 23:55). Для промежутка времени должно быть предусмотрено гибкое расписание (ежедневно, в последний день месяца, только по сб и вс, и т.д.)
  2. Сумма выручки в кассе больше или равна X руб. Этот триггер зависим от расписания (то есть, сам по себе без активного расписания не работает). Может быть использован в качестве дополнительного параметра для первого триггера, например, "Автоматическое закрытие смены с 23:35 до 23:55 при условии наличия в кассе суммы 200 000 руб.".

Дополнительная информация:

  • Автоматические операции печати дополнительных отчетов (кроме штатных отчетов о закрытии и открытии смены) отсутствуют.
  • Автоматические операции с денежными средствами (внесение, изъятие, автоизъятие, внесение размена, и т.д.) отсутствуют.
  • Настройка автозакрытия смен при ее активации отправляется и будет срабатывать для всех касс магазина.
  • Смена кассира для новой смены не требуется.
  • Можно настройить автозакрытие смен (и последующее открытие новых смен) под отдельной кассовой учетной записью, которая предварительно должна быть настроена (например, "Виртуальный администратор").
  • Механика должна работать для SetTouch и клавиатурной кассы.

Настройка

Для выполнения настройки выполните скрипт отправки в базе данных set на сервере SetCentrum или SetRetail.

ПараметрыОписание
enabled
  • true - включить автоматическое закрытие смены.
  • false - отключить автоматическое закрытие смены.
triggersМассив триггеров, каждый из которых - JSON-объект с расписанием закрытия смены.

cronExpression

Время автоматического закрытия смены в формате crontab.


shiftDurationМинимальная длительность смены в минутах через, когда будет произведено автоматическое закрытие смены.

После включения функциональности для дальнейшего обновления расписания автоматического закрытия используйте запрос UPDATE:

Пример работы

Клавиатурная касса

Пример: установлено автоматическое закрытие смены в 20:24.

Если кассир авторизован, то на кассе появляется сообщение о том, что смена будет закрыта:

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

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

SetTouch

Пример: установлено автоматическое закрытие смены в 20:42.

Если кассир авторизован, то на кассе появляется сообщение о том, что смена будет закрыта:

По наступлению времени автоматического закрытия смены касса принудительно предлагает это сделать. 

Функциональность осуществления продажи блокируется. При попытке сделать расчет появляется сообщение.

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

После автоматического закрытия смены сообщение пропадет с экрана. Смена закрыта.

Формат расписания Cron

Генератор для времени срабатывания событий экспорта в формате crontab

Общие правила формирования времени по crontab-формату

Cron-выражения

Cron (Command Run On) - это система для автоматического запуска задач в определенное время.

Cron-выражения предназначены для возможности задавать периодичность и время срабатывания задач планировщика.

Синтаксис cron-выражений

Период срабатывания определенной задачи задается посредством синтаксиса cron-выражений.

Cron-выражение - это строка, состоящая из 6 или 7 полей, отделенных между собой пробелами, где: 

  • Seconds, Minutes, Day of month и др. - это хронологический параметр; 
  • YES - указание обязательности использования данного фрагмента cron-выражения; 
  • 0-59 - значение, допустимый интервал для заданного элемента cron-выражения; 
  • (* /- ,) - набор разрешенных спецсимволов.

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

Формат cron-выражения выглядит следующим образом:

  1. Seconds YES 0-59 , - * /

  2. Minutes YES 0-59 , - * /

  3. Hours YES 0-23 , - * /

  4. Day of month YES 1-31 , - * ? / L W

  5. Month YES 1-12 or JAN-DEC , - * /

  6. Day of week YES 1-7 or SUN-SAT , - * ? / L #

  7. 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-го.

Примеры cron-выражений планировщика выполнения задач

  • 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).