USE [DD_ECM] GO /****** Object: UserDefinedFunction [dbo].[FNPM_CUST_GET_DOC_IDS] Script Date: 21.03.2024 17:14:16 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- 29.12.2022 MS Profil 18 - Abbuchung durch KReditor DA integriert -- 29.12.2022 MS Nadine Metz bei Profil AR_PROFILE1 hinterlegt -- 27.01.2022 MK Ergänzung um das neue Profil 99 -- 17.01.2022 Unterscheidung in Schritt 2 auf GMBH/GF und Abwasser-Bäder/Betriebsleiter -- 10.11.2021 Prüfung für Schritt 6 eingebaut -- 31.10.2021 Mandantenlogik eingebaut -- 03.10.2021 ER Profile 4.1 hinzugefügt -- 20.09.2021 Initial CREATE FUNCTION [dbo].[FNPM_CUST_GET_DOC_IDS] (@USER_ID INTEGER) RETURNS @Table TABLE (SCOPE VARCHAR(50),DOC_GUID BIGINT,DOC_ID BIGINT,PROFIL_ID INT, SequentialOrder INT IDENTITY(1, 1)) AS BEGIN DECLARE @P_ID INTEGER, @P_NAME VARCHAR(50), @P_ER_2_0_ID INTEGER = 2, -- Einsicht für GMBH/GF oder Abwasser-Bäder/Betriebsleiter @P_ER_3_0_ID INTEGER = 3, -- Einsicht für FiBu Mitarbeiter abhängig vom Mandant @P_ER_3_1_ID INTEGER = 11, -- Einsicht für FiBu Mitarbeiter abhängig vom Mandant @P_ER_4_0_ID INTEGER = 4, -- Einsicht für ausgesuchten Prüfer @P_ER_4_1_ID INTEGER = 10, -- Einsicht für ausgesuchten Prüfer @P_ER_5_0_ID INTEGER = 5, -- Einsicht für FiBu Mitarbeiter abhängig vom Mandant @P_ER_5_1_ID INTEGER = 6, -- Einsicht für FiBu Mitarbeiter abhängig vom Mandant @P_ER_5_2_ID INTEGER = 9, -- Einsicht für FiBu Mitarbeiter abhängig vom Mandant @P_ER_5_3_ID INTEGER = 14, -- Einsicht für FiBu Mitarbeiter abhängig vom Mandant @P_ABB_KRED_DA INTEGER = 18, @P_ER_6_0_ID INTEGER = 16, -- Einsicht für ausgesuchte finale Freigeber @P_ER_94_ID INTEGER = 7, -- Einsicht für FiBu Mitarbeiter abhängig vom Mandant @P_ER_99_ID INTEGER = 17, -- Einsicht für FiBu Mitarbeiter abhängig vom Mandant @P_AR_1_0_ID INTEGER = 15, -- Einsicht für FiBu Mitarbeiter abhängig vom Mandant @PM_ADMIN_GROUP TINYINT = 2, -- = Admingruppen ID aus dem UserManager @GF TINYINT = 16, -- = Führungsgruppe der GmbH @Betriebsleiter TINYINT = 45, -- = Führungsgruppe der Abwasser + Bäder @SBAbwasserbetriebFiBu TINYINT = 19, -- = Fibu Gruppe der Abwasserbetriebe @SBBäderbetriebFiBu TINYINT = 21, -- = Fibu Gruppe der Bäderbetrieb @SWBNetzFiBu TINYINT = 35, -- = Fibu Gruppe der GmbH @SWBVertriebFiBu TINYINT = 41, -- = Fibu Gruppe des Vertriebs @windreamAttributFinalApprover INTEGER = 10044; -- = Terminzahlung Finale Freigeber ------------------------------------------------------------------------------------------------------------ -- Standard -> Zuordnung erfolgt via PM Benutzer/Gruppenzuordnung INSERT INTO @Table (SCOPE,DOC_GUID,DOC_ID,PROFIL_ID) SELECT 'ACTIVE PROFILES',T.GUID, T.DOC_ID,T.PROFIL_ID FROM TBPM_PROFILE_FILES T INNER JOIN TBPM_PROFILE T1 on T.PROFIL_ID = T1.GUID INNER JOIN windream60.dbo.BaseAttributes TWM_BA ON T.DOC_ID = TWM_BA.dwDocID INNER JOIN [dbo].[FNPM_GET_ACTIVE_PROFILES_USER] (@USER_ID) T2 ON T.PROFIL_ID = T2.PROFILE_ID --INNER JOIN [dbo].[FNPM_GET_ACTIVE_PROFILES_USER] (2) AND T.EDIT = 0 AND T.IN_WORK = 0 AND T.ACTIVE = 1 AND T1.ACTIVE = 1 AND T2.PROFILE_ID <> @P_ER_2_0_ID AND T2.PROFILE_ID <> @P_ER_3_0_ID AND T2.PROFILE_ID <> @P_ER_3_1_ID AND T2.PROFILE_ID <> @P_ER_4_0_ID AND T2.PROFILE_ID <> @P_ER_4_1_ID AND T2.PROFILE_ID <> @P_ER_5_0_ID AND T2.PROFILE_ID <> @P_ER_5_1_ID AND T2.PROFILE_ID <> @P_ER_5_2_ID AND T2.PROFILE_ID <> @P_ER_5_3_ID AND T2.PROFILE_ID <> @P_ER_6_0_ID AND T2.PROFILE_ID <> @P_ER_94_ID AND T2.PROFILE_ID <> @P_ER_99_ID AND T2.PROFILE_ID <> @P_AR_1_0_ID AND T2.PROFILE_ID <> @P_ABB_KRED_DA; ---------------------------------------------------------------------------------------------------------------- -- AR Profile 1 für die GmbH INSERT INTO @Table (SCOPE,DOC_GUID,DOC_ID,PROFIL_ID) SELECT 'AR_PROFILE1', T.GUID, T.DOC_ID,T.PROFIL_ID FROM TBPM_PROFILE_FILES T INNER JOIN windream60.dbo.BaseAttributes TWMBA ON T.DOC_ID = TWMBA.dwDocID INNER JOIN TBPM_PROFILE TP ON T.PROFIL_ID = TP.GUID WHERE (T.PROFIL_ID = @P_AR_1_0_ID) AND T.EDIT = 0 AND T.IN_WORK = 0 AND T.ACTIVE = 1 AND TP.ACTIVE = 1 AND ((TWMBA.sztext31 = 'SWB-Netz' and @USER_ID in (SELECT [USER_ID] FROM [TBDD_GROUPS_USER] WHERE [GROUP_ID] = @SWBNetzFiBu)) OR (TWMBA.sztext31 = 'SWB-Vertrieb' and @USER_ID in (SELECT [USER_ID] FROM [TBDD_GROUPS_USER] WHERE [GROUP_ID] = @SWBVertriebFiBu) OR @USER_ID = 12 )) -- ER Profile 2 für Abwasser + Bäder INSERT INTO @Table (SCOPE,DOC_GUID,DOC_ID,PROFIL_ID) SELECT 'AR_PROFILE1', T.GUID, T.DOC_ID,T.PROFIL_ID FROM TBPM_PROFILE_FILES T INNER JOIN windream60.dbo.BaseAttributes TWMBA ON T.DOC_ID = TWMBA.dwDocID INNER JOIN TBPM_PROFILE TP ON T.PROFIL_ID = TP.GUID WHERE (T.PROFIL_ID = @P_AR_1_0_ID) AND T.EDIT = 0 AND T.IN_WORK = 0 AND T.ACTIVE = 1 AND TP.ACTIVE = 1 AND ((TWMBA.sztext31 = 'SB-Abwasserbetrieb' and @USER_ID in (SELECT [USER_ID] FROM [TBDD_GROUPS_USER] WHERE [GROUP_ID] = @SBAbwasserbetriebFiBu)) OR (TWMBA.sztext31 = 'SB-Bäderbetrieb' and @USER_ID in (SELECT [USER_ID] FROM [TBDD_GROUPS_USER] WHERE [GROUP_ID] = @SBBäderbetriebFiBu))) ---------------------------------------------------------------------------------------------------------------- -- ER Profile 2 für die GmbH INSERT INTO @Table (SCOPE,DOC_GUID,DOC_ID,PROFIL_ID) SELECT 'ER_PROFILE2', T.GUID, T.DOC_ID,T.PROFIL_ID FROM TBPM_PROFILE_FILES T INNER JOIN windream60.dbo.BaseAttributes TWMBA ON T.DOC_ID = TWMBA.dwDocID INNER JOIN TBPM_PROFILE TP ON T.PROFIL_ID = TP.GUID WHERE (T.PROFIL_ID = @P_ER_2_0_ID) AND T.EDIT = 0 AND T.IN_WORK = 0 AND T.ACTIVE = 1 AND TP.ACTIVE = 1 AND ((TWMBA.sztext31 = 'SWB-Netz' and @USER_ID in (SELECT [USER_ID] FROM [TBDD_GROUPS_USER] WHERE [GROUP_ID] = @GF)) OR (TWMBA.sztext31 = 'SWB-Vertrieb' and @USER_ID in (SELECT [USER_ID] FROM [TBDD_GROUPS_USER] WHERE [GROUP_ID] = @GF))) -- ER Profile 2 für Abwasser + Bäder INSERT INTO @Table (SCOPE,DOC_GUID,DOC_ID,PROFIL_ID) SELECT 'ER_PROFILE2', T.GUID, T.DOC_ID,T.PROFIL_ID FROM TBPM_PROFILE_FILES T INNER JOIN windream60.dbo.BaseAttributes TWMBA ON T.DOC_ID = TWMBA.dwDocID INNER JOIN TBPM_PROFILE TP ON T.PROFIL_ID = TP.GUID WHERE (T.PROFIL_ID = @P_ER_2_0_ID) AND T.EDIT = 0 AND T.IN_WORK = 0 AND T.ACTIVE = 1 AND TP.ACTIVE = 1 AND ((TWMBA.sztext31 = 'SB-Abwasserbetrieb' and @USER_ID in (SELECT [USER_ID] FROM [TBDD_GROUPS_USER] WHERE [GROUP_ID] = @Betriebsleiter)) OR (TWMBA.sztext31 = 'SB-Bäderbetrieb' and @USER_ID in (SELECT [USER_ID] FROM [TBDD_GROUPS_USER] WHERE [GROUP_ID] = @Betriebsleiter))) ------------------------------------------------------------------------------------------------------------ -- ER Profile 3, 3.1, 94 und 99 sollen nur von der entsprechenden FiBu Mitarbeiter einsehbarsein, anhängig vom ausgewählten Mandant INSERT INTO @Table (SCOPE,DOC_GUID,DOC_ID,PROFIL_ID) SELECT 'ER_PROFILE3', T.GUID, T.DOC_ID,T.PROFIL_ID FROM TBPM_PROFILE_FILES T INNER JOIN windream60.dbo.BaseAttributes TWMBA ON T.DOC_ID = TWMBA.dwDocID INNER JOIN TBPM_PROFILE TP ON T.PROFIL_ID = TP.GUID WHERE (T.PROFIL_ID in (@P_ER_3_0_ID,@P_ER_3_1_ID,@P_ER_5_0_ID,@P_ER_5_1_ID,@P_ER_5_2_ID,@P_ER_5_3_ID,@P_ER_94_ID,@P_ER_99_ID,@P_ABB_KRED_DA)) AND T.EDIT = 0 AND T.IN_WORK = 0 AND T.ACTIVE = 1 AND TP.ACTIVE = 1 AND ((TWMBA.sztext31 = 'SB-Abwasserbetrieb' and @USER_ID in (42,49)) OR (TWMBA.sztext31 = 'SB-Bäderbetrieb' and @USER_ID in (42,49)) OR (TWMBA.sztext31 = 'SWB-Netz' and @USER_ID in (31,42)) OR (TWMBA.sztext31 = 'SWB-Vertrieb' and @USER_ID in (31,42)) OR @USER_ID in (SELECT [USER_ID] FROM [TBDD_GROUPS_USER] WHERE [GROUP_ID] = @PM_ADMIN_GROUP)) -- <-- Admins dürfen immer mandatenübergreifend sehen -- Für die GmbH bin ich (Fr. Mohr) und in Vertretung ist Frau Kurz zuständig -- Für Abwasser und Bäderbetrieb ist Frau Hohmann und in Vertretung auch Frau Kurz zuständig -- Frau Mohr = 31 -- Frau Kurz = 42 -- Frau Hohmann = 49 ---------------------------------------------------------------------------------------------------------------- -- ER Profile 4 und 4.1 sollen nur von der FiBu und des jeweils eingetragenen Prüfer gesichtet werden können INSERT INTO @Table (SCOPE,DOC_GUID,DOC_ID,PROFIL_ID) SELECT 'ER_PROFILE4', T.GUID, T.DOC_ID,T.PROFIL_ID FROM TBPM_PROFILE_FILES T INNER JOIN windream60.dbo.BaseAttributes TWMBA ON T.DOC_ID = TWMBA.dwDocID INNER JOIN TBDD_USER T2 ON UPPER(TWMBA.sztext22) = UPPER(T2.USERNAME) INNER JOIN TBPM_PROFILE TP ON T.PROFIL_ID = TP.GUID WHERE (T.PROFIL_ID = @P_ER_4_0_ID or T.PROFIL_ID = @P_ER_4_1_ID) AND T2.GUID = @USER_ID AND T.EDIT = 0 AND T.IN_WORK = 0 AND T.ACTIVE = 1 AND TP.ACTIVE = 1 ---------------------------------------------------------------------------------------------------------------- -- ER Profile 6 soll nur von den eingetragenen finalen Freigebern gesehen werden (Vieraugen Prinzip) INSERT INTO @Table (SCOPE,DOC_GUID,DOC_ID,PROFIL_ID) SELECT 'ER_PROFILE6', T.GUID, T.DOC_ID,T.PROFIL_ID FROM TBPM_PROFILE_FILES as T INNER JOIN windream60.dbo.BaseAttributes TWMBA ON T.DOC_ID = TWMBA.dwDocID INNER JOIN TBPM_PROFILE TP ON T.PROFIL_ID = TP.GUID WHERE (T.PROFIL_ID = @P_ER_6_0_ID) AND T.EDIT = 0 AND T.IN_WORK = 0 AND T.ACTIVE = 1 AND TP.ACTIVE = 1 AND (@USER_ID in (SELECT [GUID] FROM [TBDD_USER] WHERE [USERNAME] IN (SELECT [Vector].[szValue] FROM [windream60].[dbo].[Vector] as [Vector] (NOLOCK) INNER JOIN [windream60].[dbo].[BaseAttributes] as [BaseAttributes] (NOLOCK) ON [Vector].[dwDocID] = [BaseAttributes].[dwDocID] WHERE [Vector].[szValue] is not null and [Vector].[dwAttrID] = @windreamAttributFinalApprover and [BaseAttributes].[szText33] = 'in Arbeit')) OR @USER_ID in (SELECT [USER_ID] FROM [TBDD_GROUPS_USER] WHERE [GROUP_ID] = @PM_ADMIN_GROUP)) -- <-- Admins dürfen immer sehen ---------------------------------------------------------------------------------------------------------------- --Wenn User Mitgleid von PM_ADMIN ist... IF EXISTS(SELECT GUID FROM TBDD_GROUPS_USER WHERE GROUP_ID = @PM_ADMIN_GROUP AND USER_ID = @USER_ID) --Wenn es Belege zu Profil 4 gibt ist... IF EXISTS(SELECT T.DOC_ID FROM TBPM_PROFILE_FILES T INNER JOIN windream60.dbo.BaseAttributes TWMBA ON T.DOC_ID = TWMBA.dwDocID INNER JOIN TBDD_USER T2 ON UPPER(TWMBA.sztext22) <> UPPER(T2.USERNAME) INNER JOIN TBPM_PROFILE TP ON T.PROFIL_ID = TP.GUID WHERE T2.GUID = @USER_ID AND TP.ACTIVE = 1 AND T.PROFIL_ID = @P_ER_4_0_ID OR T.PROFIL_ID = @P_ER_4_1_ID ) INSERT INTO @Table (SCOPE,DOC_GUID,DOC_ID,PROFIL_ID) SELECT 'ER_PROFILE4_ADMIN',T.GUID,T.DOC_ID,T.PROFIL_ID FROM TBPM_PROFILE_FILES T INNER JOIN windream60.dbo.BaseAttributes TWMBA ON T.DOC_ID = TWMBA.dwDocID INNER JOIN TBDD_USER T2 ON UPPER(TWMBA.sztext22) <> UPPER(T2.USERNAME) WHERE T2.GUID = @USER_ID AND (T.PROFIL_ID = @P_ER_4_0_ID OR T.PROFIL_ID = @P_ER_4_1_ID ) RETURN END --SELECT * FROM [dbo].[FNPM_CUST_GET_DOC_IDS] (2) GO