8
0
2024-01-24 16:42:38 +01:00

79 lines
2.5 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: 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