Wareneingang doppelt gebucht

More
14 years 6 days ago - 14 years 6 days ago #787 by asu
Wareneingang doppelt gebucht was created by 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."

Please Log in or Create an account to join the conversation.

More
13 years 9 months ago - 13 years 9 months ago #274 by arnd
Replied by arnd on topic 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.

Please Log in or Create an account to join the conversation.

More
11 years 1 day ago #1494 by asu
Replied by asu on topic 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."

Please Log in or Create an account to join the conversation.

Signum GmbH
Kasinostraße 2
DE-64293 Darmstadt, Germany

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