Вводная информация

Кассовый сервер самостоятельно не производит контроль кассовой даты на соответствие физической дате, что иногда приводит к искаженным отчетам в системе R-Keeper. Нижеописанная процедура позволяет производить, начиная с кассовой версии 6.61 и выше, автоматический контроль даты и, в зависимости от настроек и категории сотрудника, выполнять корректировку даты.  

Определение терминов

  • Логическая дата - внутренняя дата, определенная в системе R-Keeper (устанавливается в таблице SYSTEM.DB с помощью утилиты SETCODAT.EXE). Изменение логической даты происходит при закрытии кассового дня.
  • Физическая дата - реальная дата, которая на станции определяется значением системных часов BIOS. Если кассовый сервер выделенный, то физическая дата определяется системной датой олерационной системы.

Примечание: При начале рабочего кассового дня логическая и физическая даты должны совпадать (за исключением некоторых случаев). Если работа продолжается после 24:00, то логическая дата остается неизменной, тогда как физическая меняеться.

  • Битовая маска — определённые данные, которые используются для выбора битов из двоичной строки или числа. Например, для получения значения пятого бита (считая слева) числа 10111011 нужно использовать маску 00001000 и применить операцию побитового алгебраического «И» (^ - конъюнкция). В результате получится: 10111011 ^ 00001000 = 00001000

Настройка процесса контроля

Для настройки контроля скопируйте библиотеку LOGDATE.DLL (можно взять на фтп dealers/r-keeper/Tools/LogicDate/LOGDATE.DLL) на рабочую станцию в директорию RKCLIENT\EXTENS. Далее пропишите в конфигурационном файле RKEEPER6.INI параметр:

LogDate_Action = <FLAGS>

- где <FLAGS> – битовая маска, значение которой определяется следующими битами (считая справа): 

  • 0-й бит - определяет, запретить {1} или разрешить {0} дальнейшую загрузку при неравенстве дат без подтверждения менеджера
  • 1-й бит - определяет, запретить {1} или разрешить {0} дальнейшую загрузку при неравенстве дат при любых условиях
  • 2-й бит - определяет, разрешить {1} или запретить {0} приравнять дату любому сотруднику
  • 3-й бит - определяет, разрешить {1} или запретить {0} менеджеру приравнивать дату
  • 4-й бит - определить, разрешить {1} или запретить {0} сдвиг логической даты назад

Важно! в параметре LogDate_Action указывается значение битовой маски в десятичном виде!

Особенности использования

  • Если в системе есть оплаченные чеки, то процесс контроля игнорируется
  • Если настройки позволяют изменить дату, то появляется окно «Исправить лог дату» - см. Рис.1. Если настройки не позволяют менять дату, но при этом надо перевести дату назад, а в настройках такая возможность не предусмотрена, то окно не появляется на экране
  • Если настройки не позволяют загружать систему при несоответствии логической и физической даты, то при нажатии на кнопку «Продолжать» ничего не поизойдет. 

Правила и примеры использования

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

Рассмотрим небольшой пример. Допустим, надо организовать контроль логической даты, при котором необходимо запретить загружать систему при неравенстве дат без подтверждения менеджера, при этом разрешить менеджеру приравнять логическую дату к физической только в том случае, если логическая дата меньше физической - иначе запретить загрузку. 
Для формирования итоговой битовой маски мы должны подставить следющие значение (начиная справа!):

  • 0-й бит - значение 1 (запретить загрузку системы без подтверждения менеджера)
  • 1-й бит - значение 0 (разрешить загрузку системы при неравенстве дат при любых условиях, т.к. первое условие перекрывает его)
  • 2-й бит - значение 0 (запретить приравнивать дату любому сотруднику)
  • 3-й бит - значение 1 (разрешит менеджеру приравнять дату)
  • 4-й бит - значение 0 (запрещаем сдвигать логическую дату назад, т.е приравнивание разрешено только вперед)

Получаем следующее значение битовой маски в двоичном виде: 01001, что соответствует десятичному числу 9

 

