- Beiträge: 22
- Dank erhalten: 3
KalkÜbersicht für Rezepturen bei EKPreisänderungen
- uwa
-
Autor
- Offline
- Moderator
-
Weniger
Mehr
9 Jahre 1 Monat her #1326
von uwa
KalkÜbersicht für Rezepturen bei EKPreisänderungen wurde erstellt von uwa
Ändern sich in der Gastronomie Einkaufspreise eines Produktes kann das je nach Wareneinsatz gravierende Auswirkungen auf den gesamten Rohertrag des Unternehmens haben. Die Übersicht hier soll helfen, das Risiko vorab zu kalkulieren bzw. erforderliche VK-Preisänderungen in Betracht zu ziehen.
Der User erfasst dazu den kalkulatorischen EKPreis in ein Multifeld. Mit diesem EK werden alle Rezepturen neu berechnet und der Rohertragsverlust/-gewinn für die Verkaufsmenge einer Periode, die in einem zweiten Multifeld gewählt werden kann, ausgewiesen.
Hier der Aufruf. Die UserQuery wird aktualisierbar am Artikel eingebunden.
Funktioniert nur bis zur 2. Hierarchie.
Der User erfasst dazu den kalkulatorischen EKPreis in ein Multifeld. Mit diesem EK werden alle Rezepturen neu berechnet und der Rohertragsverlust/-gewinn für die Verkaufsmenge einer Periode, die in einem zweiten Multifeld gewählt werden kann, ausgewiesen.
Hier der Aufruf. Die UserQuery wird aktualisierbar am Artikel eingebunden.
Funktioniert nur bis zur 2. Hierarchie.
ALTER procedure [dbo].[UserQueryInRezepturKalk] (@Artikel#ArtikelNr varchar(20)) AS
Select InRezArt.Kurztext
, InRezArt.ArtikelNr
, Einheit.Kürzel AS RezEinheit
, InRezArt.EKPRez
, InRezArt.LetzteÄnderung
, InRezArt.Artikel
, Einheit2.Kürzel AS UEinheit
, CONVERT(money,InRezArt.RezMenge) AS RezMenge
, InRezArt.EKP
, CONVERT(money,InRezArt.EKWert) AS EKWert
, CONVERT(money,InRezArt.EKPNeu) AS EKPNeu
, CONVERT(money,InRezArt.EKWertNeu) AS EKWertNeu
, CONVERT(money,(InRezArt.EKWertNeu/ EKWert*100)-100) AS AbwProz
, CONVERT(money,InRezArt.EKWertNeu-EKWert) AS AbwAbs
, CONVERT(money,InRezArt.EKPRez+(InRezArt.EKWertNeu-EKWert)) AS EKPRezNeu
, AFS.Periode
, AFS.VerkaufMenge
, AFS.VerkaufBetrag
, CONVERT(money,AFS.VerkaufBetrag - (AFS.VerkaufMenge*InRezArt.EKPRez)) AS Rohertrag
, CONVERT(money,AFS.VerkaufMenge*(InRezArt.EKWertNeu-EKWert)*-1) AS AendRE
, CASE WHEN COALESCE(AFS.VerkaufBetrag,0) = 0 THEN '' ELSE CONVERT(money,(AFS.VerkaufBetrag - (AFS.VerkaufMenge*InRezArt.EKPRez)) / AFS.VerkaufBetrag * 100) END AS SpanneIst
, CASE WHEN COALESCE(AFS.VerkaufBetrag,0) = 0 THEN '' ELSE CONVERT(money,(AFS.VerkaufBetrag - (AFS.VerkaufMenge*(InRezArt.EKPRez+(InRezArt.EKWertNeu-EKWert))))/ AFS.VerkaufBetrag * 100) END AS SpanneNEU
FROM
(
SELECT dbo.Artikel.Kurztext
, dbo.Stückliste.ArtikelNr
, Stückliste.Einheit AS RezEinheit
, dbo.UserFunktionEKPreis(0,dbo.Stückliste.ArtikelNr,Stückliste.Einheit,0,'NULL') AS EKPRez
, LetzteÄnderung
, Stückliste.UArtikelNr AS Artikel
, Stückliste.UEinheit
, dbo.Stückliste.Menge AS RezMenge
, dbo.UserFunktionEKPreis(0,@Artikel#ArtikelNr,Stückliste.UEinheit,0,'NULL') AS EKP
, dbo.Stückliste.Menge*dbo.UserFunktionEKPreis(0,@Artikel#ArtikelNr,Stückliste.UEinheit,0,'NULL') AS EKWert
, CONVERT(money,REPLACE(AHM208.Inhalt,',','.'))/CASE WHEN Umrechnung.Umrechnungsfaktor is NULL THEN 1 ELSE Umrechnung.Umrechnungsfaktor END AS EKPNeu
, dbo.Stückliste.Menge*CONVERT(money,REPLACE(AHM208.Inhalt,',','.'))/CASE WHEN Umrechnung.Umrechnungsfaktor is NULL THEN 1 ELSE Umrechnung.Umrechnungsfaktor END AS EKWertNeu
FROM Stückliste Left Join Artikel ON Stückliste.ArtikelNr = Artikel.ArtikelNr
LEFT JOIN (Select * FROM ArtikelHatMultiFeld WHERE Feldnummer = 208) AHM208
ON Stückliste.UArtikelNr = AHM208.ArtikelNr
LEFT JOIN Umrechnung ON Umrechnung.ArtikelNr = Stückliste.UArtikelNr AND Umrechnung.VonEinheit = Stückliste.UEinheit
WHERE (UArtikelNr = @Artikel#ArtikelNr)
AND Stückliste.Einheit = Artikel.StdEinheit
UNION
SELECT dbo.Artikel.Kurztext
, dbo.Stückliste.ArtikelNr
, Stückliste.Einheit AS RezEinheit
, dbo.UserFunktionEKPreis(0,dbo.Stückliste.ArtikelNr,Stückliste.Einheit,0,'NULL') AS EKPRez
, LetzteÄnderung
, Hilfe_1.Artikel AS Artikel
, Hilfe_1.UEinheit AS UEinheit
, dbo.Stückliste.Menge/CASE WHEN UmrechnungInRez.Umrechnungsfaktor is NULL THEN 1 ELSE UmrechnungInRez.Umrechnungsfaktor END * Hilfe_1.Menge AS RezMenge
, dbo.UserFunktionEKPreis(0,@Artikel#ArtikelNr,Hilfe_1.UEinheit,0,'NULL') AS EKP
, (dbo.Stückliste.Menge/CASE WHEN UmrechnungInRez.Umrechnungsfaktor is NULL THEN 1 ELSE UmrechnungInRez.Umrechnungsfaktor END) * Hilfe_1.Menge*dbo.UserFunktionEKPreis(0,@Artikel#ArtikelNr,Hilfe_1.UEinheit,0,'NULL') AS EKWert
, CONVERT(money,REPLACE(AHM208.Inhalt,',','.'))/CASE WHEN Umrechnung.Umrechnungsfaktor is NULL THEN 1 ELSE Umrechnung.Umrechnungsfaktor END AS EKPNeu
, (dbo.Stückliste.Menge/UmrechnungInRez.Umrechnungsfaktor * Hilfe_1.Menge)*CONVERT(money,REPLACE(AHM208.Inhalt,',','.'))/CASE WHEN Umrechnung.Umrechnungsfaktor is NULL THEN 1 ELSE Umrechnung.Umrechnungsfaktor END AS EKWertNeu
FROM Stückliste Left Join Artikel ON Stückliste.ArtikelNr = Artikel.ArtikelNr
LEFT JOIN Umrechnung UmrechnungInRez ON UmrechnungInRez.ArtikelNr = UArtikelNr AND UmrechnungInRez.VonEinheit = UEinheit
INNER JOIN
(
SELECT dbo.Stückliste.ArtikelNr
, Stückliste.Einheit
, @Artikel#ArtikelNr AS Artikel
, Stückliste.UEinheit
, dbo.Stückliste.Menge
, dbo.Stückliste.Menge*dbo.UserFunktionEKPreis(0,@Artikel#ArtikelNr,Stückliste.UEinheit,0,'NULL') AS EKWert
FROM Stückliste Left Join Artikel ON Stückliste.ArtikelNr = Artikel.ArtikelNr
WHERE (UArtikelNr = @Artikel#ArtikelNr)
AND Stückliste.Einheit = Artikel.StdEinheit
) AS Hilfe_1
ON Stückliste.UArtikelNr = Hilfe_1.ArtikelNr AND UmrechnungInRez.InEinheit = Hilfe_1.Einheit
LEFT JOIN (Select * FROM ArtikelHatMultiFeld WHERE Feldnummer = 208) AHM208
ON AHM208.ArtikelNr = Hilfe_1.Artikel
LEFT JOIN Umrechnung ON Umrechnung.ArtikelNr = Hilfe_1.Artikel AND Umrechnung.VonEinheit = Hilfe_1.UEinheit
WHERE UArtikelNr in
(SELECT dbo.Stückliste.ArtikelNr
FROM Stückliste Left Join Artikel ON Stückliste.ArtikelNr = Artikel.ArtikelNr
INNER JOIN Einheit ON Stückliste.UEinheit = Einheit.Einheit
WHERE (UArtikelNr = @Artikel#ArtikelNr) AND Stückliste.Einheit = Artikel.StdEinheit)
AND Stückliste.Einheit = Artikel.StdEinheit
) InRezArt
INNER JOIN Einheit ON InRezArt.RezEinheit = Einheit.Einheit
INNER JOIN Einheit Einheit2 ON InRezArt.UEinheit = Einheit2.Einheit
--Auslesen Periode
LEFT JOIN
(Select * FROM ArtikelHatMultiFeld WHERE Feldnummer = 209) AHM209
ON InRezArt.Artikel = AHM209.ArtikelNr
--AbsatzMenge einer Periode
LEFT JOIN
(Select ArtikelFilialStatistik.* FROM ArtikelFilialStatistik WHERE FilialNummer = 0) AS AFS
ON AFS.ArtikelNr = InRezArt.ArtikelNr AND AFS.Einheit = InRezArt.RezEinheit AND AFS.Periode = AHM209.Inhalt
ORDER BY InRezArt.ArtikelNr DESC
Bitte Anmelden oder Registrieren um der Konversation beizutreten.