- Beiträge: 161
- Dank erhalten: 20
Wareneingang doppelt gebucht
- asu
-
Autor
- Offline
- Moderator
-
Weniger
Mehr
11 Jahre 5 Monate her - 11 Jahre 5 Monate her #787
von asu
"Wer Rechtschreibfehler findet, darf sie behalten."
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
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.
- arnd
-
- Offline
- Fresh Boarder
-
Weniger
Mehr
- Beiträge: 4
- Dank erhalten: 0
11 Jahre 3 Monate her - 11 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.
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.
- asu
-
Autor
- Offline
- Moderator
-
Weniger
Mehr
- Beiträge: 161
- Dank erhalten: 20
8 Jahre 5 Monate her #1494
von asu
"Wer Rechtschreibfehler findet, darf sie behalten."
asu antwortete auf Wareneingang doppelt gebucht
Hallo !
Ab SQL2012 musste die Syntax des Triggers angepasst werden.
Gruß
asu
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.