Настройка автоматического перевода смены в Абонемент
Абонемент позволяет настроить автоматические запланированные переводы смены в определённое время.
Для этого используются: Планировщик 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%
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,'§ion=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.
Итог: Дата ночного аудита соответствует календарной.
Операция перевода смены не обратима! ВАЖНО!
Ни в коем случае не проверять работоспособность связки на рабочей базе объекта!
Перевод смены на завтрашний день вызовет затруднения при работе в продолжении текущего дня.


