374 lines
13 KiB
Transact-SQL
Raw Blame History

UPDATE TBDD_MODULES SET PRODUCT_VERSION = '2.4.4.9' where NAME = 'Record-Organizer'
GO
CREATE TABLE TBPMO_SAP_FUBA
(
GUID INTEGER NOT NULL IDENTITY(1,1),
NAME VARCHAR(100) NOT NULL,
COMMENT VARCHAR(500),
Method VARCHAR(50) NOT NULL DEFAULT 'TABLE',
TableName VARCHAR(100) NOT NULL,
Host VARCHAR(100) NOT NULL,
SystemNumber VARCHAR(30) NOT NULL,
UserName VARCHAR(50) NOT NULL,
[Password] VARCHAR(100) NOT NULL,
Client VARCHAR(100) NOT NULL,
[Language] VARCHAR(20) NOT NULL,
TempTableName VARCHAR(100) NOT NULL,
FuBa_SplitCharacter VARCHAR(1) NOT NULL DEFAULT ';',
WHERE_CLAUSE VARCHAR(500),
ACTIVE BIT NOT NULL DEFAULT 0,
ADDED_WHO VARCHAR(50) NOT NULL DEFAULT 'DEFAULT',
ADDED_WHEN DATETIME DEFAULT GETDATE(),
CHANGED_WHO VARCHAR(50),
CHANGED_WHEN DATETIME,
CONSTRAINT PK_TBPMO_SAP_FUBA PRIMARY KEY (GUID)
)
GO
CREATE TRIGGER TBPMO_SAP_FUBA_AFT_UPD ON TBPMO_SAP_FUBA
FOR UPDATE
AS
UPDATE TBPMO_SAP_FUBA SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBPMO_SAP_FUBA.GUID = INSERTED.GUID
GO
INSERT INTO TBPMO_CONTROL_TYPE (TYPE_NAME) VALUES ('DatagridviewCheckable')
GO
CREATE TRIGGER TBPMO_SAP_FUBA_AFT_UPD ON TBPMO_SAP_FUBA
FOR UPDATE
AS
UPDATE TBPMO_SAP_FUBA SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBPMO_SAP_FUBA.GUID = INSERTED.GUID
GO
ALTER VIEW VWPMO_CONTROL_HINT AS
SELECT
T2.FORM_ID,
T1.CONTROL_ID,
T.HINT
FROM
TBPMO_CONTROL_LANGUAGE T,
TBPMO_CONTROL_SCREEN T1,
TBPMO_CONTROL T2
WHERE
T.CONTROL_SCREEN_ID = T1.GUID
AND T1.CONTROL_ID = T2.GUID
AND T1.SCREEN_ID = 1
AND (HINT IS NOT NULL AND HINT <> '')
GO
ALTER TABLE TBDD_USER
ADD WAN_ENVIRONMENT BIT NOT NULL DEFAULT 0
GO
UPDATE TBDD_USER SET WAN_ENVIRONMENT = 1
GO
--RENAME TBDD_EMAIL_ACCOUNT in OLD
CREATE TABLE TBDD_EMAIL_ACCOUNT
(
GUID INTEGER IDENTITY(0,1),
NAME VARCHAR(50),
EMAIL_FROM VARCHAR(100) NOT NULL,
EMAIL_SMTP VARCHAR(100) NOT NULL,
EMAIL_USER VARCHAR(100) NOT NULL,
EMAIL_PW VARCHAR(100) NOT NULL DEFAULT '',
PORT INTEGER NOT NULL DEFAULT '25',
ACTIVE BIT NOT NULL DEFAULT 1,
ADDED_WHO VARCHAR(50) DEFAULT 'DEFAULT' NOT NULL,
ADDED_WHEN DATETIME DEFAULT GETDATE(),
CHANGED_WHO VARCHAR(50),
CHANGED_WHEN DATETIME,
CONSTRAINT PK_TBDD_EMAIL_ACCOUNT PRIMARY KEY (GUID)
)
GO
DROP TRIGGER TBDD_EMAIL_ACCOUNT_AFT_UPD
GO
CREATE TRIGGER TBDD_EMAIL_ACCOUNT_AFT_UPD ON TBDD_EMAIL_ACCOUNT
FOR UPDATE
AS
BEGIN
UPDATE TBDD_EMAIL_ACCOUNT SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBDD_EMAIL_ACCOUNT.GUID = INSERTED.GUID
END
GO
INSERT INTO TBDD_EMAIL_ACCOUNT (NAME,
EMAIL_FROM,
EMAIL_SMTP ,
EMAIL_USER,
EMAIL_PW,
ACTIVE) SELECT NAME,
EMAIL_FROM,
EMAIL_SMTP ,
EMAIL_USER,
EMAIL_PW,
ACTIVE FROM TBDD_EMAIL_ACCOUNT_OLD
ALTER TABLE TBPMO_FOLLOW_UP_EMAIL
ADD CTRL_USER_DIRECT INTEGER NOT NULL DEFAULT 0
GO
ALTER TABLE TBPMO_FOLLOW_UP_EMAIL
ADD CTRL_GROUP_DIRECT INTEGER NOT NULL DEFAULT 0
GO
ALTER VIEW VWPMO_FOLLOW_UP_EMAIL AS
SELECT
T1.GUID FOLLOW_UP_ID,
T1.NAME,
T1.FOLLOW_UP_SEQUENCE,
T1.FOLLOW_UP_DAYS,
T1.FOLLOW_UP_TIME_SPAN,
CONVERT(CHAR(5),GETDATE(),108) NOW_TIME,
T.RECORD_ID,
CONVERT(DATE,T.VALUE) VALUE,
T1.EMAIL_SUBJECT,
T1.EMAIL_BODY,
T1.PROCESS_SELECT1,
T1.PROCESS_SELECT2,
T1.PROCESS_SELECT3,
T1.PROCESS_SELECT4,
T1.PROCESS_SELECT5,
T1.PROCESS_SELECT6,
T1.PROCESS_SELECT7,
T1.PROCESS_SELECT8,
T1.PROCESS_SELECT9,
T1.PROCESS_SELECT10,
T1.TIME_UNITY,
T1.TIME_DIST,
CASE T1.TIME_UNITY
WHEN 'Month' THEN
DATEDIFF(month, getdate(),convert(Date,T.value))
WHEN 'Week' THEN
DATEDIFF(week, getdate(),convert(Date,T.value))
END TIME_SPAN,
T1.DEPENDENT_DATE_CTRL_ID,
T1.DEPENDENT_DONE_CTRL_ID,
(SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = T1.DEPENDENT_DONE_CTRL_ID AND RECORD_ID = T.RECORD_ID) DONE_VALUE,
T2.GUID AS CONSTRUCTOR_ID,
T2.FORM_TITLE AS CONSTRUCTOR_TITLE,
T1.CTRL_USER_DIRECT,
T1.CTRL_GROUP_DIRECT
FROM
VWPMO_VALUES T,
TBPMO_FOLLOW_UP_EMAIL T1,
TBPMO_FORM_CONSTRUCTOR T2
WHERE
T1.ACTIVE = 1 AND
(SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = T1.DEPENDENT_DONE_CTRL_ID AND RECORD_ID = T.RECORD_ID) = 'False' And
T.CONTROL_ID = T1.DEPENDENT_DATE_CTRL_ID AND
T1.CONSTRUCTOR_ID = T2.GUID AND
T1.TIME_SPAN =
CASE T1.TIME_UNITY
WHEN 'Month' THEN
DATEDIFF(month, getdate(),convert(Date,T.value))
WHEN 'Week' THEN
DATEDIFF(week, getdate(),convert(Date,T.value))
END
GO
ALTER TABLE TBPMO_CONTROL_VALUE
ADD CHANGE_STEP INTEGER NOT NULL DEFAULT 0
GO
ALTER TABLE TBPMO_CONTROL_VALUE
ADD REDO BIT NOT NULL DEFAULT 0
GO
CREATE TABLE TBPMO_CONTROL_VALUE_CHANGE_HISTORY
(
GUID INTEGER NOT NULL IDENTITY(1,1),
RECORD_ID INTEGER,
CONTROL_ID INTEGER,
VALUE VARCHAR(MAX),
CHANGE_STEP INTEGER,
ADDED_WHO VARCHAR(50) NOT NULL,
ADDED_WHEN DATETIME DEFAULT GETDATE(),
CHANGED_WHO VARCHAR(50),
CHANGED_WHEN DATETIME,
CONSTRAINT PK_TBPMO_CONTROL_VALUE_CHANGE_HISTORY_CHANGE_HISTORY PRIMARY KEY (GUID)
)
GO
CREATE TRIGGER TBPMO_CONTROL_VALUE_CHANGE_HISTORY_CHANGE_HISTORY_UPD ON TBPMO_CONTROL_VALUE_CHANGE_HISTORY
FOR UPDATE
AS
UPDATE TBPMO_CONTROL_VALUE_CHANGE_HISTORY SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBPMO_CONTROL_VALUE_CHANGE_HISTORY.GUID = INSERTED.GUID
GO
ALTER TRIGGER [dbo].[TBPMO_CONTROL_VALUE_AFT_UPD] ON [dbo].[TBPMO_CONTROL_VALUE]
FOR UPDATE
AS
BEGIN TRY
DECLARE
@CONTROL_ID INTEGER,
@RECORD_ID INTEGER,
@VALUE_NEW VARCHAR(MAX),
@VALUE_OLD VARCHAR(MAX),
@CHANGED_WHO VARCHAR(50),
@CHANGE_STEP INTEGER,
@REDO BIT
IF UPDATE (VALUE)
BEGIN
SELECT
@CONTROL_ID = DELETED.CONTROL_ID,
@RECORD_ID = DELETED.RECORD_ID,
@VALUE_OLD = DELETED.VALUE
FROM DELETED
--RAISERROR (@VALUE , 16, 1)
SELECT
@CHANGE_STEP = CHANGE_STEP,
@CHANGED_WHO = CHANGED_WHO,
@VALUE_NEW = VALUE,
@REDO = REDO
FROM INSERTED
IF @REDO = 0
IF @VALUE_OLD <> @VALUE_NEW AND NOT EXISTS(SELECT GUID FROM TBPMO_CONTROL_VALUE_CHANGE_HISTORY WHERE RECORD_ID = @RECORD_ID AND CONTROL_ID = @CONTROL_ID AND VALUE = @VALUE_OLD AND CHANGE_STEP = @CHANGE_STEP)
INSERT INTO TBPMO_CONTROL_VALUE_CHANGE_HISTORY (RECORD_ID,CONTROL_ID,VALUE,CHANGE_STEP,ADDED_WHO) VALUES
(@RECORD_ID,@CONTROL_ID,@VALUE_OLD,@CHANGE_STEP,@CHANGED_WHO)
--Update des Logs f<>r loggen von Datensatz<74>nderungen
IF EXISTS(SELECT LOG_UPDATE FROM TBPMO_RECORD_LOG_CONFIG WHERE CONTROL_ID = @CONTROL_ID AND LOG_UPDATE = 1)
BEGIN
If @VALUE_OLD <> @VALUE_NEW
BEGIN
DECLARE @LOG VARCHAR(1000)
SET @LOG = 'Update of Value - OLD-VALUE: ' + @VALUE_OLD + ' / NEW VALUE: ' + @VALUE_NEW
INSERT INTO TBPMO_RECORD_LOG (RECORD_ID,CONTROL_ID,LOG_DESCRIPTION,ADDED_WHO) VALUES
(@RECORD_ID,@CONTROL_ID,@LOG,@CHANGED_WHO)
END
END
END
--Generelle Updates (Datum und Recor-<2D>nderungen)
UPDATE TBPMO_CONTROL_VALUE SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBPMO_CONTROL_VALUE.GUID = INSERTED.GUID
UPDATE TBPMO_RECORD SET CHANGED_WHO = @CHANGED_WHO WHERE TBPMO_RECORD.GUID = @RECORD_ID
END TRY
BEGIN CATCH
PRINT 'ERROR IN PROCEDURE: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE())
+ ' - ERROR-MESSAGE: '
+ CONVERT(VARCHAR(500),ERROR_MESSAGE())
END CATCH
GO
CREATE PROCEDURE [dbo].[PRPMO_REDO_RECORD_CHANGES] (@RECORD_ID INTEGER)
AS
BEGIN
DECLARE
@CHANGE_STEP INTEGER,
@CONTROL_ID INTEGER,
@GUID INTEGER,
@VALUE VARCHAR(MAX)
DECLARE c_REDO CURSOR FOR
SELECT MAX(GUID),CONTROL_ID, CHANGE_STEP FROM TBPMO_CONTROL_VALUE_CHANGE_HISTORY WHERE RECORD_ID = @RECORD_ID GROUP BY CONTROL_ID, CHANGE_STEP, RECORD_ID
OPEN c_REDO
FETCH NEXT FROM c_REDO INTO @GUID,@CONTROL_ID,@CHANGE_STEP
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @VALUE = VALUE FROM TBPMO_CONTROL_VALUE_CHANGE_HISTORY WHERE GUID = @GUID
UPDATE TBPMO_CONTROL_VALUE SET VALUE = @VALUE, REDO = 1 WHERE RECORD_ID = @RECORD_ID AND CONTROL_ID = @CONTROL_ID
DELETE FROM TBPMO_CONTROL_VALUE_CHANGE_HISTORY WHERE GUID = @GUID
UPDATE TBPMO_CONTROL_VALUE SET REDO = 0 WHERE RECORD_ID = @RECORD_ID AND CONTROL_ID = @CONTROL_ID
FETCH NEXT FROM c_REDO INTO @GUID,@CONTROL_ID,@CHANGE_STEP
END
CLOSE c_REDO
DEALLOCATE c_REDO
END
GO
ALTER TABLE TBPMO_RECORD
ADD COLOR VARCHAR(50) NOT NULL DEFAULT ''
GO
ALTER PROCEDURE [dbo].[PRPMO_CREATE_SQL](@pFORM_ID INT)
AS
DECLARE @COL_NAME VARCHAR(50),
@SQL_BEGIN VARCHAR(1000),
@SQL_END VARCHAR(2000),
@SQL VARCHAR(5000),
@CONTROL_ID INT,
@RESULT VARCHAR(8000),
@TYPEID INT,
@TABINDEX INT,
@SQL_LBL VARCHAR(2000)
DECLARE c_SPALTENNAMEN CURSOR FOR SELECT T.GUID,'['+T.COL_NAME+']' AS 'COL_NAME', T2.GUID,T1.TAB_INDEX FROM TBPMO_CONTROL T, TBPMO_CONTROL_SCREEN T1, TBPMO_CONTROL_TYPE T2 WHERE
T.SHOW_COLUMN = 1 AND T.[COL_NAME] <> '' AND T.GUID = T1.CONTROL_ID AND T.CONTROL_TYPE_ID = T2.GUID AND T.FORM_ID = @pFORM_ID AND LEN(ISNULL(T.COL_NAME,'')) > 0 and t.CONTROL_TYPE_ID not in (1,5) UNION
SELECT T.GUID,'['+T.NAME+']' AS 'COL_NAME', T2.GUID,T1.TAB_INDEX FROM TBPMO_CONTROL T, TBPMO_CONTROL_SCREEN T1, TBPMO_CONTROL_TYPE T2 WHERE
T.GUID = T1.CONTROL_ID AND T.CONTROL_TYPE_ID = T2.GUID AND T.FORM_ID = @pFORM_ID and t.CONTROL_TYPE_ID = 1 AND LEN(ISNULL(t.SQL_COMMAND_1,'')) > 0 ORDER BY TAB_INDEX
BEGIN
SET @SQL_BEGIN = 'SELECT T.GUID AS [Record-ID],T.COLOR AS ROW_COLOR, T.FORM_ID AS [Form-ID],'
SET @SQL_END = ',T.ADDED_WHO as AddedWho,T.ADDED_WHEN as AddedWhen, T.CHANGED_WHO As ChangedWho, T.CHANGED_WHEN As ChangedWhen FROM TBPMO_RECORD T, TBPMO_FORM T1 WHERE T.FORM_ID = T1.GUID AND T.FORM_ID = @FORM_ID'
SET @SQL_END = REPLACE(@SQL_END,'@FORM_ID',@pFORM_ID)
OPEN c_SPALTENNAMEN
FETCH NEXT FROM c_SPALTENNAMEN INTO @CONTROL_ID,@COL_NAME,@TYPEID,@TABINDEX
WHILE @@FETCH_STATUS = 0
BEGIN
SET @COL_NAME = REPLACE(@COL_NAME,'lbl','')
IF LEN(ISNULL(@SQL,'')) = 0
BEGIN
IF @TYPEID = 10 OR @TYPEID = 11
SET @SQL = 'ISNULL((SELECT CASE WHEN UPPER(RTRIM(LTRIM(T5.VALUE))) = ''TRUE'' THEN 1 ELSE 0 END FROM TBPMO_CONTROL_VALUE T5 WHERE T5.RECORD_ID = T.GUID AND T5.CONTROL_ID = ' + CONVERT(VARCHAR(20),@CONTROL_ID) + '),0) AS ' + @COL_NAME
ELSE IF @TYPEID = 6
SET @SQL = '(SELECT T6.IMG FROM TBPMO_CONTROL_IMAGE T6 WHERE T6.RECORD_ID = T.GUID AND T6.CONTROL_ID = ' + CONVERT(VARCHAR(20),@CONTROL_ID) + ') AS ' + @COL_NAME
ELSE IF @TYPEID = 1
BEGIN
SELECT @SQL_LBL = SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = @CONTROL_ID
SET @SQL_LBL = REPLACE(UPPER(@SQL_LBL),'@RECORD_ID','T.GUID')
SET @SQL = '(' + @SQL_LBL + ') AS ' + @COL_NAME
END
ELSE IF @TYPEID = 12 OR @TYPEID = 7 OR @TYPEID = 14
SET @SQL = '(SELECT [dbo].[FNPMO_GET_CONTROL_VALUES](' + CONVERT(VARCHAR(20),@CONTROL_ID) + ', T.GUID)) AS ' + @COL_NAME
ELSE
SET @SQL = '(SELECT T5.VALUE FROM TBPMO_CONTROL_VALUE T5 WHERE T5.RECORD_ID = T.GUID AND T5.CONTROL_ID = ' + CONVERT(VARCHAR(20),@CONTROL_ID) + ') AS ' + @COL_NAME
END
ELSE
BEGIN
IF (@TYPEID = 10) OR (@TYPEID = 11)
SET @SQL = @SQL + ',ISNULL((SELECT CASE WHEN UPPER(RTRIM(LTRIM(T5.VALUE))) = ''TRUE'' THEN 1 ELSE 0 END FROM TBPMO_CONTROL_VALUE T5 WHERE T5.RECORD_ID = T.GUID AND T5.CONTROL_ID = ' + CONVERT(VARCHAR(20),@CONTROL_ID) + '),0) AS ' + @COL_NAME
ELSE IF @TYPEID = 6
SET @SQL = @SQL + ',(SELECT T6.IMG FROM TBPMO_CONTROL_IMAGE T6 WHERE T6.RECORD_ID = T.GUID AND T6.CONTROL_ID = ' + CONVERT(VARCHAR(20),@CONTROL_ID) + ') AS ' + @COL_NAME
ELSE IF @TYPEID = 1
BEGIN
SELECT @SQL_LBL = SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = @CONTROL_ID
SET @SQL_LBL = REPLACE(UPPER(@SQL_LBL),'@RECORD_ID','T.GUID')
SET @SQL = @SQL + ',(' + @SQL_LBL + ') AS ' + @COL_NAME
END
ELSE IF @TYPEID = 12 OR @TYPEID = 7 OR @TYPEID = 14
SET @SQL = @SQL + ',(SELECT [dbo].[FNPMO_GET_CONTROL_VALUES](' + CONVERT(VARCHAR(20),@CONTROL_ID) + ', T.GUID)) AS ' + @COL_NAME
ELSE
SET @SQL = @SQL + ',(SELECT T5.VALUE FROM TBPMO_CONTROL_VALUE T5 WHERE T5.RECORD_ID = T.GUID AND T5.CONTROL_ID = ' + CONVERT(VARCHAR(20),@CONTROL_ID) + ') AS ' + @COL_NAME
END
FETCH NEXT FROM c_SPALTENNAMEN INTO @CONTROL_ID,@COL_NAME,@TYPEID,@TABINDEX
END
CLOSE c_SPALTENNAMEN
DEALLOCATE c_SPALTENNAMEN
SET @RESULT = @SQL_BEGIN + @SQL + @SQL_END
IF EXISTS (SELECT FORM_ID FROM TBPMO_FORM_SQL WHERE FORM_ID = @pFORM_ID)
UPDATE TBPMO_FORM_SQL SET SQL_COMMAND = @RESULT WHERE FORM_ID = @pFORM_ID
ELSE
INSERT INTO TBPMO_FORM_SQL(FORM_ID,SQL_COMMAND) VALUES(@pFORM_ID,@RESULT)
END
GO
/*UPDATE DER SQLS*/
BEGIN
DECLARE
@ENTITY_ID INTEGER
DECLARE c_REDO CURSOR FOR
SELECT GUID FROM TBPMO_FORM
OPEN c_REDO
FETCH NEXT FROM c_REDO INTO @ENTITY_ID
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC DBO.PRPMO_CREATE_SQL @ENTITY_ID
FETCH NEXT FROM c_REDO INTO @ENTITY_ID
END
CLOSE c_REDO
DEALLOCATE c_REDO
END
GO
EXEC PRPMO_CREATE_TEMP_VIEWS
GO