mylederhosen.com
Aktives Mitglied
WAWI 099890 SHOP 3.16
Hallo zusammen,
wir arbeiten viel mit prozentuellen Aufschlägen, und habe hier ein Skript erstellt, dass vielleicht einmal von JTL als Inspiration nehmen könnte
Dieses Skript benutzt den Namen der Variation, hier 'Größe' und sucht dort nach der Zeichenkette (+10%), dann berechnet es die Aufschläge für fVKBrutto und fVKNetto über die enthaltene Zahl, hier also 10 ! Das Skript nimmt in diesem Beispiel auch den Aufpreis auf die Variation mit dem Namen "Material" und berücksichtigt diesen.
Beispiel: Hose 100€, Material +50€, Größe +10% -> Preis: 165€
Beispiel: Hose 100€, Material + 0€, Größe + 10% -> Preis: 110€
Beispiel: Hose 100€, Material +50€, Größe ohne Aufschlag -> Preis 150€
Das Skript ist als Trigger angelegt, so dass meine Mitarbeiterin nichts starten oder kontrollieren muß.
Funktioniert zauberhaft. Viel Spaß
Hallo zusammen,
wir arbeiten viel mit prozentuellen Aufschlägen, und habe hier ein Skript erstellt, dass vielleicht einmal von JTL als Inspiration nehmen könnte
Dieses Skript benutzt den Namen der Variation, hier 'Größe' und sucht dort nach der Zeichenkette (+10%), dann berechnet es die Aufschläge für fVKBrutto und fVKNetto über die enthaltene Zahl, hier also 10 ! Das Skript nimmt in diesem Beispiel auch den Aufpreis auf die Variation mit dem Namen "Material" und berücksichtigt diesen.
Beispiel: Hose 100€, Material +50€, Größe +10% -> Preis: 165€
Beispiel: Hose 100€, Material + 0€, Größe + 10% -> Preis: 110€
Beispiel: Hose 100€, Material +50€, Größe ohne Aufschlag -> Preis 150€
Das Skript ist als Trigger angelegt, so dass meine Mitarbeiterin nichts starten oder kontrollieren muß.
Funktioniert zauberhaft. Viel Spaß
PHP:
USE eazybusiness;
GO
IF OBJECT_ID ('dbo.abv_update_aufpreise','TR') IS NOT NULL
DROP TRIGGER dbo.abv_update_aufpreise;
GO
CREATE TRIGGER dbo.abv_update_aufpreise on [eazybusiness].[dbo].[tartikel]
AFTER UPDATE
AS
DECLARE @artikelnummer as varchar(20);
BEGIN
SELECT @artikelnummer = kArtikel from INSERTED;
update [eazybusiness].[dbo].[tartikel]
set fVKBrutto = source.fVKBrutto,
fVKNetto = source.fVKNetto
from [eazybusiness].[dbo].[tartikel] a
inner join
( select kArtikel, vaterBrutto, fAufpreisLeder,
fVKBrutto = case when perc is not null THEN round((z.vaterBrutto + z.fAufpreisLeder) * ( 1 + (convert(numeric,perc)/100)),0) ELSE z.vaterBrutto + z.fAufpreisLeder END,
fVKNetto = case when perc is not null THEN round((z.vaterBrutto + z.fAufpreisLeder) * ( 1 + (convert(numeric,perc)/100)) / 1.19 ,2) ELSE round((z.vaterBrutto + z.fAufpreisLeder) / 1.19,2) END
FROM
(SELECT a.[kArtikel],v.fvkbrutto vaterBrutto ,ewl.[fAufpreis] fAufpreisLeder
, perc = case when charindex('(+',ew.cName) > 0 then substring(ew.cName,charindex('(+',ew.cName) +2,(charindex('%)',ew.cName) - (charindex('(+',ew.cName)+2))) else null END
FROM [eazybusiness].[dbo].[tartikel] v, [eazybusiness].[dbo].[tartikel] a
,[eazybusiness].[dbo].[tEigenschaftKombiWert] ek, [eazybusiness].[dbo].[teigenschaft] e ,[eazybusiness].[dbo].[teigenschaftwert] ew
,[eazybusiness].[dbo].[tEigenschaftKombiWert] ekl, [eazybusiness].[dbo].[teigenschaft] el ,[eazybusiness].[dbo].[teigenschaftwert] ewl
where v.kVaterArtikel = 0
and a.kVaterArtikel = @artikelnummer
and a.kVaterArtikel = v.kArtikel
and v.nIstVater = 1
and a.keigenschaftkombi = ek.keigenschaftkombi
and e.keigenschaft = ek.keigenschaft
and e.cName = 'Größe'
and ew.keigenschaftwert = ek.keigenschaftwert
and a.keigenschaftkombi = ekl.keigenschaftkombi
and el.keigenschaft = ekl.keigenschaft
and el.cName = 'Material'
and ewl.keigenschaftwert = ekl.keigenschaftwert
) z
) as source
on a.kartikel = source.kartikel
END
GO
IF OBJECT_ID ('dbo.abv_aufpreise','TR') IS NOT NULL
DROP TRIGGER dbo.abv_aufpreise;
GO
CREATE TRIGGER dbo.abv_aufpreise on [eazybusiness].[dbo].[tartikel]
AFTER INSERT
AS
DECLARE @artikelnummer as varchar(20);
DECLARE @vater as varchar(20);
BEGIN
SELECT @artikelnummer = kArtikel from INSERTED;
SELECT @vater = kVaterArtikel from INSERTED;
update [eazybusiness].[dbo].[tartikel]
set fVKBrutto = source.fVKBrutto,
fVKNetto = source.fVKNetto
from [eazybusiness].[dbo].[tartikel] a
inner join
( select kArtikel, vaterBrutto, fAufpreisLeder,
fVKBrutto = case when perc is not null THEN round((z.vaterBrutto + z.fAufpreisLeder) * ( 1 + (convert(numeric,perc)/100)),0) ELSE z.vaterBrutto + z.fAufpreisLeder END,
fVKNetto = case when perc is not null THEN round((z.vaterBrutto + z.fAufpreisLeder) * ( 1 + (convert(numeric,perc)/100)) / 1.19 ,2) ELSE round((z.vaterBrutto + z.fAufpreisLeder) / 1.19,2) END
FROM
(SELECT a.[kArtikel],v.fvkbrutto vaterBrutto ,ewl.[fAufpreis] fAufpreisLeder
, perc = case when charindex('(+',ew.cName) > 0 then substring(ew.cName,charindex('(+',ew.cName) +2,(charindex('%)',ew.cName) - (charindex('(+',ew.cName)+2))) else null END
FROM [eazybusiness].[dbo].[tartikel] v, [eazybusiness].[dbo].[tartikel] a
,[eazybusiness].[dbo].[tEigenschaftKombiWert] ek, [eazybusiness].[dbo].[teigenschaft] e ,[eazybusiness].[dbo].[teigenschaftwert] ew
,[eazybusiness].[dbo].[tEigenschaftKombiWert] ekl, [eazybusiness].[dbo].[teigenschaft] el ,[eazybusiness].[dbo].[teigenschaftwert] ewl
where v.kVaterArtikel = 0
and a.kArtikel= @artikelnummer
and v.kArtikel = @vater
and a.kVaterArtikel = v.kArtikel
and v.nIstVater = 1
and a.keigenschaftkombi = ek.keigenschaftkombi
and e.keigenschaft = ek.keigenschaft
and e.cName = 'Größe'
and ew.keigenschaftwert = ek.keigenschaftwert
and a.keigenschaftkombi = ekl.keigenschaftkombi
and el.keigenschaft = ekl.keigenschaft
and el.cName = 'Material'
and ewl.keigenschaftwert = ekl.keigenschaftwert
) z
) as source
on a.kartikel = source.kartikel
END
GO