Kopieren von Konfigurationen auf Variationskombinationen

mylederhosen.com

Aktives Mitglied
1. November 2011
36
0
WAWI 099890, Shop 3.16

Hallo zusammen,
Nachdem ich lange Zeit nach jeder Änderung an den Artikeln oder den Konfigurationen ein SQL-Script laufen lassen mußte, BEVOR die Artikel zum WebShop übertragen wurden, habe ich jetzt eine Lösung per Trigger erstellt, die außerdem den Vorteil hat, dass nicht alle Variationskombinationen erst gelöscht, und dann neu erstellt werden mußten. (Dabei habe ich immer die Preise verloren, aber dazu in einem neuen Thread)

Hier ist meine Lösung, und vielleicht lassen sich die Entwickler ja inspirieren:

Die Trigger habe sind für die Datenbank eazybusiness, bitte passt sie also an, und ich gebe keine Gewährleistung:

1. Trigger abv_copy_konfigurationen wird aufgerufen nach insert oder updaten von [tartikel] und zwar hier für die variationskombinationen.
Der Trigger kopiert alle Konfigurationen des Vaterartikels in die neue Variationskombination.
PHP:
USE eazybusiness;
GO
IF OBJECT_ID ('dbo.abv_copy_konfigurationen','TR') IS NOT NULL
   DROP TRIGGER dbo.abv_copy_konfigurationen;
GO
CREATE TRIGGER dbo.abv_copy_konfigurationen on [eazybusiness].[dbo].[tartikel]
AFTER INSERT, UPDATE
AS
DECLARE @artikelnummer as varchar(20);
DECLARE @vaterartikel as varchar(20);
BEGIN
    SELECT @artikelnummer = kArtikel from INSERTED;
    SELECT @vaterartikel = kVaterArtikel from INSERTED;
    DELETE FROM [eazybusiness].[dbo].[tartikelkonfiggruppe] 
      WHERE [kArtikel] = @artikelnummer;
      
    INSERT INTO [eazybusiness].[dbo].[tartikelkonfiggruppe]
           ([kArtikel]
           ,[kKonfiggruppe]
           ,[nSort])
    SELECT  @artikelnummer,akg.kKonfiggruppe,akg.nSort
        FROM [eazybusiness].[dbo].[tartikelkonfiggruppe] as akg
        where akg.kArtikel = @vaterartikel;
END

GO
 

mylederhosen.com

Aktives Mitglied
1. November 2011
36
0
Script 2

1. Trigger 2 + 3 abv_update_konfigurationen und abv_delete_konfigurationen werden aufgerufen nach insert,updaten oder delete von [[tartikelkonfiggruppe]] und zwar hier für den Vaterartikel.
Der Trigger löscht die entsprechende Konfiguration bei den Variationskombinationen, und/oder legt sie neu an.

PHP:
USE eazybusiness;
GO
IF OBJECT_ID ('dbo.abv_update_konfigurationen','TR') IS NOT NULL
   DROP TRIGGER dbo.abv_update_konfigurationen;
GO
CREATE TRIGGER dbo.abv_update_konfigurationen on [eazybusiness].[dbo].[tartikelkonfiggruppe]
AFTER INSERT, UPDATE
AS
DECLARE @artikelnummer as varchar(20);
DECLARE @gruppe as varchar(20);
DECLARE @sort as varchar(20);
BEGIN
    SELECT @artikelnummer = kArtikel from INSERTED;
    SELECT @gruppe = [kKonfiggruppe] from INSERTED;
    SELECT @sort = [nSort] from INSERTED;
    DELETE FROM [eazybusiness].[dbo].[tartikelkonfiggruppe] 
      WHERE [kKonfiggruppe] = @gruppe
      AND [kArtikel] IN 
      ( SELECT [kArtikel] 
        FROM [eazybusiness].[dbo].[tartikel] 
        WHERE [kVaterArtikel] = @artikelnummer);
      
    INSERT INTO [eazybusiness].[dbo].[tartikelkonfiggruppe]
           ([kArtikel]
           ,[kKonfiggruppe]
           ,[nSort])
    SELECT  a.kArtikel,@gruppe,@sort
        FROM [eazybusiness].[dbo].[tartikel] as a
        where a.[kVaterArtikel] = @artikelnummer;
END
GO
IF OBJECT_ID ('dbo.abv_delete_konfigurationen','TR') IS NOT NULL
   DROP TRIGGER dbo.abv_delete_konfigurationen;
GO
CREATE TRIGGER dbo.abv_delete_konfigurationen on [eazybusiness].[dbo].[tartikelkonfiggruppe]
AFTER DELETE
AS
DECLARE @artikelnummer as varchar(20);
DECLARE @gruppe as varchar(20);
BEGIN
    SELECT @artikelnummer = kArtikel from DELETED;
    SELECT @gruppe = [kKonfiggruppe] from DELETED;
    DELETE FROM [eazybusiness].[dbo].[tartikelkonfiggruppe] 
      WHERE [kKonfiggruppe] = @gruppe
      AND [kArtikel] IN 
      ( SELECT [kArtikel] 
        FROM [eazybusiness].[dbo].[tartikel] 
        WHERE [kVaterArtikel] = @artikelnummer);

END


GO
 

mylederhosen.com

Aktives Mitglied
1. November 2011
36
0
Ablauf

1. Beim Anlegen von Variationskombinationen werden die Konfigurationsgruppen vom Vater "herunter" kopiert auf die Variationskombinationen.
2. Beim Anlegen oder Löschen von Konfigurationsgruppen des Vaters, werden die Konfigurationsgruppen der Kinder mit modifiziert.

Diese Skripte sind nur für Leute empfehlenswert, die immer alle Konfigurationen der Variationskombinationen synchron zum Vaterartikel halten wollen.
Eventuell sollte man das über ein Funktionsattribut im Vater steuerbar machen?

Viel Spaß
Florian
 

Ähnliche Themen