/****** Object: UserDefinedFunction [dbo].[FNDD_GET_MACROSUBARTICLE_PRICE] Script Date: 08.06.2021 13:04:22 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- FNDD_GET_MACROSUBARTICLE_PRICE -- ================================================================= -- Die Funktion ermittelt für Makro-Sub-Artikel den Bundlepreis für -- einen definierten Makro-Artikel. -- Voraussetzung ist, dass es eine "Bundlepreisliste" gibt, und dass -- es für diese Preisliste und den Makroartikel einen speziellen Preis -- gibt. -- Wurde kein solcher Preis gefunden, gibt die Funktion -999 zurück. -- -- Returns: Bundlepreis : FLOAT -- ================================================================= -- 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: 08.06.2021 / MP -- Version Number: 1.0.0.1 -- ================================================================= -- History: -- 08.06.2021 / MP - Bundlepreisliste aus dem Mandantenstamm ziehen CREATE FUNCTION [dbo].[FNDD_GET_MACROSUBARTICLE_PRICE] ( -- Parameters for this function @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' ,@MakroSubArtikelnummer VARCHAR(30) -- Hauptartikelnummer (T026.C003) Expl: 'AC0101001' ) RETURNS VARCHAR(256) AS BEGIN -- Declare the return variable here DECLARE @RESULT FLOAT = -999 ,@T044_PREISLISTENR INT ,@T043_PREIS FLOAT -- 1. Finde die Nummer der Bundlepreisliste in den Zusatzfeldern im Mandantenstamm SELECT TOP 1 @T044_PREISLISTENR = t.c014 FROM t057 t WHERE t.c031 = '001' -- Zusatzfelder aus dem Mandantenstamm AND t.mesocomp = @WinLineMandator AND t.mesoyear = @WinLineYear -- 2. Finde einen Preis in der Preisliste für den Artikel (t043) IF (@T044_PREISLISTENR > 0) BEGIN SELECT TOP 1 @RESULT = t.c013 FROM T043 t WITH(NOLOCK) WHERE t.c000 = @MakroSubArtikelnummer AND t.c002 = @T044_PREISLISTENR AND t.c014 LIKE @MakroArtikelnummer AND t.mesocomp = @WinLineMandator AND t.mesoyear = @WinLineYear END -- Failsafe SET @RESULT = ISNULL(@RESULT, -999) RETURN @RESULT END GO