Настройка автоматического перевода смены в Абонемент

Абонемент позволяет настроить автоматические запланированные переводы смены в определённое время.

Для этого используются: Планировщик Windows (или любой другой предпочитаемый планировщик), .bat файл и .sql файл запроса на перевод смены.

Подготовленные .bat и .sql файлы можно найти в поставке Абонемент по адресу FullversionVerXXX\utils\AUTOSHIFTCHANGE\

Содержание файла autoshiftchange.bat:

set isql="C:\Program Files (x86)\Firebird\Firebird_2_5\bin\isql.exe"
set inputfile=autoshiftchange.sql
%isql% -input %inputfile% 
 
Для корректной работы требуется удостоверится, что строка set isql указывает на isql.exe используемого FireBird.
Также для верности, можно прописать абсолютный путь к .sql файлу.
 
Содержание файла autoshiftchange.sql:
CONNECT 'C:\_UCS\_fitness\ibdata\FITNESS_TEST.FDB' USER 'ucs' PASSWORD 'ucs';
select * from sys$set_context('USER_SESSION','PRODUCT','ABONEMENT');
select * from sp_workshift_change(0,1,'&section=0&usesection=1&hotel=ТУТ ДОЛЖЕН БЫТЬ HOTELS.ID - ИДЕНТИФИКАТОР ОБЪЕКТА');
commit work;

Соответственно, для корректной работы требуется поправить адрес к файлу БД в которой требуется производить перевод смены, а также заменить "ТУТ ДОЛЖЕН БЫТЬ HOTELS.ID - ИДЕНТИФИКАТОР ОБЪЕКТА" на ID объекта (где можно увидеть данный id указанно на рис.1).

 

Рис.1 Вкладка общие параметры Абонемент. Крайнее правое поле - HOTELS.ID

 

Таким образом, при запуске даннного .bat файла на сервере будет запущена процедура перевода смены.

Рекоммендуется подключить запуск autoshiftchange.bat по расписанию через планировщик задач в нерабочее время объекта сразу после операции бэкапирования, и, в таком случае, смена будет переведена к началу рабочего дня.

 

Установка текущей даты в качестве даты кассовой смены

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

Содержание файла XX_SHIFT_DODO.sql:


create procedure XX_SHIFT_DODO (PARAMSTR varchar(1024))
as
declare variable XINFO varchar(1024);
declare variable SHIFT integer;
declare variable SUCCESS smallint;
declare variable WORKSHIFT double precision; declare variable CURRSHIFT double precision; begin
  xinfo = paramstr;
  xinfo =
SetNamedParam(xinfo,'hotel',getnamedparamdefnum(paramstr,'hotel',1));
  shift = 0;
  CURRSHIFT = floor(d2dbl('now'));
  select WORKSHIFT from sp_get_workshift(:xinfo) into :WORKSHIFT;
  WORKSHIFT = snn(WORKSHIFT);
  while (WORKSHIFT < CURRSHIFT) do
  begin
    select SUCCESS from sp_workshift_change(:shift,1,:xinfo) into :SUCCESS;
    if (SUCCESS<> 1) then break;
    select WORKSHIFT from sp_get_workshift(:xinfo) into :WORKSHIFT;
    WORKSHIFT = snn(WORKSHIFT);
  end
end

 

Чтобы применить данную процедуру на базе, открываем IBExpert и запускаем скрипт в Script Executive:

Рис.2 Прбонемнение скрипта на БД

 

 

После чего находим данную процедуру в базе, открываем ее и выполняем (с параметром  ' '):

Рис.3 Выполнение процедуры

После выполнения процедуры не забываем нажать commit.

Итог: Дата ночного аудита соответствует календарной.

 

 

Операция перевода смены не обратима! ВАЖНО!

Ни в коем случае не проверять работоспособность связки на рабочей базе объекта!

Перевод смены на завтрашний день вызовет затруднения при работе в продолжении текущего дня.