/****** Object: UserDefinedFunction [dbo].[FNDD_GET_ALL_MACROSUBARTICLE] Script Date: 08.06.2021 13:03:32 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ================================================================= -- FNDD_GET_ALL_MACROSUBARTICLE -- ================================================================= -- Die Funktion läd für einen Makro-Artikel alle im VK-Makro enthaltenen -- Makro-Sub-Artikel inklusive Menge und dem Bundlepreis. -- -- Die Funktion soll aus einem Web-Shop aufgerufen werden können. -- -- Returns: Tabelle mit den Spalten -- LaufendeNummer INT Wert aus t326.c009 Expl: 1 -- MakroSubArtikelnummer VARCHAR(30) Wert aus t326.c006 Expl: 'GT0674001' -- MakroMenge INT Berechneter Wert aus Aktion, Wert und Expl: 1 -- Bestellter Menge -- MakroPreis FLOAT Der Bundlepreis für diesen Sub-Artikel Expl: 123.45 -- -- Hinweise: -- - Wenn der Preis = -999.00 ist, dann wurde kein Bundlepreis gefunden -- - Wenn die Menge = 0 ist, dann konnte keine menge berchnet werden, z.B. weil es sich um einen Textbaustein handelt! -- -- ================================================================= -- Copyright (c) 2021 by Digital Data GmbH -- -- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim -- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works -- ================================================================= -- Creation Date / Author: 26.05.2021 / MP -- Version Date / Editor: 27.05.2021 / MP -- Version Number: 1.0.0.1 -- ================================================================= -- History: -- 01.01.202X / XX - DESCRIPTION CREATE FUNCTION [dbo].[FNDD_GET_ALL_MACROSUBARTICLE] ( -- Add the parameters for the function here @WinLineYear INT -- Mandatory Parameter, for the WinLine Year (yyyy) Expl: 1440 (= 2020) ,@WinLineMandator VARCHAR(4) -- Mandatory Parameter, for the WinLine Mandator (~~~~) Expl: '500M' ,@MakroArtikelnummer VARCHAR(30) -- Hauptartikelnummer des Makro-Artikels (T026.C003) Expl: 'XX1000001' ,@BestellteMenge INT -- Die bestellte Menge, als Basis für die Anzahl der Sub-Artikel Expl: 1 ) RETURNS @Table TABLE ( -- Add the column definitions for the TABLE variable here LaufendeNummer INT ,MakroSubArtikelnummer VARCHAR(30) NOT NULL DEFAULT '' ,MakroMenge INT NOT NULL DEFAULT 0 ,MakroPreis FLOAT NOT NULL DEFAULT 0.00 ) AS BEGIN DECLARE @LaufendeNummer INT ,@MakroSubArtikelnummer VARCHAR(30) ,@MakroMenge INT ,@MakroPreis FLOAT ,@MakroWert INT ,@MakroAktion INT ,@VKMakroName VARCHAR(20) ,@LastMengeKonstante INT SELECT DISTINCT @VKMakroName = t.c037 FROM v021 t WHERE t.c002 = @MakroArtikelnummer AND t.mesocomp = @WinLineMandator AND t.mesoyear = @WinLineYear IF Len(@VKMakroName) <= 0 BEGIN -- Kein VKMakroName definiert, dann gibt es auch keine Sub-Artikel RETURN END DECLARE cursMacroSubArticles CURSOR FOR SELECT t.c009 -- Zeile ,t.c006 -- Artikelnummer ,t.c008 -- Wert ,t.c007 -- Aktion FROM t326 t WHERE t.c002 like @VKMakroName + '%' AND t.mesocomp = @WinLineMandator AND t.mesoyear = @WinLineYear OPEN cursMacroSubArticles FETCH NEXT FROM cursMacroSubArticles INTO @LaufendeNummer, @MakroSubArtikelnummer, @MakroWert, @MakroAktion WHILE @@FETCH_STATUS = 0 BEGIN -- Hole MakroPreis über die Skalarfunktion FNDD_GET_MACROSUBARTICLE_PRICE Select @MakroPreis = [dbo].[FNDD_GET_MACROSUBARTICLE_PRICE] (@WinLineYear, @WinLineMandator, @MakroArtikelnummer, @MakroSubArtikelnummer) -- Berechne die MakroMenge anhand der Aktion, des Wert und der bestellten Menge IF @MakroAktion = 1 BEGIN -- Mengeneingabe SET @MakroMenge = @BestellteMenge SET @LastMengeKonstante = @BestellteMenge END ELSE IF @MakroAktion = 2 BEGIN -- Mengenkonstante SET @MakroMenge = @MakroWert SET @LastMengeKonstante = @MakroWert END ELSE IF @MakroAktion = 3 BEGIN -- Mengenmutliplikation SET @MakroMenge = @BestellteMenge * @MakroWert END ELSE IF @MakroAktion = 4 BEGIN -- Mengenaddition = Addition des Werts zur letzten Konstante SET @MakroMenge = @LastMengeKonstante + @MakroWert END ELSE BEGIN SET @MakroMenge = 0 END INSERT INTO @Table ( LaufendeNummer ,MakroSubArtikelnummer ,MakroMenge ,MakroPreis ) VALUES ( @LaufendeNummer ,@MakroSubArtikelnummer ,@MakroMenge ,@MakroPreis ) FETCH NEXT FROM cursMacroSubArticles INTO @LaufendeNummer, @MakroSubArtikelnummer, @MakroWert, @MakroAktion END CLOSE cursMacroSubArticles DEALLOCATE cursMacroSubArticles RETURN END GO