438 lines
19 KiB
Transact-SQL
438 lines
19 KiB
Transact-SQL
--select PRODUCT_VERSION FROM TBDD_MODULES where NAME = 'Record-Organizer'
|
||
UPDATE TBDD_MODULES SET PRODUCT_VERSION = '2.4.8.4' where NAME = 'Record-Organizer'
|
||
GO
|
||
|
||
|
||
CREATE VIEW VWPMO_WM_ACCESS_RIGHTS_USER AS
|
||
SELECT AR.dwObjectID,
|
||
AR.dwUserOrGROUPID,
|
||
AR.dwAccessRight,
|
||
AR.dwObjectDBID
|
||
FROM [172.24.12.41\BRAINPOOL].windream60.dbo.AccessRight AR LEFT JOIN [172.24.12.41\BRAINPOOL].windream60.dbo.UserGroup UG ON AR.dwUserOrGroupID = UG.dwGroupID
|
||
INNER JOIN TBPMO_DOC_RECORD_LINK RL ON AR.dwObjectID = RL.DOC_ID
|
||
INNER JOIN TBPMO_DOCRESULT_LIST DR ON AR.dwObjectID = DR.DocID
|
||
INNER JOIN TBDD_USER TU ON AR.dwUserOrGroupID = TU.USERID_FK_INT_ECM
|
||
WHERE UG.dwUserOrGroupID IS NULL
|
||
GO
|
||
CREATE VIEW VWPMO_WM_ACCESS_RIGHTS_GROUP AS
|
||
SELECT AR.dwObjectID,
|
||
UG.dwUserOrGROUPID,
|
||
AR.dwAccessRight,
|
||
AR.dwObjectDBID
|
||
FROM [172.24.12.41\BRAINPOOL].windream60.dbo.AccessRight AR LEFT JOIN [172.24.12.41\BRAINPOOL].windream60.dbo.UserGroup UG ON AR.dwUserOrGroupID = UG.dwGroupID
|
||
INNER JOIN TBPMO_DOC_RECORD_LINK RL ON AR.dwObjectID = RL.DOC_ID
|
||
INNER JOIN TBPMO_DOCRESULT_LIST DR ON AR.dwObjectID = DR.DocID
|
||
INNER JOIN TBDD_USER TU ON UG.dwUserOrGroupID = TU.USERID_FK_INT_ECM
|
||
WHERE UG.dwUserOrGroupID IS NOT NULL
|
||
GO
|
||
CREATE VIEW VWPMO_WM_ACCESS_RIGHTS AS
|
||
SELECT ARU.dwObjectID,
|
||
ARU.dwUserOrGROUPID,
|
||
ARU.dwAccessRight,
|
||
ARU.dwObjectDBID
|
||
FROM VWPMO_WM_ACCESS_RIGHTS_USER ARU UNION
|
||
SELECT ARG.dwObjectID,
|
||
ARG.dwUserOrGROUPID,
|
||
ARG.dwAccessRight,
|
||
ARG.dwObjectDBID
|
||
FROM VWPMO_WM_ACCESS_RIGHTS_GROUP ARG
|
||
GO
|
||
ALTER VIEW VWPMO_WD_OBJECT_RIGHTS AS
|
||
SELECT dwObjectID,
|
||
dwUserOrGROUPID,
|
||
MAX(dwAccessRight) AS dwAccessRight,
|
||
dwObjectDBID
|
||
FROM VWPMO_WM_ACCESS_RIGHTS
|
||
GROUP BY
|
||
dwObjectID,
|
||
dwUserOrGROUPID,
|
||
dwObjectDBID
|
||
GO
|
||
ALTER TABLE TBDD_USER_GROUPS ADD ECM_FK_ID INT NOT NULL DEFAULT 0
|
||
GO
|
||
ALTER TABLE TBPMO_RIGHT_GROUP ADD READ_ONLY_DOC BIT NOT NULL DEFAULT 0
|
||
GO
|
||
ALTER TABLE TBPMO_RECORD ADD IN_WORK_WHEN DATETIME
|
||
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
|
||
@DELETED_OLD = [deleted],
|
||
@INWORK_OLD = IN_WORK,
|
||
@OLD_ENTITY_ID = FORM_ID
|
||
FROM deleted
|
||
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
|
||
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 TABLE TBDD_CLIENT_USER
|
||
ADD CONSTRAINT UQ_CLIENT_USER UNIQUE (USER_ID, CLIENT_ID);
|
||
GO
|
||
CREATE PROCEDURE [dbo].[PRPMO_ENTITY_TABLE_REFRESH_RECORDS](@pENTITY_ID INT)
|
||
--ALTER PROCEDURE PRPMO_ENTITY_TABLE_IMPORT_RECORDS(@pENTITY_ID INT)
|
||
AS
|
||
DECLARE @REC_ID INT,
|
||
@SQL_INSERT_REC NVARCHAR(MAX),
|
||
@SQL_DELETE NVARCHAR(MAX),
|
||
@SQL_UPDATE NVARCHAR(MAX),
|
||
@CONTROL_ID INT,
|
||
@INSERT_COMAMND NVARCHAR(MAX),
|
||
@TYPEID INT,
|
||
@TABINDEX INT,
|
||
@DEFAULT VARCHAR(50),
|
||
@COL_NAME VARCHAR(50),
|
||
@ENTITY_TABLENAME VARCHAR(50)
|
||
PRINT 'WORKING ON ENTITY ''' + CONVERT(VARCHAR(3),@pENTITY_ID) + ''''
|
||
--DELETE ALL RECORDS WHICH ARE NOT ANY MORE PART OF ENTITY
|
||
SELECT @ENTITY_TABLENAME = ENTITY_TABLENAME FROM TBPMO_KONFIGURATION WHERE GUID = 1
|
||
SET @SQL_DELETE = 'DELETE FROM @TABLE@ENT WHERE [Record-ID] NOT IN (SELECT GUID FROM TBPMO_RECORD WHERE FORM_ID = @ENT)'
|
||
SET @SQL_DELETE = REPLACE(@SQL_DELETE,'@ENT',CONVERT(VARCHAR(3),@pENTITY_ID))
|
||
SET @SQL_DELETE = REPLACE(@SQL_DELETE,'@TABLE',@ENTITY_TABLENAME)
|
||
EXEC sp_executesql @SQL_DELETE
|
||
--DELETE RECORDS WHICH HAVE BEEN MODIFIED IN THE LAST 5 DAYS
|
||
SELECT @ENTITY_TABLENAME = ENTITY_TABLENAME FROM TBPMO_KONFIGURATION WHERE GUID = 1
|
||
SET @SQL_DELETE = 'DELETE FROM @TABLE@ENT WHERE [Record-ID] IN (select GUID from TBPMO_RECORD where CONVERT(DATE,CHANGED_WHEN) >= dateadd(dd,-5, cast(GETDATE() as date)) AND FORM_ID = @ENT)'
|
||
SET @SQL_DELETE = REPLACE(@SQL_DELETE,'@ENT',CONVERT(VARCHAR(3),@pENTITY_ID))
|
||
SET @SQL_DELETE = REPLACE(@SQL_DELETE,'@TABLE',@ENTITY_TABLENAME)
|
||
EXEC sp_executesql @SQL_DELETE
|
||
|
||
DECLARE cursor_Records CURSOR FOR SELECT GUID FROM TBPMO_RECORD WHERE FORM_ID = @pENTITY_ID and PARENT_RECORD = 0 AND DELETED = 0 AND CONVERT(DATE,CHANGED_WHEN) >= dateadd(dd,-5, cast(GETDATE() as date))
|
||
BEGIN
|
||
OPEN cursor_Records
|
||
FETCH NEXT FROM cursor_Records INTO @REC_ID
|
||
WHILE @@FETCH_STATUS = 0
|
||
BEGIN
|
||
SET @SQL_INSERT_REC = 'INSERT INTO @TABLE@ENT([Record-ID],ROW_COLOR, AddedWho, AddedWhen, ChangedWho, ChangedWhen) SELECT GUID,COLOR,ADDED_WHO,ADDED_WHEN,CHANGED_WHO,CHANGED_WHEN FROM TBPMO_RECORD WHERE GUID = @REC_ID'
|
||
SET @SQL_INSERT_REC = REPLACE(@SQL_INSERT_REC,'@ENT',CONVERT(VARCHAR(3),@pENTITY_ID))
|
||
SET @SQL_INSERT_REC = REPLACE(@SQL_INSERT_REC,'@TABLE',@ENTITY_TABLENAME)
|
||
SET @SQL_INSERT_REC = REPLACE(@SQL_INSERT_REC,'@REC_ID',CONVERT(VARCHAR(10),@REC_ID))
|
||
--PRINT @SQL_INSERT_REC
|
||
EXEC sp_executesql @SQL_INSERT_REC
|
||
EXEC dbo.PRPMO_DOC_RECORD_LINK_UPD_ENTITY_TABLE @REC_ID
|
||
|
||
DECLARE cursor_Columns CURSOR FOR SELECT T.GUID,'[' + T.COL_NAME + ']' AS 'COL_NAME',T2.GUID AS TYP_ID FROM TBPMO_CONTROL T,TBPMO_CONTROL_SCREEN T1,TBPMO_CONTROL_TYPE T2
|
||
WHERE T.SHOW_COLUMN = 1 AND T.GUID = T1.CONTROL_ID AND T.CONTROL_TYPE_ID = T2.GUID AND T.FORM_ID = @pENTITY_ID AND LEN(ISNULL(T.COL_NAME,'')) > 0 AND T.CONTROL_TYPE_ID NOT IN (1,5)
|
||
ORDER BY TAB_INDEX
|
||
|
||
BEGIN
|
||
OPEN cursor_Columns
|
||
FETCH NEXT FROM cursor_Columns INTO @CONTROL_ID,@COL_NAME,@TYPEID
|
||
WHILE @@FETCH_STATUS = 0
|
||
BEGIN
|
||
--PRINT 'CONTROL-ID: ' + CONVERT(VARCHAR(3),@CONTROL_ID) + ' - REC-ID: ' + CONVERT(VARCHAR(10),@REC_ID)
|
||
SET @SQL_UPDATE = 'UPDATE @TABLE@ENT SET @COL_NAME = ''@VALUE'' WHERE [Record-ID] = @REC_ID'
|
||
SET @SQL_UPDATE = REPLACE(@SQL_UPDATE,'@COL_NAME',@COL_NAME)
|
||
SET @SQL_UPDATE = REPLACE(@SQL_UPDATE,'@ENT',CONVERT(VARCHAR(3),@pENTITY_ID))
|
||
SET @SQL_UPDATE = REPLACE(@SQL_UPDATE,'@TABLE',@ENTITY_TABLENAME)
|
||
--
|
||
IF @TYPEID = 6 --Picturebox
|
||
BEGIN
|
||
DECLARE @VALUE_VBM VARBINARY(MAX)
|
||
|
||
IF EXISTS(SELECT GUID FROM TBPMO_CONTROL_IMAGE WHERE CONTROL_ID = @CONTROL_ID AND RECORD_ID = @REC_ID)
|
||
BEGIN
|
||
SET @SQL_UPDATE = REPLACE(@SQL_UPDATE,'''@VALUE''','(SELECT IMG FROM TBPMO_CONTROL_IMAGE WHERE CONTROL_ID = @CONTROL_ID AND RECORD_ID = @REC_ID)')
|
||
SET @SQL_UPDATE = REPLACE(@SQL_UPDATE,'@REC_ID',CONVERT(VARCHAR(10),@REC_ID))
|
||
SET @SQL_UPDATE = REPLACE(@SQL_UPDATE,'@CONTROL_ID',CONVERT(VARCHAR(10),@CONTROL_ID))
|
||
EXEC sp_executesql @SQL_UPDATE
|
||
END
|
||
END
|
||
ELSE
|
||
BEGIN
|
||
DECLARE @VALUE VARCHAR(MAX)
|
||
IF EXISTS(SELECT GUID FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = @CONTROL_ID AND RECORD_ID = @REC_ID)
|
||
BEGIN TRY
|
||
IF @TYPEID IN(10,11) --CheckBox,RadioBox
|
||
BEGIN
|
||
SELECT @VALUE = VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = @CONTROL_ID AND RECORD_ID = @REC_ID
|
||
SET @SQL_UPDATE = REPLACE(@SQL_UPDATE,'@VALUE',@VALUE)
|
||
END
|
||
ELSE IF @TYPEID IN(7,12,14)
|
||
BEGIN
|
||
SELECT @VALUE = dbo.FNPMO_GET_CONTROL_VALUES(@CONTROL_ID, @REC_ID)
|
||
SET @SQL_UPDATE = REPLACE(@SQL_UPDATE,'@VALUE',@VALUE)
|
||
END
|
||
ELSE
|
||
SET @SQL_UPDATE = REPLACE(@SQL_UPDATE,'''@VALUE''','(SELECT DISTINCT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = @CONTROL_ID AND RECORD_ID = @REC_ID)')
|
||
|
||
SET @SQL_UPDATE = REPLACE(@SQL_UPDATE,'@REC_ID',CONVERT(VARCHAR(10),@REC_ID))
|
||
SET @SQL_UPDATE = REPLACE(@SQL_UPDATE,'@CONTROL_ID',CONVERT(VARCHAR(10),@CONTROL_ID))
|
||
--PRINT @SQL_UPDATE
|
||
EXEC sp_executesql @SQL_UPDATE
|
||
END TRY
|
||
BEGIN CATCH
|
||
PRINT 'ERROR in HANDLING CONTROL-ID: ' + CONVERT(VARCHAR(30),@CONTROL_ID) + ' - RECORD-ID: ' + CONVERT(VARCHAR(10),@REC_ID)
|
||
END CATCH
|
||
END
|
||
|
||
FETCH NEXT FROM cursor_Columns INTO @CONTROL_ID,@COL_NAME,@TYPEID
|
||
END
|
||
CLOSE cursor_Columns
|
||
DEALLOCATE cursor_Columns
|
||
END
|
||
|
||
FETCH NEXT FROM cursor_Records INTO @REC_ID
|
||
END
|
||
CLOSE cursor_Records
|
||
DEALLOCATE cursor_Records
|
||
END
|
||
GO
|
||
ALTER FUNCTION [dbo].[FNPMO_GET_RIGHTS_FOR_DOC] (@pDOC_ID INTEGER)
|
||
RETURNS @OUTPUT_RIGHTS TABLE (USR_ID INT,USR_NAME VARCHAR(50), USR_ECM_ID INT,USR_RIGHT INT, TYPE_WRIGHT VARCHAR(50),USER_OR_GROUP VARCHAR(20))
|
||
AS
|
||
BEGIN
|
||
DECLARE
|
||
@RECID INTEGER,
|
||
@ENT_ID INTEGER,
|
||
@GUID INTEGER,
|
||
@RIGHT_USER VARCHAR(50),
|
||
@RIGHT_USER_INT INTEGER,
|
||
@RIGHT_USER_ECM_ID INTEGER,
|
||
@AD_DOMAIN VARCHAR(250)
|
||
SELECT @RIGHT_USER = T.AD_USER,@RIGHT_USER_INT = T1.GUID,@RIGHT_USER_ECM_ID = T1.USERID_FK_INT_ECM, @AD_DOMAIN = AD_DOMAIN FROM TBPMO_SERVICE_RIGHT_CONFIG T, TBDD_USER T1 WHERE T.GUID = 1 AND T.AD_USER = T1.USERNAME
|
||
|
||
INSERT INTO @OUTPUT_RIGHTS(USR_ID,USR_NAME,USR_ECM_ID,USR_RIGHT,TYPE_WRIGHT,USER_OR_GROUP) VALUES (@RIGHT_USER_INT,@RIGHT_USER,@RIGHT_USER_ECM_ID,7,'MAIN RIGHTUSER','USER')
|
||
--INSERT INTO @OUTPUT_RIGHTS(USR_ID,USR_NAME,USR_ECM_ID,USR_RIGHT,TYPE_WRIGHT,USER_OR_GROUP) VALUES (1,'Digital Data - windream-Benutzer',2,1,'WM-GRUPPE','GROUP')
|
||
DECLARE cursorRecords CURSOR FOR
|
||
select T.RECORD_ID, T1.FORM_ID from TBPMO_DOC_RECORD_LINK T, TBPMO_RECORD T1 where T.DOC_ID = @pDOC_ID AND T.RECORD_ID = T1.GUID
|
||
OPEN cursorRecords
|
||
FETCH NEXT FROM cursorRecords INTO @RECID,@ENT_ID
|
||
WHILE @@FETCH_STATUS = 0
|
||
BEGIN
|
||
--PRINT 'RECORD-ID: ' + CONVERT(VARCHAR(10),@RECID)
|
||
/*CURSOR 1 RECORDS BEGIN*/
|
||
-- ENTITY-SUPERVISOR INSERTEN
|
||
INSERT INTO @OUTPUT_RIGHTS(USR_ID,USR_NAME,USR_ECM_ID,USR_RIGHT,TYPE_WRIGHT)
|
||
SELECT T.USER_ID, T1.USERNAME, T1.USERID_FK_INT_ECM,T.RIGHT1, 'ENTITY_SUPERVISOR' FROM TBPMO_ENTITY_SUPERVISOR T, TBDD_USER T1 WHERE T.USER_ID = T1.GUID AND T.ENTITY_ID = @ENT_ID
|
||
AND T.USER_ID NOT IN (SELECT USR_ID FROM @OUTPUT_RIGHTS) ORDER BY T1.USERNAME
|
||
-- SUPERVISOR RECORD INSERTEN
|
||
INSERT INTO @OUTPUT_RIGHTS(USR_ID,USR_NAME,USR_ECM_ID,USR_RIGHT,TYPE_WRIGHT)
|
||
SELECT T.[USER_ID], T1.USERNAME, T1.USERID_FK_INT_ECM,3,'SUPERVISOR_CONTROL' FROM [VWPMO_SUPERVISOR_CONTROL] T, TBDD_USER T1 where T.USER_ID = T1.GUID AND T.RECORD_ID = @RECID and T.FORM_ID = @ENT_ID AND
|
||
T.USER_ID NOT IN (SELECT USR_ID FROM @OUTPUT_RIGHTS) ORDER BY T1.USERNAME
|
||
|
||
/*CURSOR 2 RIGHT-CONTROLS END*/
|
||
IF EXISTS(SELECT GUID FROM TBPMO_RIGHT_GROUP WHERE ENTITY_ID = @ENT_ID)
|
||
BEGIN
|
||
DECLARE
|
||
@WD_RIGHT INTEGER
|
||
|
||
DECLARE c_REDO CURSOR FOR
|
||
SELECT T.GROUP_ID ,T1.ECM_FK_ID, T1.NAME ,CASE WHEN T.[READ_ONLY_DOC] = 1 THEN 1 ELSE 3 END AS WD_RIGHT FROM TBPMO_RIGHT_GROUP T, TBDD_USER_GROUPS T1 WHERE
|
||
T.ENTITY_ID = @ENT_ID AND T.GROUP_ID = T1.GUID
|
||
OPEN c_REDO
|
||
FETCH NEXT FROM c_REDO INTO @RIGHT_USER_INT,@RIGHT_USER_ECM_ID,@RIGHT_USER,@WD_RIGHT
|
||
WHILE @@FETCH_STATUS = 0
|
||
BEGIN
|
||
IF EXISTS(SELECT USR_ID FROM @OUTPUT_RIGHTS WHERE USR_ID = @RIGHT_USER_INT)
|
||
BEGIN
|
||
DECLARE @TEMP_RIGHT INT
|
||
SELECT @TEMP_RIGHT = USR_RIGHT FROM @OUTPUT_RIGHTS WHERE USR_ID = @RIGHT_USER_INT
|
||
IF @TEMP_RIGHT < @WD_RIGHT
|
||
UPDATE @OUTPUT_RIGHTS SET USR_RIGHT = @WD_RIGHT,USER_OR_GROUP = 'GROUP' WHERE USR_ID = @RIGHT_USER_INT
|
||
END
|
||
ELSE
|
||
INSERT INTO @OUTPUT_RIGHTS(USR_ID,USR_NAME,USR_ECM_ID,USR_RIGHT,TYPE_WRIGHT,USER_OR_GROUP) VALUES (
|
||
@RIGHT_USER_INT,@RIGHT_USER,@RIGHT_USER_ECM_ID,@WD_RIGHT,'RIGHT FROM TBPMO_RIGHT_GROUP','GROUP')
|
||
|
||
FETCH NEXT FROM c_REDO INTO @RIGHT_USER_INT,@RIGHT_USER_ECM_ID,@RIGHT_USER,@WD_RIGHT
|
||
END
|
||
CLOSE c_REDO
|
||
DEALLOCATE c_REDO
|
||
END
|
||
|
||
|
||
|
||
/**/
|
||
DECLARE
|
||
@VALUE VARCHAR(100),
|
||
@RIGHT INT,
|
||
@TYPE_VALUE VARCHAR(50),
|
||
@CONTR_TYPE_ID INT,
|
||
@CONTROL_ID INT
|
||
|
||
DECLARE cursorRecordRightControls CURSOR FOR
|
||
SELECT T2.VALUE, CASE T.USED_FOR WHEN 'RIGHT READ/WRITE' THEN 3 ELSE 1 END, T.USER_GROUP, T1.CONTROL_TYPE_ID, T1.GUID
|
||
FROM TBPMO_ENTITY_RIGHT_CONTROLS T, TBPMO_CONTROL T1, TBPMO_CONTROL_VALUE T2 WHERE T.CONTROL_ID = T1.GUID AND
|
||
T.CONTROL_ID = T2.CONTROL_ID AND
|
||
T.ENTITY_ID = @ENT_ID AND T.USED_FOR <> '' AND T2.RECORD_ID = @RECID
|
||
OPEN cursorRecordRightControls
|
||
FETCH NEXT FROM cursorRecordRightControls INTO @VALUE,@RIGHT,@TYPE_VALUE,@CONTR_TYPE_ID,@CONTROL_ID
|
||
WHILE @@FETCH_STATUS = 0
|
||
BEGIN
|
||
IF @TYPE_VALUE = 'USER'
|
||
BEGIN
|
||
DECLARE @TEMP_USRID INT
|
||
SELECT @TEMP_USRID = [dbo].[FNPMO_GET_USERID_FORSTRING] (@VALUE)
|
||
IF NOT EXISTS(SELECT USR_ID FROM @OUTPUT_RIGHTS WHERE USR_ID = @TEMP_USRID)
|
||
BEGIN
|
||
--UPDATE @USER_TABLE SET USR_RIGHT = @RIGHT WHERE USR_ID = @TEMP_USRID
|
||
INSERT INTO @OUTPUT_RIGHTS(USR_ID,USR_NAME,USR_ECM_ID,USR_RIGHT,TYPE_WRIGHT)
|
||
SELECT @TEMP_USRID, USERNAME, USERID_FK_INT_ECM,@RIGHT,'ENTITY RIGHT CONTROL USER: ' + convert(Varchar(10),@CONTROL_ID) FROM TBDD_USER WHERE GUID = @TEMP_USRID
|
||
END
|
||
END
|
||
ELSE
|
||
BEGIN
|
||
DECLARE @GROUP_USER_ID INTEGER
|
||
DECLARE cursorUserGroup CURSOR FOR
|
||
SELECT DISTINCT T.USER_ID FROM TBDD_GROUPS_USER T,TBDD_USER_GROUPS T1, TBDD_USER T2 WHERE T.GROUP_ID = T1.GUID AND T.USER_ID = T2.GUID AND UPPER(T1.NAME) = UPPER(@VALUE)
|
||
AND T.USER_ID <> @RIGHT_USER_INT AND T.USER_ID NOT IN (SELECT USR_ID FROM @OUTPUT_RIGHTS)
|
||
OPEN cursorUserGroup
|
||
FETCH NEXT FROM cursorUserGroup INTO @GROUP_USER_ID
|
||
WHILE @@FETCH_STATUS = 0
|
||
BEGIN
|
||
--IF NOT EXISTS(SELECT USR_ID FROM @OUTPUT_RIGHTS WHERE USR_ID = @TEMP_USRID)
|
||
BEGIN
|
||
INSERT INTO @OUTPUT_RIGHTS(USR_ID,USR_NAME,USR_ECM_ID,USR_RIGHT,TYPE_WRIGHT)
|
||
SELECT @GROUP_USER_ID,USERNAME, USERID_FK_INT_ECM,@RIGHT,'ENTITY RIGHT CONTROL GROUP: ' + convert(Varchar(10),@CONTROL_ID) FROM TBDD_USER WHERE GUID = @GROUP_USER_ID
|
||
END
|
||
--UPDATE @USER_TABLE SET USR_RIGHT = @RIGHT WHERE USR_ID = @GROUP_USER_ID
|
||
FETCH NEXT FROM cursorUserGroup INTO @GROUP_USER_ID
|
||
END
|
||
CLOSE cursorUserGroup
|
||
DEALLOCATE cursorUserGroup
|
||
END
|
||
FETCH NEXT FROM cursorRecordRightControls INTO @VALUE,@RIGHT,@TYPE_VALUE,@CONTR_TYPE_ID,@CONTROL_ID
|
||
END
|
||
CLOSE cursorRecordRightControls
|
||
DEALLOCATE cursorRecordRightControls
|
||
/*CURSOR 2 RIGHT-CONTROLS END*/
|
||
IF EXISTS(SELECT GUID FROM TBPMO_RIGHT_USER WHERE ENTITY_ID = @ENT_ID)
|
||
BEGIN
|
||
|
||
DECLARE c_REDO CURSOR FOR
|
||
SELECT T.[USER_ID] ,T1.USERID_FK_INT_ECM, T1.USERNAME ,CASE WHEN T.[READ_ONLY_DOC] = 1 THEN 1 ELSE 3 END AS WD_RIGHT FROM TBPMO_RIGHT_USER T, TBDD_USER T1 WHERE
|
||
T.ENTITY_ID = @ENT_ID AND T.USER_ID = T1.GUID
|
||
OPEN c_REDO
|
||
FETCH NEXT FROM c_REDO INTO @RIGHT_USER_INT,@RIGHT_USER_ECM_ID,@RIGHT_USER,@WD_RIGHT
|
||
WHILE @@FETCH_STATUS = 0
|
||
BEGIN
|
||
IF EXISTS(SELECT USR_ID FROM @OUTPUT_RIGHTS WHERE USR_ID = @RIGHT_USER_INT)
|
||
BEGIN
|
||
SELECT @TEMP_RIGHT = USR_RIGHT FROM @OUTPUT_RIGHTS WHERE USR_ID = @RIGHT_USER_INT
|
||
IF @TEMP_RIGHT < @WD_RIGHT
|
||
UPDATE @OUTPUT_RIGHTS SET USR_RIGHT = @WD_RIGHT WHERE USR_ID = @RIGHT_USER_INT
|
||
END
|
||
ELSE
|
||
INSERT INTO @OUTPUT_RIGHTS(USR_ID,USR_NAME,USR_ECM_ID,USR_RIGHT,TYPE_WRIGHT) VALUES (
|
||
@RIGHT_USER_INT,@RIGHT_USER,@RIGHT_USER_ECM_ID,@WD_RIGHT,'RIGHT FROM USER_RIGHT')
|
||
|
||
FETCH NEXT FROM c_REDO INTO @RIGHT_USER_INT,@RIGHT_USER_ECM_ID,@RIGHT_USER,@WD_RIGHT
|
||
END
|
||
CLOSE c_REDO
|
||
DEALLOCATE c_REDO
|
||
END
|
||
|
||
FETCH NEXT FROM cursorRecords INTO @RECID,@ENT_ID
|
||
/*CURSOR 1 RECORDS END*/
|
||
END
|
||
CLOSE cursorRecords
|
||
DEALLOCATE cursorRecords
|
||
|
||
RETURN
|
||
END
|
||
|
||
GO
|
||
|
||
|