Trigger - Bak mozliwosci wystawiania dok. z cena zerowa

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

Moderator: mikey

BusyBoy
Posty: 153
Rejestracja: 04 gru 2012, 08:40
Rola: Administrator CDN XL
Wersja: 2013.2

Trigger - Bak mozliwosci wystawiania dok. z cena zerowa

Post autor: BusyBoy »

Witam

Siedzie juz kilka godzin na triggerem i za bardzo mi nie wychodzi - chodzi o to ze FV,PA i WZ nie moga byc wystawiane z towarem z cena zerowo.

Mam cos takiego :

Kod: Zaznacz cały

ALTER TRIGGER [CDN].[Towar_z_kwota_zerowa] on [CDN].[TraNag] 
   AFTER UPDATE
AS 

SET NOCOUNT ON

IF  UPDATE( TrN_stan )
  
BEGIN
 
IF EXISTS(SELECT     CDN.TraElem.TrE_KsiegowaNetto
FROM         CDN.TraNag INNER JOIN CDN.TraElem ON CDN.TraNag.TrN_GIDNumer = CDN.TraElem.TrE_GIDNumer AND CDN.TraNag.TrN_GIDTyp = CDN.TraElem.TrE_GIDTyp
WHERE     (CDN.TraNag.TrN_GIDTyp IN (2033, 2001, 2034)) AND (CDN.TraElem.TrE_KsiegowaNetto = 0)) 


Raiserror('#CDN_BLAD/# #CDN_1=Nie można wystawić dokumentu - zawiera towar z wartością zerową /# #CDN_2= Nie można wystawić dokumnetu - zawiera towar z wartością zerową /# #CDN_3=Skontaktuj sie z administratorem /# ',16,0)
          ROLLBACK TRAN
          SET NOCOUNT ON
          RETURN       
  END
Ale niestety czy towar ma cene rozna od 0 czy rowno 0 - triger blokuje zatwierdzenei dokumentu.

Prosze o wstazowki, pomoc....

elmiq
Posty: 1025
Rejestracja: 23 sie 2010, 10:04
Rola: Administrator CDN XL
Lokalizacja: Warszawa

Re: Trigger - Bak mozliwosci wystawiania dok. z cena zerowa

Post autor: elmiq »

To co robisz, to sprawdzasz czy istnieje JAKIKOLWIEK dokument w systemie z ceną zero.
Zrób na zasadzie:

Kod: Zaznacz cały

SELECT *
FROM CDN.TraElem INNER JOIN inserted ON...

Pozdrawiam,
Mateusz
Mateusz Świerkosz

http://elmiq.blogspot.com/

xtomi
Posty: 408
Rejestracja: 16 lut 2010, 21:24
Rola: Administrator CDN XL
Wersja: 10

Re: Trigger - Bak mozliwosci wystawiania dok. z cena zerowa

Post autor: xtomi »

A czy nie prościej w definicji dokumentu dla centrum zablokować zatwierdzanie dokumentów z zerową ceną

BusyBoy
Posty: 153
Rejestracja: 04 gru 2012, 08:40
Rola: Administrator CDN XL
Wersja: 2013.2

Re: Trigger - Bak mozliwosci wystawiania dok. z cena zerowa

Post autor: BusyBoy »

