Files
luos/workflow/engine/methods/setup/setupSchemas/triggerAppDelegationInsert_mssql.sql
2011-03-12 12:54:31 +00:00

108 lines
3.4 KiB
Transact-SQL

CREATE TRIGGER APP_DELEGATION_INSERT
ON APP_DELEGATION
INSTEAD OF INSERT
AS
BEGIN
DECLARE @DEFAULT_LANG VARCHAR(2);
DECLARE @APP_NUMBER INT;
DECLARE @APP_STATUS VARCHAR(32);
DECLARE @APP_CREATE_DATE DATETIME;
DECLARE @APP_TITLE VARCHAR(255);
DECLARE @APP_PRO_TITLE VARCHAR(255);
DECLARE @APP_TAS_TITLE VARCHAR(255);
DECLARE @APP_CURRENT_USER VARCHAR(255);
DECLARE @PREVIOUS_USR_UID VARCHAR(32);
DECLARE @APP_DEL_PREVIOUS_USER VARCHAR(255);
DECLARE @APP_THREAD_STATUS VARCHAR(32);
SET @DEFAULT_LANG = '{lang}';
SELECT TOP 1 APPLICATION.APP_NUMBER into APP_NUMBER FROM APPLICATION WHERE APP_UID = 'NEW.APP_UID';
SELECT TOP 1 APPLICATION.APP_STATUS into APP_STATUS FROM APPLICATION WHERE APP_UID = 'NEW.APP_UID';
SELECT TOP 1 APPLICATION.APP_CREATE_DATE into APP_CREATE_DATE FROM APPLICATION WHERE APP_UID = 'NEW.APP_UID';
SELECT TOP 1 CONTENT.CON_VALUE into APP_TITLE FROM CONTENT WHERE 'NEW.APP_UID'=CON_ID AND CON_CATEGORY='APP_TITLE' and CON_LANG = '{lang}';
IF ( @APP_TITLE IS NULL )
SET @APP_TITLE = '';
SELECT TOP 1 CONTENT.CON_VALUE into APP_PRO_TITLE FROM CONTENT WHERE 'NEW.PRO_UID'=CON_ID AND CON_CATEGORY='PRO_TITLE' and CON_LANG = '{lang}';
SELECT TOP 1 CONTENT.CON_VALUE into APP_TAS_TITLE FROM CONTENT WHERE 'NEW.TAS_UID'=CON_ID AND CON_CATEGORY='TAS_TITLE' and CON_LANG = '{lang}';
SELECT TOP 1 (USERS.USR_LASTNAME+''+ USERS.USR_FIRSTNAME) as USR_NAME INTO APP_CURRENT_USER FROM USERS WHERE USR_UID = 'NEW.USR_UID';
IF ( @APP_CURRENT_USER IS NULL )
SET @APP_CURRENT_USER = '';
IF ( 'NEW.DEL_PREVIOUS' > 0 )
SELECT TOP 1 USR_UID INTO PREVIOUS_USR_UID FROM APP_DELEGATION WHERE APP_UID = 'NEW.APP_UID' AND DEL_INDEX = 'NEW.DEL_PREVIOUS';
SELECT TOP 1 (USERS.USR_LASTNAME+''+USERS.USR_FIRSTNAME) as USR_NAME INTO APP_DEL_PREVIOUS_USER FROM USERS WHERE USR_UID = @PREVIOUS_USR_UID;
IF ( @APP_DEL_PREVIOUS_USER IS NULL )
SET @APP_DEL_PREVIOUS_USER = '';
ELSE
SET @APP_DEL_PREVIOUS_USER = '';
SET @PREVIOUS_USR_UID = '';
SELECT TOP 1 APP_THREAD_STATUS INTO APP_THREAD_STATUS FROM APP_THREAD WHERE APP_UID = 'NEW.APP_UID' AND DEL_INDEX = 'NEW.DEL_PREVIOUS';
IF ( @APP_THREAD_STATUS IS NULL )
SET @APP_THREAD_STATUS = 'OPEN';
INSERT INTO APP_CACHE_VIEW (
APP_UID,
DEL_INDEX,
APP_NUMBER,
APP_STATUS,
USR_UID,
PREVIOUS_USR_UID,
TAS_UID,
PRO_UID,
DEL_DELEGATE_DATE,
DEL_INIT_DATE,
DEL_TASK_DUE_DATE,
DEL_FINISH_DATE,
DEL_THREAD_STATUS,
APP_THREAD_STATUS,
APP_TITLE,
APP_PRO_TITLE,
APP_TAS_TITLE,
APP_CURRENT_USER,
APP_DEL_PREVIOUS_USER,
DEL_PRIORITY,
DEL_DURATION,
DEL_QUEUE_DURATION,
DEL_DELAY_DURATION,
DEL_STARTED,
DEL_FINISHED,
DEL_DELAYED,
APP_CREATE_DATE,
APP_FINISH_DATE,
APP_UPDATE_DATE,
APP_OVERDUE_PERCENTAGE
)
VALUES (
'NEW.APP_UID',
'NEW.DEL_INDEX',
@APP_NUMBER,
@APP_STATUS,
'NEW.USR_UID',
@PREVIOUS_USR_UID,
'NEW.TAS_UID',
'NEW.PRO_UID',
substring('NEW.DEL_DELEGATE_DATE',1,10),
substring('NEW.DEL_INIT_DATE',1,10),
substring('NEW.DEL_TASK_DUE_DATE',1,10),
substring('NEW.DEL_FINISH_DATE',1,10),
'NEW.DEL_THREAD_STATUS',
@APP_THREAD_STATUS,
@APP_TITLE,
@APP_PRO_TITLE,
@APP_TAS_TITLE,
@APP_CURRENT_USER,
@APP_DEL_PREVIOUS_USER,
'NEW.DEL_PRIORITY',
'NEW.DEL_DURATION',
'NEW.DEL_QUEUE_DURATION',
'NEW.DEL_DELAY_DURATION',
'NEW.DEL_STARTED',
'NEW.DEL_FINISHED',
'NEW.DEL_DELAYED',
@APP_CREATE_DATE,
NULL,
GETDATE(),
'NEW.APP_OVERDUE_PERCENTAGE'
);
END