250 lines
12 KiB
Transact-SQL
250 lines
12 KiB
Transact-SQL
USE [DD_ECM]
|
|
GO
|
|
/****** Object: UserDefinedFunction [dbo].[FNPM_CUST_GET_DOC_IDS] Script Date: 22.04.2024 15:35:20 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
-- 22.04.2024 MK Profil 20 - SWB - ER 95.3 - Daueranweisungen eingebaut
|
|
-- 22.03.2024 MK Profil 18 - Variable überarbeitet, Feste Userzuweisungen für die Profile 3.0, 3.1, 5.0, 5.1, 5.2, 5.3, 5.4, 94, 99 durch eine Abfrage ersetzt
|
|
-- 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_ER_5_4_ID INTEGER = 18, -- Einsicht für FiBu Mitarbeiter abhängig vom Mandant
|
|
@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_95_3_ID INTEGER = 20, -- 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_5_4_ID
|
|
AND T2.PROFILE_ID <> @P_ER_6_0_ID
|
|
AND T2.PROFILE_ID <> @P_ER_95_3_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;
|
|
|
|
----------------------------------------------------------------------------------------------------------------
|
|
-- 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 in (SELECT [USER_ID] FROM [TBDD_GROUPS_USER] WHERE [GROUP_ID] = @PM_ADMIN_GROUP)) -- <-- Admins dürfen immer mandatenübergreifend sehen
|
|
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)))
|
|
OR @USER_ID in (SELECT [USER_ID] FROM [TBDD_GROUPS_USER] WHERE [GROUP_ID] = @PM_ADMIN_GROUP)) -- <-- Admins dürfen immer mandatenübergreifend sehen
|
|
|
|
----------------------------------------------------------------------------------------------------------------
|
|
|
|
-- 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, 95.3 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_5_4_ID,@P_ER_95_3_ID,@P_ER_94_ID,@P_ER_99_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))
|
|
OR (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 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)
|
|
|
|
|
|
|