Problem
Ihr setzt Shop-bezogene Funktionsattribute oder Attribute ein. Per Workflow kann man dabei aber immer nur den globalen Wert setzen, aber nicht den Shop bezogenen.
Beispiel: Ihr nutzt das Shopware-Attribut "active" in den einzelnen Shops, um die Sichtbarkeit zu steuern. Das kann man aber nur auf Shop-Ebene sinnvoll tun.
Die JTL Workflows bieten das nicht an. Man kann nur den globalen Wert für alle Shops setzen.
Lösungsansatz
Wir setzen hierfür die neue Funktion "CustomWorkflows" von JTL ein. Diese gibt es erst ab der Wawi-Version 1.6.
Für eine Variante in der Wawi 1.5 muss man einen Powershell-Wrapper verwenden. Sprecht uns gerne darauf an, falls ihr das benötigt.
Nachteil
Diese Variante muss mit jedem großen JTL Update eingehend geprüft werden. Insbesondere weil Spalten und Tabellen anders heißen könnten.
Vorteil
Diese Variante kann direkt in den JTL Workflows aufgerufen werden und gilt als äußerst performant. Auch sollten die JTL eigenen Trigger für Shop-Uploads hinreichend berücksichtigt werden.
Hinweis
Die eBay- oder amazon-Trigger werden dadurch nicht ausgelöst. Die stehen in anderen Bereichen der Datenbank.
Einrichtung
Ihr öffnet das Managementstudio mit der Datenbankverbindung und geht in den betroffenen Mandanten
Dort führt ihr dann folgendes SQL aus:
--Copyright (c) 2022 T4DT GmbH --Jedem, der eine Kopie dieser Software und der zugeh rigen Dokumentationsdateien (die "Software") erh lt, wird hiermit kostenlos die Erlaubnis erteilt, ohne Einschr nkung mit der Software zu handeln, einschlie lich und ohne Einschr nkung der Rechte zur Nutzung, zum Kopieren, ndern, Zusammenf hren, Ver ffentlichen, Verteilen, Unterlizenzieren und/oder Verkaufen von Kopien der Software, und Personen, denen die Software zur Verf gung gestellt wird, dies unter den folgenden Bedingungen zu gestatten: --Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
IF NOT EXISTS( SELECT TOP 1 1 FROM sys.types WHERE name = 'Parameter_AttributWert') CREATE TYPE CustomWorkflows.Parameter_AttributWert FROM NVARCHAR(255); GO EXEC CustomWorkflows._SetActionParameterDisplayName @parameterName = 'Parameter_AttributWert', @displayName = 'Attribut-Wert' IF NOT EXISTS( SELECT TOP 1 1 FROM sys.types WHERE name = 'Parameter_kShop') CREATE TYPE CustomWorkflows.Parameter_kShop FROM INT; GO IF NOT EXISTS( SELECT TOP 1 1 FROM sys.types WHERE name = 'Parameter_kSprache') CREATE TYPE CustomWorkflows.Parameter_kSprache FROM INT; GO IF NOT EXISTS( SELECT TOP 1 1 FROM sys.types WHERE name = 'Parameter_kAttribut') CREATE TYPE CustomWorkflows.Parameter_kAttribut FROM INT; GO IF EXISTS(SELECT 1 FROM sys.procedures WHERE Name = 'AttributShopWertSetzen') DROP PROCEDURE CustomWorkflows.AttributShopWertSetzen GO CREATE PROCEDURE CustomWorkflows.AttributShopWertSetzen @kArtikel INT, @value Parameter_AttributWert, @kShop Parameter_kShop, @kSprache Parameter_kSprache, @kAttribut Parameter_kAttribut AS BEGIN UPDATE artAttI18n SET cWertVarchar = @value FROM dbo.tArtikelAttributSprache artAttI18n JOIN dbo.tArtikelAttribut artAt ON artAt.kArtikelAttribut = artAttI18n.kArtikelAttribut WHERE kShop = @kShop AND artAttI18n.kSprache = @kSprache AND kArtikel = @kArtikel AND kAttribut = @kAttribut END GO EXEC CustomWorkflows._CheckAction 'AttributShopWertSetzen' GO EXEC CustomWorkflows._SetActionDisplayName 'AttributShopWertSetzen', 'Attributwert für Shop setzen' GO
So sieht das dann in der Workflowverwaltung aus:
Hinweise
- Attribut-Wert kann beliebig gewählt oder per dotliquid gesetzt werden
- kShop muss aus der eigenen Datenbank (in dbo.tShop) ermittelt werden und ist je Setup unterschiedlich. Theoretisch kann man auch den Wert 0 für global hiermit nutzen, dafür ist aber der Workflow "Wert setzen" von JTL gemacht und gedacht.
- kSprache wird in dbo.tSpracheUsed ermittelt, nicht aus dbo.tSprache. Wichtig: Bei Funktionsattributen muss der Wert 0 gesetzt werden
- kAttribut wird am leichtesten aus der Tabelle dbo.tAttributSprache ermittelt, da dort der jeweilige Attributname steht.
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.