Wareneingang doppelt gebucht

Mehr
12 Jahre 6 Monate her - 12 Jahre 6 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
Code:
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
12 Jahre 3 Monate her - 12 Jahre 3 Monate her #274 von arnd
arnd antwortete auf Re: 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
9 Jahre 6 Monate her #1494 von asu
asu antwortete auf Wareneingang doppelt gebucht
Hallo !

Ab SQL2012 musste die Syntax des Triggers angepasst werden.

Gruß

asu
Code:
-- ============================================= -- 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.

Signum Warenwirtschaftssysteme AG
Kasinostraße 2
DE-64293 Darmstadt

Tel: +49 (6151) 15 18 - 0
Fax: +49 (6151) 15 18 - 100
info@signum.ag