Hallo Lukas,
habe eine Möglichkeit gefunden, aber geht nur mit CustomWorkflows.(Edition JTL Pro)
Basis:
https://support.t4dt.com/hc/de/arti...ttribute-für-Shops-per-Workflow-setzen-ab-1-6
Danke an -> T4DT GmbH
Script auf dem SQL Server: Ihr öffnet das Managementstudio mit der Datenbankverbindung und geht in den betroffenen Mandanten:
Script:
--Copyright (c) 2022 T4DT GmbH
--INSERT INTO Datensatz in die erste Tabelle (tArtikelAttribut) und Datensatz in die zweite Tabelle (tArtikelAttributSpache) eingefügt (Bernd)
--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
IF EXISTS(SELECT artAt.kArtikelAttribut 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)
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
ELSE
BEGIN
-- Datensatz in die erste Tabelle (tArtikelAttribut) einfügen
IF NOT EXISTS(SELECT
kArtikelAttribut
FROM
tArtikelAttribut
WHERE kShop =
@Kshop
AND kArtikel = @kArtikel
AND kAttribut = @kAttribut)
BEGIN
INSERT INTO tArtikelAttribut (kArtikel, kAttribut, kShop) VALUES (@kArtikel, @kAttribut,
@Kshop)
END
-- Datensatz in die zweite Tabelle (tArtikelAttributSpache) einfügen
INSERT INTO tArtikelAttributSprache (kArtikelAttribut, kSprache, cWertVarchar) VALUES ((SELECT kArtikelAttribut FROM tArtikelAttribut WHERE kShop =
@Kshop AND kArtikel = @kArtikel AND kAttribut = @kAttribut), @kSprache, @value)
END
GO
EXEC CustomWorkflows._CheckAction 'AttributShopWertSetzen'
GO
EXEC CustomWorkflows._SetActionDisplayName 'AttributShopWertSetzen', 'Attributwert für Shop setzen'
GO
Scriptende
https://support.t4dt.com/hc/de/arti...ttribute-für-Shops-per-Workflow-setzen-ab-1-6
Hinweise:
- Attribut-Wert kann beliebig gewählt oder per dotliquid gesetzt werden zB: Artikel-EigeneFelder-PLU
- 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 zB bei PLU
- kAttribut wird am leichtesten aus der Tabelle dbo.tAttributSprache ermittelt, da dort der jeweilige Attributname steht.
LG
Bernd