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Ä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