Anlage des Repos
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
/****** 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user