Dodalem inserted - ale teraz wywala mi blad triggera w CDN`ie - a przy zapisie triggera jest ok...

Kod: Zaznacz cały

USE [CDNXL_Szkolenia]
GO
/****** Object:  Trigger [CDN].[Towar_z_kwota_zerowa]    Script Date: 02/13/2013 10:14:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [CDN].[Towar_z_kwota_zerowa] on [CDN].[TraNag] 
   AFTER UPDATE
AS 

SET NOCOUNT ON

IF  UPDATE( TrN_stan )
  
BEGIN
 
IF EXISTS(SELECT   *
FROM      inserted INNER JOIN CDN.TraElem ON TrN_GIDNumer = TrE_GIDNumer
WHERE     (TrN_GIDTyp IN (2033, 2001, 2034)) AND (TrE_KsiegowaNetto = 0)) 

 
    Raiserror('#CDN_BLAD/# #CDN_1=Nie można wystawić dokumentu - zawiera towar z wartością zerową /# #CDN_2= Nie można wystawić dokumnetu - zawiera towar z wartością zerową /# #CDN_3=Skontaktuj sie z administratorem /# ',16,0)
          ROLLBACK TRAN
          SET NOCOUNT ON
          RETURN       
  END

Kod: Zaznacz cały

Szczegóły operacji:
Operacja zmiany obiektu TraNag o identyfikatorze (2033:5:1316620:0).
Identyfikator operacji: Zapisz_TraNag-14.
Błąd: The transaction ended in the trigger. The batch has been aborted. (37000), The transaction ended in the trigger. The batch has been aborted..
Bardzo prosze o wskazowki

AdamSp
Posty: 51
Rejestracja: 22 kwie 2008, 09:01
Rola: Administrator CDN XL
Wersja: 9.6
Lokalizacja: Katowice

Re: Trigger - Bak mozliwosci wystawiania dok. z cena zerowa

Post autor: AdamSp »

Witam,
zmień

ON inserted.TrN_GIDNumer = TrE_GIDNumer
oraz
inserted.TrN_GIDTyp IN (2033, 2001, 2034)

Pozdrawiam

BusyBoy
Posty: 153
Rejestracja: 04 gru 2012, 08:40
Rola: Administrator CDN XL
Wersja: 2013.2

Re: Trigger - Bak mozliwosci wystawiania dok. z cena zerowa

Post autor: BusyBoy »

Nawet w powyzszych zmianach i okragniczeniu triggera do 2 rodzajow dokumentow - wyrzuca blad

Kod: Zaznacz cały

Szczegóły operacji:
Operacja zmiany obiektu TraNag o identyfikatorze (2033:5:1316624:0).
Identyfikator operacji: Zapisz_TraNag-14.
Błąd: The transaction ended in the trigger. The batch has been aborted. (37000), The transaction ended in the trigger. The batch has been aborted..
Trigger ma ograniczenia tylko WZ i PA a np na fakturze wyrzuca ten blad.

Kod: Zaznacz cały

    USE [CDNXL_Szkolenia]
    GO
    /****** Object:  Trigger [CDN].[Towar_z_kwota_zerowa]    Script Date: 02/13/2013 10:14:41 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO

    ALTER TRIGGER [CDN].[Towar_z_kwota_zerowa] on [CDN].[TraNag]
       AFTER UPDATE
    AS

    SET NOCOUNT ON

    IF  UPDATE( TrN_stan )
     
    BEGIN

    IF EXISTS(SELECT   *
    FROM      inserted INNER JOIN CDN.TraElem ON inserted.TrN_GIDNumer = TrE_GIDNumer
    WHERE     (inserted.TrN_GIDTyp IN (2001, 2034)))


Raiserror('#CDN_BLAD/# #CDN_1=Nie można wystawić dokumentu - zawiera towar z wartością zerową /# #CDN_2= Nie można wystawić dokumnetu - zawiera towar z wartością zerową /# #CDN_3=Skontaktuj sie z administratorem /# ',16,0)
    ROLLBACK TRAN
    SET NOCOUNT ON
    RETURN       
END

AdamSp
Posty: 51
Rejestracja: 22 kwie 2008, 09:01
Rola: Administrator CDN XL
Wersja: 9.6
Lokalizacja: Katowice

Re: Trigger - Bak mozliwosci wystawiania dok. z cena zerowa

Post autor: AdamSp »

ale to
AND (TrE_KsiegowaNetto = 0)

miało zostać

BusyBoy
Posty: 153
Rejestracja: 04 gru 2012, 08:40
Rola: Administrator CDN XL
Wersja: 2013.2

Re: Trigger - Bak mozliwosci wystawiania dok. z cena zerowa

Post autor: BusyBoy »

Wiem ze mialo zostac i docelowo tak staram sie zrobic, abe chcialem ograniczyc sie tylko do rodzaju dokumentu - tak zeby to chociaz na tym warunku ruszylo - ale niestety nie dziala poprawnie :(

AdamSp
Posty: 51
Rejestracja: 22 kwie 2008, 09:01
Rola: Administrator CDN XL
Wersja: 9.6
Lokalizacja: Katowice

Re: Trigger - Bak mozliwosci wystawiania dok. z cena zerowa

Post autor: AdamSp »

sprawdź jeszcze raz to

Kod: Zaznacz cały

IF  UPDATE( TrN_stan )
  
BEGIN

	IF EXISTS(SELECT * FROM inserted INNER JOIN CDN.TraElem ON inserted.TrN_GIDNumer = TrE_GIDNumer WHERE (inserted.TrN_GIDTyp IN (2033, 2001, 2034)) AND (TrE_KsiegowaNetto = 0))
	
	BEGIN
	 Raiserror('#CDN_BLAD/# #CDN_1=Nie można wystawić dokumentu - zawiera towar z wartością zerową /# #CDN_2= Nie można wystawić dokumnetu - zawiera towar z wartością zerową /# #CDN_3=Skontaktuj sie z administratorem /# ',16,0)
     ROLLBACK TRAN
     SET NOCOUNT ON
     RETURN
    END       
END

BusyBoy
Posty: 153
Rejestracja: 04 gru 2012, 08:40
Rola: Administrator CDN XL
Wersja: 2013.2

Re: Trigger - Bak mozliwosci wystawiania dok. z cena zerowa

Post autor: BusyBoy »

Dziekuje bardzo - Twoj przyklad dziala poprawnie - nie wiem co nie tak bylo u mnie - jeszcze raz dziekuje

ODPOWIEDZ