Witam wszystkich,
poniżej przedstawiam gotowy kod w jaki sposób można tworzyć i obsługiwać własne uprawnienia do systemu SGT \ Navireo.
INSERT INTO [dbo].[pd_Uprawnienie] (
[upr_Id]
,[upr_Nazwa]
,[upr_Program]
,[upr_Modul]
,[upr_Checked]
,[upr_Magazynowe]
,[upr_StatusNowosci]
,[upr_StatusNowosciM]
)
VALUES (
10000001
,'Kontrahenci - Możliwość zmiany opiekuna (rozszerzenie własne)'
,4139
,'Kartoteki'
,NULL
,NULL
,0
,0
)
GO
-- =============================================
-- Author: Marcin Fórmanowski
-- Create date: 30.07.2020
-- Trigger obsługujący dodatkowe uprawnienie 'Kontrahenci - Możliwość zmiany opiekuna (rozszeszenie własne)'
-- =============================================
CREATE TRIGGER [dbo].[tr_kh__Kontrahent_uprawnienie_mozliwosc_zmiany_opiekuna] ON [dbo].[kh__Kontrahent]
FOR UPDATE
AS
BEGIN
DECLARE @inserted_kh_IdOpiekun INT
,@deleted_kh_IdOpiekun INT
DECLARE cursor_kh_IdOpiekun CURSOR
FOR
SELECT i.kh_IdOpiekun
,d.kh_IdOpiekun
FROM inserted i
LEFT JOIN deleted d ON d.kh_Id = i.kh_Id
WHERE i.kh_IdOpiekun != d.kh_IdOpiekun
OPEN cursor_kh_IdOpiekun
FETCH NEXT
FROM cursor_kh_IdOpiekun
INTO @inserted_kh_IdOpiekun
,@deleted_kh_IdOpiekun
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN
DECLARE @upr_id INT = 10000001
,@upr_nazwa VARCHAR(100)
IF NOT EXISTS (
SELECT 1
FROM pd_UzytkUpraw
WHERE uzup_UprawId = @upr_id
AND uzup_UzytkId = (
SELECT dbo.fn_BiezacyUser()
)
)
BEGIN
SELECT @upr_nazwa = upr_Nazwa
FROM pd_Uprawnienie
WHERE upr_Id = @upr_id
RAISERROR (
'<msg>Brak wymaganych uprawnień
"%s"
Skontaktuj się z administratorem</msg>'
,16
,1
,@upr_nazwa
)
END
FETCH NEXT
FROM cursor_kh_IdOpiekun
INTO @inserted_kh_IdOpiekun
,@deleted_kh_IdOpiekun
END
CLOSE cursor_kh_IdOpiekun
DEALLOCATE cursor_kh_IdOpiekun
END
END
Proszę o opinię i sugestie. Mam nadzieję że komuś się to przyda lub kogoś zainspiruję do pisania własnych rozwiązań.