Blokada na niezwiązane ZZ

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

msiemienkowicz
Posty: 17
Rejestracja: 25 cze 2018, 16:30
Rola: Administrator CDN XL
Wersja: 2017

Blokada na niezwiązane ZZ

Post autor: msiemienkowicz »

Witam, czy macie może jakiś sposób na blokowanie tworzenia ZZ z palca?
Napisałem taki mały trigger, ale:
1. wpis w tabeli CDN.ZamZamLinki tworzy się dopiero po otwarciu formatki, więc zostaje blokada dopiero po zmianie ZanStan a nie przy insercie.
2. wpis w tabeli CDN.BstDokumenty tworzy się dopiero po zamknięciu zamówienia, wiec blokada przy ZanStan traci sens.
3. Mała Hydra nie rozróżnia lista ZZ od ZS ( obie listy to po prostu ZanLista).
Licencje na Interfejs mam, problem w tym ze nie mam pomysłu z której strony to ugryźć.

Kod: Zaznacz cały


/****** Object:  Trigger [CDN].[ZZ_bez_ZS]    Script Date: 22.07.2020 21:48:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [CDN].[ZZ_bez_ZS] ON [CDN].[ZamNag]
FOR --INSERT, 
UPDATE
AS

DECLARE @GID_Numer INT
DECLARE @GID_TYP  SMALLINT
DECLARE @ZrdNumer INT
DECLARE @ZanTyp  SMALLINT
DECLARE @ZaN_DokZwiazane INT

DECLARE @STRING NVARCHAR(200)
DECLARE @STRING1 NVARCHAR(200)
DECLARE @STRING2 NVARCHAR(200)

SET @ZrdNumer= 0
SET @GID_Numer = 0
SET @GID_TYP = 0
SET @ZaN_DokZwiazane = 0 

IF Update(ZaN_Stan)
--EXISTS (SELECT * FROM inserted)
BEGIN 
select @GID_TYP = ZaN_ZamTyp, @ZrdNumer = ZaN_ZrdNumer, @GID_Numer = ZaN_GIDNumer, @ZaN_DokZwiazane = ZaN_DokZwiazane from inserted  

if (@GID_TYP = 1152)
BEGIN

SET @STRING1='#CDN_BLAD/# #CDN_1=Próba utworzenia ZZ bez powiązanego ZS' 
SET @STRING2= '/# #CDN_2=ZZ bez ZS' 
SET @STRING= @STRING1+@STRING2

IF CDN.PolaczenieInfo(4) NOT IN ('GOSIAK', 'WALDEKA')
 BEGIN ---1
IF NOT EXISTS (SELECT * FROM CDN.BstDokumenty where BsD_DokNumer = @GID_Numer)
IF NOT EXISTS (SELECT * FROM CDN.ZamZamLinki where ZZL_ZZGidNumer = @GID_Numer)

        BEGIN
		RAISERROR(@STRING, 16, 1)
          ROLLBACK TRAN
          SET NOCOUNT OFF
          RETURN
        END
END ---1
END
END

Awatar użytkownika
wacek
Posty: 714
Rejestracja: 27 paź 2008, 18:04
Rola: Administrator CDN XL
Lokalizacja: Łódzkie

Re: Blokada na niezwiązane ZZ

Post autor: wacek »

Dodaj tabelę DELETED, może się uda osiągnąć zamierzony efekt.

Przykład dla RA:

ALTER TRIGGER [CDN].[TR_BlokadaRA]
ON [CDN].[TraNag]
FOR INSERT, UPDATE
AS
SET NOCOUNT ON

IF UPDATE (TrN_Stan)
BEGIN
IF EXISTS (SELECT * FROM INSERTED AS I
JOIN DELETED AS D ON I.TrN_GIDTyp = D.TrN_GIDTyp AND I.TrN_GIDNumer = D.TrN_GIDNumer
WHERE I.TrN_Stan >= 1 AND D.TrN_Stan >= 0
AND I.TrN_GIDTyp = 2035
AND I.TrN_KntNumer = 0
AND I.TrN_Stan <> 6
)
BEGIN
RAISERROR('#CDN_BLADK/# #CDN_1=Nie można zatwierdzić dokumentu. Dokument musi posiadać kontrahenta./# #CDN_2=Nie można zatwierdzić dokumentu. Dokument musi posiadać kontrahenta./# #CDN_3=Blokada przez trigger TR_BlokadaRA./#',16,1)
ROLLBACK TRAN
SET NOCOUNT OFF
RETURN
END
END

SET NOCOUNT OFF
Pozdrawiam,
Robert

select convert(varchar(100),0x637a6173616d69207069737aea2074752067b375706f7479203a29)

ODPOWIEDZ