326 lines
12 KiB
Transact-SQL
Raw Blame History

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