Рубрики
Настройки системы

Настройка нескольких терминалов в фискальном и нефискальном режимах

В данной статье описано использование скриптов на блокировку печати.

В данной статье описано использование скриптов на блокировку печати.

Задача

Предположим, есть 3 терминала, на первом и втором установлен ФР, а на третьем обычный термо-принтер.
Для первого и второго необходимо настроить фискальный режим, а для третьего нефискальный.
В этом нам помогут триггеры из папки С:\AVERS\TRIGGERS
nocspool_st.sql — блокирует печать нефискальных чеков на указанных станциях,
norspool_st.sql — блокирует печать нефискальных отчётов на указанных станциях,
nofspool_st.sql — блокирует печать фискальных чеков и отчётов на указанных станциях.

Исполнение

Пункт 1. Подготовка и выполнение скриптов.

Определим ID станций. В C:\AVERS\front.cfg
StationID = 1 (ФР),
StationID = 2 (ФР),
StationID = 3 (принтер).

Исходя из этих параметров редактируем скрипты.

Для StationID = 1 (ФР) и StationID = 2 (ФР).

nocspool_st.sql

DROP TRIGGER NoCSpoolIns
;

CREATE TRIGGER NoCSpoolIns
AFTER INSERT ON CheckPrint
REFERENCING NEW AS n
FOR EACH ROW MODE DB2SQL
WHEN (n.Operation IN (1,8,9,10) AND n.StationID IN (1,2))
DELETE FROM CheckPrint WHERE CheckPrintID=n.CheckPrintID
;

DROP TRIGGER NoCSpoolUpd
;

CREATE TRIGGER NoCSpoolUpd
AFTER UPDATE ON CheckPrint
REFERENCING NEW AS n
FOR EACH ROW MODE DB2SQL
WHEN (n.Operation IN (1,8,9,10) AND n.StationID IN (1,2))
DELETE FROM CheckPrint WHERE CheckPrintID=n.CheckPrintID
;

norspool_st.sql

DROP TRIGGER NoRSpoolIns
;

CREATE TRIGGER NoRSpoolIns
AFTER INSERT ON ReportPrint
REFERENCING NEW AS n
FOR EACH ROW MODE DB2SQL
WHEN ((n.ReportID=24 OR n.ReportID=100) AND n.StationID IN (1,2))
DELETE FROM ReportPrint WHERE ReportPrintID=n.ReportPrintID
;

DROP TRIGGER NoRSpoolUpd
;

CREATE TRIGGER NoRSpoolUpd
AFTER UPDATE ON ReportPrint
REFERENCING NEW AS n
FOR EACH ROW MODE DB2SQL
WHEN ((n.ReportID=24 OR n.ReportID=100) AND n.StationID IN (1,2))
DELETE FROM ReportPrint WHERE ReportPrintID=n.ReportPrintID
;

nocspool_st.sql
norspool_st.sql

Для StationID = 3 (принтер).

nofspool_st.sql

DROP TRIGGER Rep25
;

CREATE TRIGGER Rep25
NO CASCADE BEFORE INSERT ON ReportPrint
REFERENCING NEW AS n
FOR EACH ROW MODE DB2SQL
WHEN (n.ReportID=25 AND n.StationID IN (3))
SET n.ReportID=100
;

DROP TRIGGER Rep26
;

CREATE TRIGGER Rep26
AFTER INSERT ON ReportPrint
REFERENCING NEW AS n
FOR EACH ROW MODE DB2SQL
WHEN (n.ReportID=26 AND n.StationID IN (3))
DELETE FROM ReportPrint WHERE ReportPrintID=n.ReportPrintID
;

DROP TRIGGER Rep201
;

CREATE TRIGGER Rep201
AFTER INSERT ON ReportPrint
REFERENCING NEW AS n
FOR EACH ROW MODE DB2SQL
WHEN (n.ReportID=201 AND n.StationID IN (3))
DELETE FROM ReportPrint WHERE ReportPrintID=n.ReportPrintID
;

DROP TRIGGER Ch5
;

CREATE TRIGGER Ch5
NO CASCADE BEFORE INSERT ON CheckPrint
REFERENCING NEW AS n
FOR EACH ROW MODE DB2SQL
WHEN (n.Operation=5 AND n.StationID IN (3))
SET n.Operation=10
;

DROP TRIGGER Ch7
;

CREATE TRIGGER Ch7
NO CASCADE BEFORE INSERT ON CheckPrint
REFERENCING NEW AS n
FOR EACH ROW MODE DB2SQL
WHEN (n.Operation=7 AND n.StationID IN (3))
SET n.Operation=8
;

DROP TRIGGER Ch3
;

CREATE TRIGGER Ch3
NO CASCADE BEFORE INSERT ON CheckPrint
REFERENCING NEW AS n
FOR EACH ROW MODE DB2SQL
WHEN (n.Operation=3 AND n.StationID IN (3))
SET n.Operation=9
;

DROP TRIGGER Ch246
;

CREATE TRIGGER Ch246
AFTER INSERT ON CheckPrint
REFERENCING NEW AS n
FOR EACH ROW MODE DB2SQL
WHEN (n.Operation IN (2,4,6) AND n.StationID IN (3))
DELETE FROM CheckPrint WHERE CheckPrintID=n.CheckPrintID
;

nofspool_st.sql (Не полный, часть для примера)

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

Выполнение скрипта

Пункт 2. Настройка ID станций.

Чтобы скрипты корректно отрабатывали задания необходимо правильно указать ID станции для спулеров на каждой физической станции.
Сделать это необходимо в C:\AVERS\SPOOL\spooler.cfg на каждой из станций в зависимости от того где запускаются спулера.

Например на терминале StationId = 1 (ФР) у нас будет работать только фискальный спулер, соответственно изменяем раздел MODE только для него. Остальные значения не имеют, т.к. не будут запускаться.

Пример spooler.cfg

По аналогии настраиваем остальные станции.

На этом настройка закончена.

Первичная статья написана Мустафиным Р.Б. на http://kb.averstech.ru/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *