Forum Użytkownikow Subiekt GT

InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: pacto w Grudzień 07, 2016, 09:14:27

Tytuł: Blokada wystawiania paragonów na magazynach
Wiadomość wysłana przez: pacto w Grudzień 07, 2016, 09:14:27
Witam
Jest to mój pierwszy post więc proszę o wyrozumiałość. Potrzebowałbym porady przy zrobieniu triggera. W firmie jest kilka magazynów z czego część jest traktowana jako składy fabryczne producentów. Chciałbym zablokować możliwość wystawiania paragonów na tych magazynach ze składami. Napisałem triggera, generalnie działa, ale że jest to mój pierwszy raz nie wiem czy do końca jest z nim wszystko w porządku. Dopisane jest też uprawnienie dla użytkownika i z poziomu Subiekta można dać uprawnienia bądź nie dla użytkowników. Proszę o ewentualną poprawę jeśli potrzeba.

ALTER TRIGGER [dbo].[byr_blokadaWystawianiaParagonu]
   ON [dbo].[dok__Dokument]
   AFTER    UPDATE
AS
BEGIN
   SET NOCOUNT ON;
   DECLARE @wyd_id int = 0, @uid int = 0, @uprawniony int = 0;
   SELECT @uid = ss_uid, @uprawniony = ISNULL(uzup_Id,0) FROM pd_sesja LEFT JOIN pd_UzytkUpraw ON ss_uid = uzup_UzytkId AND uzup_UprawId = 1000011 WHERE ss_spid = @@spid
   SELECT @wyd_id = ISNULL(dok_Id,0) FROM deleted JOIN sl_Magazyn ON dok_MagId = mag_Id WHERE mag_Id = 1 AND dok_Typ IN (16,21)
   IF (@wyd_id <> 0 AND @uid <> 1 AND @uprawniony = 0)
   BEGIN
         RAISERROR ('Blokada zmian',15,1);
         ROLLBACK TRANSACTION;
         RETURN;
   END
END
Tytuł: Odp: Blokada wystawiania paragonów na magazynach
Wiadomość wysłana przez: dkozlowski w Grudzień 07, 2016, 09:42:09
Z założenia będzie problem przy aktualizacji wielu rekordów. Co do samej blokady to zajrzyj do pomocy do programu zamiast zgadywać, jest tam również przykład (inaczej należy formatować komunikat, zwracać z innym numerem błędu, nie ma potrzeby wycofywać transakcji).