326 lines
12 KiB
Transact-SQL
326 lines
12 KiB
Transact-SQL
UPDATE TBDD_MODULES SET DB_VERSION = '2.4.9.0' where NAME = 'Record-Organizer'
|
||
GO
|
||
ALTER PROCEDURE [dbo].[PRPMO_DELETE_NODE](@pNODE_GUID INT,@WHO VARCHAR(50))
|
||
AS
|
||
DECLARE
|
||
@SUBNODE_ID INTEGER,
|
||
@RECORD_ID INTEGER
|
||
|
||
SELECT @RECORD_ID = RECORD_ID from TBPMO_STRUCTURE_NODES where GUID = @pNODE_GUID
|
||
IF @RECORD_ID <> NULL
|
||
BEGIN
|
||
DELETE FROM TBPMO_DOC_RECORD_LINK WHERE RECORD_ID = @RECORD_ID
|
||
EXEC PRPMO_DELETE_RECORD @RECORD_ID, @WHO, 'DELETE NODE'
|
||
END
|
||
UPDATE TBPMO_STRUCTURE_NODES SET ACTIVE = 0, COMMENT = 'DELETED [PRPMO_DELETE_NODE]', CHANGED_WHO = @WHO WHERE GUID = @pNODE_GUID
|
||
DECLARE c_REDO CURSOR LOCAL FOR
|
||
select GUID FROM TBPMO_STRUCTURE_NODES WHERE PARENT_GUID = @pNODE_GUID
|
||
OPEN c_REDO
|
||
FETCH NEXT FROM c_REDO INTO @SUBNODE_ID
|
||
WHILE @@FETCH_STATUS = 0
|
||
BEGIN
|
||
EXEC [dbo].[PRPMO_DELETE_NODE] @SUBNODE_ID,@WHO
|
||
FETCH NEXT FROM c_REDO INTO @SUBNODE_ID
|
||
END
|
||
CLOSE c_REDO
|
||
DEALLOCATE c_REDO
|
||
GO
|
||
ALTER TRIGGER [dbo].[TBPMO_RECORD_AFT_UPD] ON [dbo].[TBPMO_RECORD]
|
||
FOR UPDATE
|
||
AS
|
||
BEGIN TRY
|
||
DECLARE
|
||
@CHANGES BIT,
|
||
@RECORD_ID INTEGER,
|
||
@OLD_ENTITY_ID INTEGER,
|
||
@ENTITY_ID INTEGER,
|
||
@PARENT_RECORD INTEGER,
|
||
@ENTITY_TABLENAME VARCHAR(50),
|
||
@SQL NVARCHAR(MAX),
|
||
@DELETED_OLD BIT,
|
||
@DELETED BIT,
|
||
@RECORD_ENTITY_ID BIGINT,
|
||
@INWORK_OLD BIT,
|
||
@INWORK BIT,
|
||
@INWORK_WHO VARCHAR(50),
|
||
@CHANGED_WHO VARCHAR(50)
|
||
|
||
SELECT
|
||
@RECORD_ID = GUID,
|
||
@ENTITY_ID = FORM_ID,
|
||
@DELETED = [deleted],
|
||
@RECORD_ENTITY_ID = RECORD_ENTITY_ID,
|
||
@INWORK = IN_WORK ,
|
||
@INWORK_WHO = ISNULL(IN_WORK_WHO,''),
|
||
@CHANGED_WHO = ISNULL(CHANGED_WHO,'')
|
||
FROM inserted
|
||
|
||
--PRINT '@RECORD_ENTITY_ID: ' + CONVERT(VARCHAR(100),@RECORD_ENTITY_ID)
|
||
SET @CHANGES = 0
|
||
IF UPDATE(IN_WORK)
|
||
BEGIN
|
||
IF @INWORK_OLD = 0 and @INWORK = 1
|
||
BEGIN
|
||
DECLARE @COMMENT VARCHAR(100)
|
||
SET @COMMENT = 'RECORD IN_WORK BY: ' + @INWORK_WHO
|
||
PRINT @COMMENT
|
||
INSERT INTO TBPMO_LOG_ESSENTIALS(REFERENCE_KEY,REFERENCE_STRING,COMMENT,ADDED_WHO) VALUES (@RECORD_ID,'RECORD-ID','RECORD IN_WORK BY: ' + @INWORK_WHO, 'TRIGGER TBPMO_RECORD_AFT_UPD')
|
||
UPDATE TBPMO_RECORD SET IN_WORK_WHEN = GETDATE() FROM INSERTED WHERE TBPMO_RECORD.GUID = INSERTED.GUID
|
||
END
|
||
ELSE IF @INWORK_OLD = 1 and @INWORK = 0
|
||
BEGIN
|
||
UPDATE TBPMO_RECORD SET IN_WORK_WHEN = NULL FROM INSERTED WHERE TBPMO_RECORD.GUID = INSERTED.GUID
|
||
INSERT INTO TBPMO_LOG_ESSENTIALS(REFERENCE_KEY,REFERENCE_STRING,COMMENT,ADDED_WHO) VALUES (@RECORD_ID,'RECORD-ID','RECORD UNLOCKED', 'TRIGGER TBPMO_RECORD_AFT_UPD')
|
||
END
|
||
END
|
||
IF UPDATE(VERSION)
|
||
BEGIN
|
||
SET @CHANGES = 1
|
||
END
|
||
IF UPDATE(FORM_ID)
|
||
BEGIN
|
||
--ROLLBACK TRANSACTION
|
||
--RAISERROR('NOT ALLOWED TEMPORARILY', 16, 1)
|
||
SELECT @ENTITY_TABLENAME = [dbo].[FNPMO_GET_ENTITY_TABLENAME] (@ENTITY_ID)
|
||
--ERST DEN RECORD IN DER AKTUELLEN ENTIT<49>T L<>SCHEN
|
||
SET @SQL = 'DELETE FROM @TABLE WHERE [Record-ID] = @RECORD_ID'
|
||
SET @SQL = REPLACE(@SQL,'@TABLE',@ENTITY_TABLENAME)
|
||
SET @SQL = REPLACE(@SQL,'@RECORD_ID',@RECORD_ID)
|
||
EXEC sp_executesql @SQL
|
||
EXEC PRPMO_ENTITY_TABLE_RENEW_RECORD @ENTITY_ID,@RECORD_ID
|
||
INSERT INTO TBPMO_LOG_ESSENTIALS(REFERENCE_KEY,REFERENCE_STRING,COMMENT,ADDED_WHO) VALUES (@RECORD_ID,'RECORD-ID','CHANGED AND RENEWED ENTITY: ' + CONVERT(VARCHAR(3),@ENTITY_ID), 'TRIGGER TBPMO_RECORD_AFT_UPD')
|
||
SET @CHANGES = 1
|
||
END
|
||
IF UPDATE (PARENT_RECORD)
|
||
BEGIN
|
||
SELECT
|
||
@RECORD_ID = GUID,
|
||
@PARENT_RECORD = PARENT_RECORD,
|
||
@ENTITY_ID = FORM_ID
|
||
FROM INSERTED
|
||
SET @CHANGES = 1
|
||
IF @PARENT_RECORD > 0
|
||
BEGIN
|
||
SELECT @ENTITY_TABLENAME = ENTITY_TABLENAME FROM TBPMO_KONFIGURATION WHERE GUID = 1
|
||
SET @ENTITY_TABLENAME = @ENTITY_TABLENAME + CONVERT(VARCHAR(3),@ENTITY_ID)
|
||
SET @SQL = 'DELETE FROM @TABLE WHERE [Record-ID] = @RECORD_ID'
|
||
SET @SQL = REPLACE(@SQL,'@TABLE',@ENTITY_TABLENAME)
|
||
SET @SQL = REPLACE(@SQL,'@RECORD_ID',@RECORD_ID)
|
||
--RAISERROR(@SQL, 16, 1)
|
||
EXEC sp_executesql @SQL
|
||
INSERT INTO TBPMO_LOG_ESSENTIALS(REFERENCE_KEY,REFERENCE_STRING,COMMENT,ADDED_WHO) VALUES (@RECORD_ID,'RECORD-ID','CHANGED THE PARENT_ID (VARIETY?): ' + @CHANGED_WHO, 'TRIGGER TBPMO_RECORD_AFT_UPD')
|
||
END
|
||
END
|
||
IF UPDATE([DELETED])
|
||
BEGIN
|
||
IF @DELETED_OLD = 0 and @DELETED = 1
|
||
BEGIN
|
||
Print '@DELETED_OLD = 0 and @DELETED = 1'
|
||
SET @RECORD_ENTITY_ID = 9999000000 + @RECORD_ENTITY_ID
|
||
Print '@RECORD_ENTITY_ID: '+ CONVERT(VARCHAR(100),@RECORD_ENTITY_ID)
|
||
UPDATE TBPMO_RECORD SET RECORD_ENTITY_ID = @RECORD_ENTITY_ID FROM INSERTED WHERE TBPMO_RECORD.GUID = INSERTED.GUID
|
||
SELECT @ENTITY_TABLENAME = ENTITY_TABLENAME FROM TBPMO_KONFIGURATION WHERE GUID = 1
|
||
SET @ENTITY_TABLENAME = @ENTITY_TABLENAME + CONVERT(VARCHAR(3),@ENTITY_ID)
|
||
SET @SQL = 'DELETE FROM @TABLE WHERE [Record-ID] = @RECORD_ID'
|
||
SET @SQL = REPLACE(@SQL,'@TABLE',@ENTITY_TABLENAME)
|
||
SET @SQL = REPLACE(@SQL,'@RECORD_ID',@RECORD_ID)
|
||
EXEC sp_executesql @SQL
|
||
INSERT INTO TBPMO_LOG_ESSENTIALS(REFERENCE_KEY,REFERENCE_STRING,COMMENT,ADDED_WHO) VALUES (@RECORD_ID,'RECORD-ID','Mark Record as deleted: ' + @CHANGED_WHO, 'TRIGGER TBPMO_RECORD_AFT_UPD')
|
||
END
|
||
SET @CHANGES = 1
|
||
END
|
||
|
||
IF @CHANGES = 1
|
||
UPDATE TBPMO_RECORD SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBPMO_RECORD.GUID = INSERTED.GUID
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'ERROR IN PROCEDURE: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE())
|
||
+ ' - ERROR-MESSAGE: '
|
||
+ CONVERT(VARCHAR(500),ERROR_MESSAGE())
|
||
END CATCH
|
||
GO
|
||
ALTER TRIGGER [dbo].[TBPMO_STRUCTURE_NODES_AFT_UPD] ON [dbo].[TBPMO_STRUCTURE_NODES]
|
||
FOR UPDATE
|
||
AS
|
||
DECLARE
|
||
@ACTIVE_OLD BIT,
|
||
@ACTIVE BIT,
|
||
@RECORD_ID INTEGER,
|
||
@CHANGED_WHO VARCHAR(50)
|
||
|
||
SELECT
|
||
@ACTIVE_OLD = [ACTIVE]
|
||
FROM deleted
|
||
SELECT
|
||
@RECORD_ID = GUID,
|
||
@ACTIVE = ACTIVE,
|
||
@CHANGED_WHO = CHANGED_WHO
|
||
FROM INSERTED
|
||
|
||
IF @RECORD_ID IS NOT NULL AND @ACTIVE_OLD = 1 AND @ACTIVE = 0
|
||
BEGIN
|
||
EXEC PRPMO_DELETE_RECORD @RECORD_ID,@CHANGED_WHO,'TBPMO_STRUCTURE_NODES_AFT_UPD ACTIVE = 0'
|
||
END
|
||
ELSE IF @RECORD_ID IS NOT NULL AND @ACTIVE_OLD = 1 AND @ACTIVE = 0
|
||
BEGIN
|
||
IF EXISTS(SELECT GUID FROM TBPMO_RECORD WHERE GUID = @RECORD_ID)
|
||
UPDATE TBPMO_RECORD SET DELETED = 0, CHANGED_WHO = @CHANGED_WHO WHERE GUID = @RECORD_ID AND DELETED = 1
|
||
END
|
||
|
||
UPDATE TBPMO_STRUCTURE_NODES SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBPMO_STRUCTURE_NODES.GUID = INSERTED.GUID
|
||
|
||
GO
|
||
ALTER PROCEDURE [dbo].[PRPMO_DELETE_RECORD](@pRECORD_ID INT, @WHO VARCHAR(30),@COMMENT VARCHAR(100) = '')
|
||
AS
|
||
DECLARE @ENTITY_ID INT, @COUNT_REQUIRED INT
|
||
SELECT @ENTITY_ID = FORM_ID FROM TBPMO_RECORD WHERE GUID = @pRECORD_ID
|
||
--SET @DELETE_SQL = 'DELETE FROM TBPMO_ENTITY_TABLE@ENT_ID WHERE [Record-ID] = @RECORD_ID'
|
||
--SET @DELETE_SQL = REPLACE(@DELETE_SQL,'@ENT_ID',@ENTITY_ID)
|
||
--SET @DELETE_SQL = REPLACE(@DELETE_SQL,'@RECORD_ID',@pRECORD_ID)
|
||
--EXEC sp_executesql @DELETE_SQL
|
||
UPDATE TBPMO_RECORD SET DELETED = 1 WHERE GUID = @pRECORD_ID
|
||
DECLARE @reas As VARCHAR(250)
|
||
SET @reas = 'RECORD DELETED BY USER'
|
||
IF @COMMENT <> ''
|
||
BEGIN
|
||
SET @reas = @reas + ' - ' + @COMMENT
|
||
END
|
||
IF @pRECORD_ID <> NULL
|
||
INSERT INTO TBPMO_LOG_ESSENTIALS (REFERENCE_KEY,REFERENCE_STRING,[ENTITY_ID],COMMENT,ADDED_WHO) VALUES (@pRECORD_ID,'RECORD-ID',@ENTITY_ID, @reas, @WHO)
|
||
|
||
SELECT @COUNT_REQUIRED = COUNT(GUID) FROM TBPMO_CONTROL WHERE REQUIRED = 1 AND FORM_ID = @ENTITY_ID
|
||
IF @COUNT_REQUIRED > (SELECT COUNT(GUID) FROM TBPMO_CONTROL_VALUE WHERE RECORD_ID = @pRECORD_ID)
|
||
BEGIN
|
||
PRINT 'EXEC PRPMO_DELETE_RECORD_FINALLY - PRE INSERT - LESS REQUIRED VALUES'
|
||
EXEC PRPMO_DELETE_RECORD_FINALLY @pRECORD_ID,'PRE INSERT - LESS REQUIRED VALUES'
|
||
END
|
||
GO
|
||
CREATE FUNCTION [dbo].[FNPMO_DOC_GET_DOC_VALUE](@pDOCID INTEGER, @pRECORDID INTEGER, @pCONFIGID INTEGER)
|
||
RETURNS VARCHAR(250)
|
||
AS
|
||
BEGIN
|
||
DECLARE @RESULT VARCHAR(250)
|
||
SELECT DISTINCT @RESULT = ISNULL(VALUE,'NO DATA')
|
||
FROM TBPMO_DOC_VALUES WHERE DocID = @pDOCID AND CONFIG_ID = @pCONFIGID AND RECORD_ID = @pRECORDID
|
||
|
||
RETURN @RESULT
|
||
END
|
||
GO
|
||
ALTER TABLE TBPMO_FORM ADD ENTITY_DOC_SEARCH VARCHAR(MAX) NOT NULL DEFAULT ''
|
||
GO
|
||
UPDATE TBPMO_FORM SET ENTITY_DOC_SEARCH =
|
||
'SELECT DISTINCT T.* FROM VWPMO_DOC_SEARCH T WHERE T.DocID IN (select DISTINCT T.DOC_ID from TBPMO_DOC_RECORD_LINK T, TBPMO_RECORD T1 WHERE T.RECORD_ID = T1.GUID AND T1.FORM_ID = @ENTITY_ID) AND T.DocID IN (SELECT dwObjectID FROM VWPMO_WD_OBJECT_RIGHTS WHERE dwUserOrGroupID = @USER_ECM_ID AND dwObjectID = T.DocID)'
|
||
GO
|
||
--CREATE PROCEDURE PRPMO_CREATE_RECORD(@pRESULT INT OUTPUT,@pFORM_ID INT,@pADDED_WHO VARCHAR(50) = NULL,@pPARAMETER_1 VARCHAR(100) = NULL,@pPARAMETER_2 VARCHAR(100) = NULL,@pPARAMETER_3 VARCHAR(250) = NULL,@pPARAMETER_4 VARCHAR(250) = NULL,@pPARAMETER_5 VARCHAR(500) = NULL)
|
||
ALTER PROCEDURE [dbo].[PRPMO_CREATE_RECORD](@pRESULT INT OUTPUT,@pFORM_ID INT,@pADDED_WHO VARCHAR(50) = NULL,@pPARAMETER_1 VARCHAR(100) = NULL,@pPARAMETER_2 VARCHAR(100) = NULL,@pPARAMETER_3 VARCHAR(250) = NULL,@pPARAMETER_4 VARCHAR(250) = NULL,@pPARAMETER_5 VARCHAR(500) = NULL)
|
||
AS
|
||
DECLARE @RECORD_ENTITY_ID BIGINT,
|
||
@RECORD_ID INT,
|
||
@FEHLER VARCHAR(4000),
|
||
@LINE VARCHAR(10)
|
||
|
||
DECLARE @OUTPUTDATA TABLE(RECORD_ID INT)
|
||
|
||
BEGIN TRY
|
||
--RAISERROR ('ENTITY IS LOCKED - NO INSERT ALLOWED!',16,1)
|
||
|
||
SELECT @RECORD_ENTITY_ID = ISNULL(MAX(RECORD_ENTITY_ID),0) + 1 FROM TBPMO_RECORD WHERE FORM_ID = @pFORM_ID AND DELETED = 0
|
||
|
||
INSERT INTO TBPMO_RECORD(FORM_ID,RECORD_ENTITY_ID,ADDED_WHO)
|
||
OUTPUT INSERTED.GUID INTO @OUTPUTDATA
|
||
VALUES (@pFORM_ID,@RECORD_ENTITY_ID,LTRIM(RTRIM(@pADDED_WHO)))
|
||
|
||
SELECT @pRESULT = RECORD_ID FROM @OUTPUTDATA
|
||
|
||
RETURN
|
||
END TRY
|
||
BEGIN CATCH --Fehlerbehandlung
|
||
SET @pRESULT = 0
|
||
|
||
SET @LINE = CONVERT(VARCHAR(10),ERROR_LINE())
|
||
SET @FEHLER = CONVERT(VARCHAR(4000),ERROR_MESSAGE()) + CHAR(13) + CHAR(10) + 'ERROR-LINE: ' + @LINE
|
||
RAISERROR(@FEHLER,16,1)
|
||
|
||
RETURN
|
||
END CATCH
|
||
GO
|
||
ALTER TABLE TBPMO_CLIENT_CONN_SWITCH_USER ADD [CONN_NAME] VARCHAR(100) NOT NULL DEFAULT ''
|
||
GO
|
||
CREATE TRIGGER [dbo].[TBPMO_CLIENT_CONN_SWITCH_USER_AFT_INS] ON TBPMO_CLIENT_CONN_SWITCH_USER
|
||
WITH EXECUTE AS CALLER
|
||
FOR INSERT
|
||
AS
|
||
BEGIN TRY
|
||
DECLARE
|
||
@CONN_ID INTEGER,
|
||
@GUID INTEGER
|
||
SELECT
|
||
@GUID = GUID,
|
||
@CONN_ID = CONN_SWITCH_ID
|
||
|
||
FROM INSERTED
|
||
|
||
UPDATE TBPMO_CLIENT_CONN_SWITCH_USER SET CONN_NAME = (SELECT DESCRIPTION FROM TBPMO_CLIENT_CONNECTION_SWITCH WHERE GUID = @CONN_ID)
|
||
FROM INSERTED
|
||
WHERE TBPMO_CLIENT_CONN_SWITCH_USER.GUID = INSERTED.GUID
|
||
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'ERROR IN PROCEDURE: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE())
|
||
+ ' - ERROR-MESSAGE: '
|
||
+ CONVERT(VARCHAR(500),ERROR_MESSAGE())
|
||
END CATCH
|
||
GO
|
||
ALTER TRIGGER [dbo].[TBPMO_DOC_RECORD_LINK_AFT_DEL] ON [dbo].[TBPMO_DOC_RECORD_LINK]
|
||
WITH EXECUTE AS CALLER
|
||
FOR DELETE
|
||
AS
|
||
BEGIN TRY
|
||
DECLARE
|
||
@RECORD_ID INTEGER,
|
||
@DOC_ID INTEGER,
|
||
@ENTITY_ID INTEGER
|
||
SELECT
|
||
@RECORD_ID = RECORD_ID,
|
||
@DOC_ID = DOC_ID
|
||
FROM DELETED
|
||
|
||
SELECT @ENTITY_ID = FORM_ID FROM TBPMO_RECORD WHERE GUID = @RECORD_ID
|
||
IF @RECORD_ID IS NOT NULL
|
||
INSERT INTO [dbo].[TBPMO_LOG_ESSENTIALS]
|
||
([REFERENCE_KEY]
|
||
,[REFERENCE_STRING]
|
||
,[COMMENT]
|
||
,[ADDED_WHO]
|
||
|
||
,[ENTITY_ID])
|
||
VALUES
|
||
(@RECORD_ID,
|
||
'RECORD-ID'
|
||
,'DocRecord-Link deleted'
|
||
,'TBPMO_DOC_RECORD_LINK_AFT_DEL'
|
||
,@ENTITY_ID)
|
||
|
||
DELETE FROM TBPMO_DOC_VALUES WHERE DocID = @DOC_ID AND RECORD_ID = @RECORD_ID
|
||
|
||
EXEC PRPMO_DOC_RECORD_LINK_UPD_ENTITY_TABLE @RECORD_ID
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'ERROR IN TRIGGER: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE()) + ' - ROW: ' + CONVERT(VARCHAR(10),ERROR_LINE())
|
||
+ ' - ERROR-MESSAGE: '
|
||
+ CONVERT(VARCHAR(500),ERROR_MESSAGE())
|
||
END CATCH
|
||
GO
|
||
-- =============================================
|
||
-- Author: DD-MS
|
||
-- Create date: 25.06.2019
|
||
-- Description: releases inwork-records which are in use more than (check code)
|
||
-- =============================================
|
||
CREATE PROCEDURE PRMO_CUST_RELEASE_IN_WORK_RECORDS
|
||
|
||
AS
|
||
BEGIN
|
||
UPDATE TBPMO_RECORD SET IN_WORK = 0, IN_WORK_WHEN = NULL, IN_WORK_WHO = NULL
|
||
WHERE GUID IN (select GUID from TBPMO_RECORD where IN_WORK = 1 AND (DATEDIFF(MINUTE,IN_WORK_WHEN, GETDATE()) >= 10 OR IN_WORK_WHEN IS NULL ))
|
||
END
|
||
GO |