Artikelanlage ohne EAN verhindern

Mehr
13 Jahre 10 Monate her - 13 Jahre 10 Monate her #310 von arnd
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.
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 oder Registrieren um der Konversation beizutreten.