80 lines
2.6 KiB
Transact-SQL
80 lines
2.6 KiB
Transact-SQL
|
|
/****** 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: 10.08.2021 / MP/VF
|
|
-- Version Number: 1.0.0.2
|
|
-- =================================================================
|
|
-- History:
|
|
-- 10.08.2021 / MP/VF - Rückgabewert auf Float geändert
|
|
-- 08.06.2021 / MP - Bundlepreisliste aus dem Mandantenstamm ziehen
|
|
|
|
ALTER 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 FLOAT
|
|
AS
|
|
BEGIN
|
|
-- Declare the return variable here
|
|
DECLARE
|
|
@RESULT FLOAT
|
|
,@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
|
|
|
|
|