- Beiträge: 4
- Dank erhalten: 0
Artikelanlage ohne EAN verhindern
- arnd
-
Autor
- Offline
- Neues Mitglied
-
Weniger
Mehr
13 Jahre 3 Wochen her - 13 Jahre 3 Wochen her #310
von arnd
arnd antwortete auf Re: Artikelanlage ohne EAN verhindern
Hallo asu,
ja es geht um Hersteller-Barcodes. Komischer Weise sind die Artikel immer wieder mal schneller produziert und ausgeliefert, als eine Datei mit Artikeldaten erstellt werden kann.
Wenn die sinnvolle Funktion aus der DOS-Version wiederbelebt werden sollte, könnte man das über ein neues Feld in den Adressen-Statusfeldern steuern.
Allerdings zieht das Ganze, wie ich gerade feststellen musste, doch weitere Kreise. Wenn z.B. bestimmte Warengruppen grundsätzlich keine EAN's haben oder Lieferanten-unabhängige Sammelartikel im WE verbucht werden sollen. Den Trigger habe ich deshalb in diesen zwei Punkten nochmal angepasst.
Danke auch für den Tipp mit varchar(). Weil bei uns die Korrnummern immer 3-stelig, numerisch sind, habe ich daran nicht gedacht.
Grüße,
Arnd.
ja es geht um Hersteller-Barcodes. Komischer Weise sind die Artikel immer wieder mal schneller produziert und ausgeliefert, als eine Datei mit Artikeldaten erstellt werden kann.
Wenn die sinnvolle Funktion aus der DOS-Version wiederbelebt werden sollte, könnte man das über ein neues Feld in den Adressen-Statusfeldern steuern.
Allerdings zieht das Ganze, wie ich gerade feststellen musste, doch weitere Kreise. Wenn z.B. bestimmte Warengruppen grundsätzlich keine EAN's haben oder Lieferanten-unabhängige Sammelartikel im WE verbucht werden sollen. Den Trigger habe ich deshalb in diesen zwei Punkten nochmal angepasst.
Code:
USE [...300]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Trigger [dbo].[UserGeschäftsVorfallPos_Insert_EAN] ON [dbo].[GeschäftsvorfallPosition] FOR INSERT AS
SET NOCOUNT ON
declare @str as varchar(150)
set @str = CHAR(10) + 'GeschäftsVorfallPos.'+CHAR(10) + 'Für diesen Artikel ist noch keine EAN-Nummer angelegt worden.'
IF (UPDATE([ArtikelNr]) AND (SELECT COUNT(*) FROM inserted inner join
artikel on inserted.artikelnr=artikel.artikelnr
where
inserted.[ArtikelNr] IS NOT NULL and
-- Nur diese Warengruppen prüfen
artikel.wgkürzel in('101', '110') and
-- Bei diesen Lieferanten prüfen
inserted.korrnr in ('211', '215', '327', '166', '116', '142', '172', '189', '191', '145', '148')
and
-- Bei Vorfallart
vorfallkürzel='WE'
and
-- Nur Artikelnummern in diesem Bereich prüfen
inserted.artikelnr between '001000' and '899999'
)>0)
BEGIN
IF (SELECT COUNT(*)
FROM inserted inner join
ean on inserted.artikelnr=ean.artikelnr
where
-- Nur EAN mit definierter Länge zulassen
len(ean.ean) between 12 and 13
)=0
BEGIN
RAISERROR (@str, 16, 1)
ROLLBACK TRANSACTION
RETURN
END
END
Danke auch für den Tipp mit varchar(). Weil bei uns die Korrnummern immer 3-stelig, numerisch sind, habe ich daran nicht gedacht.
Grüße,
Arnd.
Bitte Anmelden um der Konversation beizutreten.