Ausgangslage
Ihr möchtet, dass Aufträge per Workflow unter bestimmten Bedingungen immer eine bestimmte Zahlungart haben. Diese soll aber dynamisch per dotliquid bestimmbar sein.
Die "Wert setzen"-Funktion bietet mir nur statische Werte an und würde meine Workflows mir zu sehr aufblähen.
Unser Ansatz
Wir imitieren per SQL den Weg, den JTL beim "Zahlungsart ändern" geht und setzen in der Wawi die entsprechenden Werte direkt in der Datenbank. Dazu nutzen wir die neue Workflow-Logik von JTL.
Nachteil
Wird nun bei einem Wawi-Update die kritische Stelle verändert, muss das ganze Command ausgetauscht werden. Es lassen sich nicht nur Teile davon ersetzen. Das ist nur mit weitgehendem Detail-Wissen möglich.
Vorteil
Eine versehentliche Änderung ist wesentlich schwieriger. Darüber hinaus, wird das ganze Skript so in der Datenbank gespeichert und an die Client-Wawi übergeben. Jeder einzelne Client kann diesen Workflow somit ausführen und das "sofort", nicht nur zeitversetzt.
Der mit Abstand größte Vorteil jedoch ist die Performance. Einen schnelleren Weg die Zahlungsart massenhaft zu setzen gibt es nicht.
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. CREATE TYPE CustomWorkflows.Parameter_spZahlungsartAendern_ZahlungsartName FROM NVarchar(255); GO EXEC CustomWorkflows._SetActionParameterDisplayName 'Parameter_spZahlungsartAendern_ZahlungsartName', 'Zahlungsart' GO IF EXISTS(SELECT 1 FROM sys.procedures WHERE Name = 'spZahlungsartAendern') DROP PROCEDURE CustomWorkflows.spZahlungsartAendern GO CREATE PROCEDURE CustomWorkflows.spZahlungsartAendern @kAuftrag INT, @cZahlungsart Parameter_spZahlungsartAendern_ZahlungsartName AS BEGIN --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. DECLARE @kZahlungsart INT = (SELECT TOP 1 kZahlungsart FROM dbo.tZahlungsart WHERE cName = @cZahlungsart) UPDATE tb SET kZahlungsart = @kZahlungsart FROM Verkauf.tAuftrag tb WHERE tb.kAuftrag = @kAuftrag END GO EXEC CustomWorkflows._CheckAction 'spZahlungsartAendern' GO EXEC CustomWorkflows._SetActionDisplayName 'spZahlungsartAendern', 'Zahlungsart ändern' GO
Der CustomWorkflow kann nun wie gewohnt asugeführt werden. Der Zahlungsart-Name kann dabei aber per dotliquid dynamisch bestimmt werden:
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.