jde_exec_blocks/32_7.sql

145 lines
6.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

execute block (
IN_ID_APP_EVENT D_BIGINT = :IN_ID_APP_EVENT)
returns (
output D_SMALLINT)
as
-- APP_EVENT VARIABLES
declare variable F_ID_APP_EVENT type of column APP_EVENT.ID_APP_EVENT;
declare variable F_APP_EVENT_ID_SOTR type of column APP_EVENT.APP_EVENT_ID_SOTR;
declare variable F_APP_EVENT_ID_REC type of column APP_EVENT.APP_EVENT_ID_REC;
declare variable F_APP_EVENT_VID type of column APP_EVENT.APP_EVENT_VID;
declare variable F_APP_EVENT_TIP type of column APP_EVENT.APP_EVENT_TIP;
declare variable F_APP_EVENT_DT type of column APP_EVENT.APP_EVENT_DT;
declare variable F_APP_EVENT_TEXT type of column APP_EVENT.APP_EVENT_TEXT;
declare variable F_APP_EVENT_PARAM type of column APP_EVENT.APP_EVENT_PARAM;
declare variable F_APP_EVENT_DATA type of column APP_EVENT.APP_EVENT_DATA;
declare variable F_APP_EVENT_DEL type of column APP_EVENT.APP_EVENT_DEL;
declare variable F_APP_EVENT_IMP type of column APP_EVENT.APP_EVENT_IMP;
declare variable F_APP_EVENT_CR type of column APP_EVENT.APP_EVENT_CR;
declare variable F_APP_EVENT_WCR type of column APP_EVENT.APP_EVENT_WCR;
declare variable F_APP_EVENT_CH type of column APP_EVENT.APP_EVENT_CH;
declare variable F_APP_EVENT_WCH type of column APP_EVENT.APP_EVENT_WCH;
declare variable F_APP_EVENT_SEANS type of column APP_EVENT.APP_EVENT_SEANS;
declare variable F_APP_EVENT_OWNERMST type of column APP_EVENT.APP_EVENT_OWNERMST;
declare variable F_APP_EVENT_FIMP type of column APP_EVENT.APP_EVENT_FIMP;
declare variable F_APP_EVENT_MPOST type of column APP_EVENT.APP_EVENT_MPOST;
-- APP_NOTE VARIABLES
declare variable NEW_ID_APP_NOTE type of D_BIGINT;
declare variable NEW_APP_NOTE_ID_SOTR type of D_BIGINT;
declare variable NEW_APP_NOTE_ID_APP_TASK type of D_BIGINT;
declare variable NEW_APP_NOTE_STATUS type of D_SMALLINT;
declare variable NEW_APP_NOTE_TIP type of D_SMALLINT;
declare variable NEW_APP_NOTE_TEXT type of D_STR1024;
declare variable NEW_APP_NOTE_DEL type of D_SMALLINT;
declare variable NEW_APP_NOTE_CR type of D_DATETIME;
declare variable NEW_APP_NOTE_WCR type of D_BIGINT;
declare variable NEW_APP_NOTE_CH type of D_DATETIME;
declare variable NEW_APP_NOTE_WCH type of D_BIGINT;
declare variable CUR_ID_APP_NOTE type of D_BIGINT;
declare variable CUR_APP_NOTE_ID_SOTR type of D_BIGINT;
declare variable CUR_APP_NOTE_ID_APP_TASK type of D_BIGINT;
declare variable CUR_APP_NOTE_STATUS type of D_SMALLINT;
declare variable CUR_APP_NOTE_TIP type of D_SMALLINT;
declare variable CUR_APP_NOTE_TEXT type of D_STR1024;
declare variable CUR_APP_NOTE_DEL type of D_SMALLINT;
declare variable CUR_APP_NOTE_CR type of D_DATETIME;
declare variable CUR_APP_NOTE_WCR type of D_BIGINT;
declare variable CUR_APP_NOTE_CH type of D_DATETIME;
declare variable CUR_APP_NOTE_WCH type of D_BIGINT;
declare variable F_OPER type of D_SMALLINT;
begin
UPDATE SEANS
set SEANS_STATUS = 2,
SEANS_ID_SOTR = 31,--14,
SEANS_ID_MST = 0, -- без привязки
SEANS_COMP_NAME = 'MB_ELITVINENKO',--//'PersonalArea'
SEANS_REMOTE_VER = null
where ID_SEANS = RDB$GET_CONTEXT('USER_SESSION', 'ID_SEANS');
output = 0;/* 0- Не выполнено, -1 Ошибка*/
-- Находим событие с переданным идентификатором
--0. ДЛЯ ПОЧТОВОГО СЕРВЕРА НИЧЕГО НЕ ДЕЛАЕМ
if (exists(select 1
from PARSRV A
where A.PARSRV_VID = 1)) then
exit;
select first 1 E.ID_APP_EVENT, E.APP_EVENT_ID_SOTR, E.APP_EVENT_ID_REC, E.APP_EVENT_VID, E.APP_EVENT_TIP,
E.APP_EVENT_DT, E.APP_EVENT_TEXT, E.APP_EVENT_PARAM, E.APP_EVENT_DATA, E.APP_EVENT_DEL,
E.APP_EVENT_IMP, E.APP_EVENT_CR, E.APP_EVENT_WCR, E.APP_EVENT_CH, E.APP_EVENT_WCH, E.APP_EVENT_SEANS,
E.APP_EVENT_OWNERMST, E.APP_EVENT_FIMP, E.APP_EVENT_MPOST
from APP_EVENT E
where E.ID_APP_EVENT = :IN_ID_APP_EVENT
into :F_ID_APP_EVENT, :F_APP_EVENT_ID_SOTR, :F_APP_EVENT_ID_REC, :F_APP_EVENT_VID, :F_APP_EVENT_TIP, :F_APP_EVENT_DT,
:F_APP_EVENT_TEXT, :F_APP_EVENT_PARAM, :F_APP_EVENT_DATA, :F_APP_EVENT_DEL, :F_APP_EVENT_IMP, :F_APP_EVENT_CR,
:F_APP_EVENT_WCR, :F_APP_EVENT_CH, :F_APP_EVENT_WCH, :F_APP_EVENT_SEANS, :F_APP_EVENT_OWNERMST,
:F_APP_EVENT_FIMP, :F_APP_EVENT_MPOST;
if (:F_APP_EVENT_VID = 8795 /*Создание уведомления*/ ) then
F_OPER = 1;
else
begin
output = -2;/*Неизвестная операция*/
suspend;
exit;
end
if (:F_APP_EVENT_ID_REC is null or :F_APP_EVENT_ID_REC = 0) then
begin
:F_APP_EVENT_ID_REC = :F_ID_APP_EVENT;
update APP_EVENT
set APP_EVENT_ID_REC = :F_APP_EVENT_ID_REC
where ID_APP_EVENT = :F_ID_APP_EVENT;
end
/*Получаем все события от начала до конца*/
for select E.ID_APP_EVENT, E.APP_EVENT_ID_SOTR, E.APP_EVENT_ID_REC, E.APP_EVENT_VID, E.APP_EVENT_TIP, E.APP_EVENT_DT,
E.APP_EVENT_TEXT, E.APP_EVENT_PARAM, E.APP_EVENT_DATA, E.APP_EVENT_DEL, E.APP_EVENT_IMP, E.APP_EVENT_CR,
E.APP_EVENT_WCR, E.APP_EVENT_CH, E.APP_EVENT_WCH, E.APP_EVENT_SEANS, E.APP_EVENT_OWNERMST,
E.APP_EVENT_FIMP, E.APP_EVENT_MPOST
from APP_EVENT E
where E.APP_EVENT_ID_REC = :F_APP_EVENT_ID_REC and
E.APP_EVENT_DEL = 0
order by E.APP_EVENT_DT
into :F_ID_APP_EVENT, :F_APP_EVENT_ID_SOTR, :F_APP_EVENT_ID_REC, :F_APP_EVENT_VID, :F_APP_EVENT_TIP,
:F_APP_EVENT_DT, :F_APP_EVENT_TEXT, :F_APP_EVENT_PARAM, :F_APP_EVENT_DATA, :F_APP_EVENT_DEL,
:F_APP_EVENT_IMP, :F_APP_EVENT_CR, :F_APP_EVENT_WCR, :F_APP_EVENT_CH, :F_APP_EVENT_WCH, :F_APP_EVENT_SEANS,
:F_APP_EVENT_OWNERMST, :F_APP_EVENT_FIMP, :F_APP_EVENT_MPOST
do
begin
if (:F_APP_EVENT_VID = 8795) then
begin
NEW_ID_APP_NOTE = :F_APP_EVENT_ID_REC;
NEW_APP_NOTE_ID_SOTR = :F_APP_EVENT_ID_SOTR;
NEW_APP_NOTE_ID_APP_TASK = 0;
NEW_APP_NOTE_STATUS = 0;
NEW_APP_NOTE_TIP = F_APP_EVENT_TIP;
NEW_APP_NOTE_TEXT = F_APP_EVENT_TEXT;
NEW_APP_NOTE_DEL = F_APP_EVENT_DEL;
NEW_APP_NOTE_CR = F_APP_EVENT_CR;
NEW_APP_NOTE_WCR = F_APP_EVENT_WCR;
NEW_APP_NOTE_CH = F_APP_EVENT_CH;
NEW_APP_NOTE_WCH = F_APP_EVENT_WCH;
end
end
update or insert into APP_NOTE (ID_APP_NOTE, APP_NOTE_ID_SOTR, APP_NOTE_ID_APP_TASK, APP_NOTE_STATUS, APP_NOTE_TIP,
APP_NOTE_TEXT, APP_NOTE_DEL, APP_NOTE_CR, APP_NOTE_WCR, APP_NOTE_CH, APP_NOTE_WCH)
values (:NEW_ID_APP_NOTE, :NEW_APP_NOTE_ID_SOTR, :NEW_APP_NOTE_ID_APP_TASK, :NEW_APP_NOTE_STATUS, :NEW_APP_NOTE_TIP,
:NEW_APP_NOTE_TEXT, :NEW_APP_NOTE_DEL, :NEW_APP_NOTE_CR, :NEW_APP_NOTE_WCR, :NEW_APP_NOTE_CH,
:NEW_APP_NOTE_WCH)
matching (ID_APP_NOTE);
suspend;
end