Таблица: Описание возможных значений параметра LogDate_Action
Битовая маска Десятичное значение Описание действия
00001 1 Разрешает загрузить систему при неравенстве дат только с подтверждением менеджера, но приравнять дату нельзя
00010 2 Запрещает загрузить систему при неравенстве дат при любых условиях и запрещает приравнять дату также при любых условиях
00011 3 Не имеет смысла, т.к. содержит взаимоисключающие условия
00100 4 Разрешает загрузить систему при неравенстве дат и приравнять дату (только вперед) любому сотруднику 
00101 5 Разрешает загрузить систему при неравенстве дат только с подтверждением менеджера или приравнять дату (только вперед) может любой сотрудник
00110 6 Запрещает загрузить систему при неравенстве дат, но приравнять дату (только вперед) может любой сотрудник 
00111 7 Не имеет смысла, т.к. содержит взаимоисключающие условия
01000 8 Разрешает загрузить систему при неравенстве дат и позволяет приравнять дату (только вперед) с подтверждением менеджера  
01001 9 Разрешает загрузить систему при неравенстве дат только с подтверждением менеджера и приравнять дату (только вперед) только с подтверждением менеджера
01010 10 Запрещает загрузить систему при неравенстве дат при любых условиях, но приравнять дату (только вперед) можно только с подтверждением менеджера
01011 11 Не имеет смысла, т.к. содержит взаимоисключающие условия 
01100 12 Разрешает загрузку системы при неравенстве дат без подтверждения менеджера и позволяет приравнять дату (только вперед) любому сотруднику 
01101 13 Разрешает загрузку системы при неравенстве дат при подтверждении менеджера и позволяет приравнять даты (только вперед) любому сотруднику
01110 14 Запрещает загрузку системы при неравенстве дат при любых условиях и позволяет приравнять дату (только вперед) любому сотруднику
01111 15 Не имеет смысла, т.к. содержит взаимоисключающие условия
10000 16 Не имеет особого смысла, т.к. не заданы разрешения для возможности приравнивания дат. Просто предупреждает о несоответствии дат
10001 17 Не имеет особого смысла, т.к. не указаны полномочия сотрудников на приравнивание даты. Можно лишь загрузить систему с разными датами с подтверждением менеджера.  
10010 18 Запрещает загрузить систему при неравенстве дат при любых условиях и запрещает приравнять дату также при любых условиях. Аналогична значению 2 
10011 19 Не имеет смысла, т.к. содержит взаимоисключающие условия 
10100 20 Разрешает загрузить систему с разными датами и приравнять дату (в любую сторону) любому сотруднику 
10101 21 Разрешает загрузить систему с разными датами только с подтверждением менеджера или приравнять дату (в любую сторону) может любой сотрудник. Не рекомендуется использовать для предотвращения злоупотреблений!
10110 22 Запрещает загрузить систему с разными датами, но приравнять дату (в любую сторону) может любой сотрудник. Не рекомендуется использовать для предотвращения злоупотреблений!
10111 23 Не имеет смысла, т.к. содержит взаимоисключающие условия 
11000 24 Разрешает загрузить систему с разными датами и/или приравнять дату (в любую сторону) с подтверждением менеджера
11001 25 Запрещает загрузить систему с разными датами без подтверждения менеджера и приравнять дату (в любую сторону) можно только с подтверждением менеджера
11010 26 Запрещает загрузить систему с разными датами, но приравнять дату (в любую сторону) может только менеджер
11011 27 Не имеет смысла, т.к. содержит взаимоисключающие условия 
11100 28 Разрешает загрузить систему при неравенстве дат при любых условиях и позволяет приравнять дату (в любую сторону) любому сотруднику. Не рекомендуется использовать для предотвращения злоупотреблений!
11101 29 Запрещает загрузить систему с разными датами без подтверждения менеджера, но позволяет приравнять дату (в любую сторону) любому сотруднику. Не рекомендуется использовать для предотвращения злоупотреблений!
11110 30 Запрещает загрузку системы при неравенстве дат при любых условиях, но позволяет приравнять дату (в любую сторону) любому сотруднику. Не рекомендуется использовать для предотвращения злоупотреблений!
11111 31 Запрещает загрузить систему при неравенстве дат при любых условиях, но позволяет приравнять дату (в любую сторону) любому сотруднику. Не рекомендуется использовать для предотвращения злоупотреблений!