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

Кассовый сервер самостоятельно не производит контроль кассовой даты на соответствие физической дате, что иногда приводит к искаженным отчетам в системе 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

Битовая маскаДесятичное значениеОписание действия
000011Разрешает загрузить систему при неравенстве дат только с подтверждением менеджера, но приравнять дату нельзя
000102Запрещает загрузить систему при неравенстве дат при любых условиях и запрещает приравнять дату также при любых условиях
000113Не имеет смысла, т.к. содержит взаимоисключающие условия
001004Разрешает загрузить систему при неравенстве дат и приравнять дату (только вперед) любому сотруднику 
001015Разрешает загрузить систему при неравенстве дат только с подтверждением менеджера или приравнять дату (только вперед) может любой сотрудник
001106Запрещает загрузить систему при неравенстве дат, но приравнять дату (только вперед) может любой сотрудник 
001117Не имеет смысла, т.к. содержит взаимоисключающие условия
010008Разрешает загрузить систему при неравенстве дат и позволяет приравнять дату (только вперед) с подтверждением менеджера  
010019Разрешает загрузить систему при неравенстве дат только с подтверждением менеджера и приравнять дату (только вперед) только с подтверждением менеджера
0101010Запрещает загрузить систему при неравенстве дат при любых условиях, но приравнять дату (только вперед) можно только с подтверждением менеджера
0101111Не имеет смысла, т.к. содержит взаимоисключающие условия 
0110012Разрешает загрузку системы при неравенстве дат без подтверждения менеджера и позволяет приравнять дату (только вперед) любому сотруднику 
0110113Разрешает загрузку системы при неравенстве дат при подтверждении менеджера и позволяет приравнять даты (только вперед) любому сотруднику
0111014Запрещает загрузку системы при неравенстве дат при любых условиях и позволяет приравнять дату (только вперед) любому сотруднику
0111115Не имеет смысла, т.к. содержит взаимоисключающие условия
1000016Не имеет особого смысла, т.к. не заданы разрешения для возможности приравнивания дат. Просто предупреждает о несоответствии дат
1000117Не имеет особого смысла, т.к. не указаны полномочия сотрудников на приравнивание даты. Можно лишь загрузить систему с разными датами с подтверждением менеджера.  
1001018Запрещает загрузить систему при неравенстве дат при любых условиях и запрещает приравнять дату также при любых условиях. Аналогична значению 2 
1001119Не имеет смысла, т.к. содержит взаимоисключающие условия 
1010020Разрешает загрузить систему с разными датами и приравнять дату (в любую сторону) любому сотруднику 
1010121Разрешает загрузить систему с разными датами только с подтверждением менеджера или приравнять дату (в любую сторону) может любой сотрудник. Не рекомендуется использовать для предотвращения злоупотреблений!
1011022Запрещает загрузить систему с разными датами, но приравнять дату (в любую сторону) может любой сотрудник. Не рекомендуется использовать для предотвращения злоупотреблений!
1011123Не имеет смысла, т.к. содержит взаимоисключающие условия 
1100024Разрешает загрузить систему с разными датами и/или приравнять дату (в любую сторону) с подтверждением менеджера
1100125Запрещает загрузить систему с разными датами без подтверждения менеджера и приравнять дату (в любую сторону) можно только с подтверждением менеджера
1101026Запрещает загрузить систему с разными датами, но приравнять дату (в любую сторону) может только менеджер
1101127Не имеет смысла, т.к. содержит взаимоисключающие условия 
1110028Разрешает загрузить систему при неравенстве дат при любых условиях и позволяет приравнять дату (в любую сторону) любому сотруднику. Не рекомендуется использовать для предотвращения злоупотреблений!
1110129Запрещает загрузить систему с разными датами без подтверждения менеджера, но позволяет приравнять дату (в любую сторону) любому сотруднику. Не рекомендуется использовать для предотвращения злоупотреблений!
1111030Запрещает загрузку системы при неравенстве дат при любых условиях, но позволяет приравнять дату (в любую сторону) любому сотруднику. Не рекомендуется использовать для предотвращения злоупотреблений!
1111131Запрещает загрузить систему при неравенстве дат при любых условиях, но позволяет приравнять дату (в любую сторону) любому сотруднику. Не рекомендуется использовать для предотвращения злоупотреблений!