Wareneingang doppelt gebucht

Mehr
7 Jahre 10 Monate her - 7 Jahre 10 Monate her #787 von asu
Wareneingang doppelt gebucht wurde erstellt von asu
Hallo,

wenn es bei Ihnen des öfteren vorkommt, dass Wareneingänge doppelt erfasst werden, oder Sie verhindern möchten, dass beim Wareneingang die Lieferschein-Nr vergessen wird einzugeben ( was dann bei der Rechnungskontrolle wieder zu Problemen führt ), hier ein Beispiel für einen Datenbank-Trigger, der beides verhindert/abfängt.

Gruß
asu
CREATE TRIGGER [dbo].[UserWELieferscheinCheck] 
ON [dbo].[GeschäftsVorfall] 
FOR INSERT, UPDATE AS 
IF @@RowCount=1
Begin
SET NOCOUNT ON 
   --um zu verhindern das ein WE ohne Lieferschein-Nr verbucht werden, ohne Rollback. wegen der ReKo
IF (SELECT COUNT(*) 
    FROM inserted
    WHERE Status='VBU' AND VorfallKürzel='WE' AND FremdVorfallNr IS NULL)>0 
      BEGIN
        RAISERROR 44447 'Die Lieferschein-Nr fehlt, der WE kann so nicht VBU werden.'
        /*ROLLBACK TRANSACTION*/
        RETURN
      END

If (select count(*) 
      from Geschäftsvorfall INNER JOIN inserted
      ON Geschäftsvorfall.KorrNr=inserted.KorrNr 
      AND Geschäftsvorfall.Fremdvorfallnr=inserted.FremdVorfallNr AND left(Geschäftsvorfall.Vorfalldatum,4)=left(inserted.VorfallDatum,4)
      where Geschäftsvorfall.Vorfallkürzel='WE' 
      and Geschäftsvorfall.Status in ('VBU','UEB') 
      and inserted.Vorfallkürzel='WE' AND insrted.Status in ('VBU','UEB') )>1 
      BEGIN
        RAISERROR 44447 'Die Lieferschein-Nr wurde in diesem Jahr bereits gebucht, WE kann nicht VBU werden.'
        /*ROLLBACK TRANSACTION*/
        RETURN
      END
END

"Wer Rechtschreibfehler findet, darf sie behalten."

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
7 Jahre 8 Monate her - 7 Jahre 8 Monate her #274 von arnd
arnd antwortete auf Wareneingang doppelt gebucht
Hallo asu,

Vielen Dank für den Code!

Das 'UEB' sollte man allerdings weg lassen, solange noch nicht alle vorhandenen doppelten Lieferscheinnummern durch die Rechnungskontrolle sind. Sie kommen sonst nicht in die FibuBelege.

Grüße
Arnd.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
4 Jahre 10 Monate her #1494 von asu
asu antwortete auf Wareneingang doppelt gebucht
Hallo !

Ab SQL2012 musste die Syntax des Triggers angepasst werden.

Gruß

asu
-- =============================================
-- Autor:         Signum GmbH
-- Erstellung:
-- Letze Änderung: Syntax umgeschrieben/optimiert, Raiserror Syntax für SQL2012 mit Severity 16
-- Freigabe am nach Test von: 
-- Beschreibung: Trigger um die Verbuchung des Vorfall WE ohne FremdVorfallNr ( Lieferschein ) bzw. doppelte LieferscheinNr zu verhindern
-- =============================================

ALTER TRIGGER [dbo].[UserWEFremdVorfall] 
ON [dbo].[GeschäftsVorfall] 
FOR INSERT, UPDATE AS 
IF @@RowCount=1
Begin
SET NOCOUNT ON 
   --um zu verhindern das ein WE ohne Lieferschein-Nr verbucht werden, wegen der ReKo
IF (SELECT COUNT (* )
    FROM inserted
    WHERE Status='VBU' AND VorfallKürzel='WE' AND (inserted.FremdVorfallNr is null OR inserted.FremdVorfallNr=''))>0
      BEGIN
        RAISERROR( 'Die Lieferschein-Nr fehlt, WE kann nicht VBU werden.',16,1)
        ROLLBACK TRANSACTION
        RETURN
      END

If (select count(*) 
      from Geschäftsvorfall INNER JOIN inserted
      ON Geschäftsvorfall.KorrNr=inserted.KorrNr 
      AND Geschäftsvorfall.Fremdvorfallnr=inserted.FremdVorfallNr AND left(Geschäftsvorfall.Vorfalldatum,4)=left(inserted.VorfallDatum,4)
      where Geschäftsvorfall.Vorfallkürzel='WE' 
      and Geschäftsvorfall.Status in ('VBU','UEB') 
      and inserted.Vorfallkürzel='WE' AND inserted.Status in ('VBU','UEB') )>1 
      BEGIN
        RAISERROR('Die Lieferschein-Nr wurde in diesem Jahr bereits gebucht, WE kann nicht VBU werden.',16,1)
        ROLLBACK TRANSACTION
        RETURN
      END
END

"Wer Rechtschreibfehler findet, darf sie behalten."

Bitte Anmelden oder Registrieren um der Konversation beizutreten.