Описание

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

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

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

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

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

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

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

Настройка

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

ПараметрыОписание
enabled
  • true - включить автоматическое закрытие смены.
  • false - отключить автоматическое закрытие смены.
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.

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

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

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

SetTouch

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

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

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

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

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

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

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

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

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

Cron-выражения

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

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

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

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

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

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

Формат 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-выражений планировщика выполнения задач