Hinweis - Aus gegebenem Anlass
Fulfiller, welche die JTL-eigene Funktion "Auftrag ohne Versand abschließen" oder diesen Workflow nutzen, unterbrechen damit den Abgleich zum FFN. Diese Funktion sollte und darf bei Fulfillern also in aller Regel nicht eingesetzt werden. |
Ausgangslage
Ihr möchtet, dass Aufträge per Workflow unter bestimmten Bedingungen immer automatisch abgeschlossen werden.
Unser Ansatz
Wir imitieren per SQL den Weg, den JTL beim "Auftrag ohne Versand abschließen" 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 Aufträge sofort per Workflow abzuschließen 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. IF EXISTS(SELECT 1 FROM sys.procedures WHERE Name = 'spAufOhneVersandAbgeschlossenStellen') DROP PROCEDURE CustomWorkflows.spAufOhneVersandAbgeschlossenStellen GO IF(EXISTS(SELECT 1 FROM sys.types WHERE Name = 'PARAMETER_spAufOhneVersandAbgeschlossen_MitAuftragsdatum')) DROP TYPE CustomWorkflows.PARAMETER_spAufOhneVersandAbgeschlossen_MitAuftragsdatum GO CREATE TYPE CustomWorkflows.PARAMETER_spAufOhneVersandAbgeschlossen_MitAuftragsdatum FROM BIT; GO EXEC CustomWorkflows._SetActionParameterDisplayName @parameterName = 'PARAMETER_spAufOhneVersandAbgeschlossen_MitAuftragsdatum', @displayName = 'Mit heutigem Datum abschließen' GO CREATE PROCEDURE CustomWorkflows.spAufOhneVersandAbgeschlossenStellen @kAuftrag INT, @useOrderData PARAMETER_spAufOhneVersandAbgeschlossen_MitAuftragsdatum 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. UPDATE ta SET ta.nKomplettAusgeliefert = 2, ta.dAuslieferdatum = IIF(@useOrderData = 0,ta.dErstelltWawi,GETDATE()) FROM Verkauf.tAuftrag ta WHERE ta.kAuftrag = @kAuftrag declare @auftrag Verkauf.TYPE_spAuftragEckdatenBerechnen insert into @auftrag values(@kAuftrag) exec Verkauf.spAuftragEckdatenBerechnen @auftrag END GO EXEC CustomWorkflows._CheckAction 'spAufOhneVersandAbgeschlossenStellen' GO EXEC CustomWorkflows._SetActionDisplayName 'spAufOhneVersandAbgeschlossenStellen', 'Auf ohne Versand abgeschlossen stellen' GO
Ihr könnt die angelegte Aktion nun wie gewohnt direkt als Workflowereignis auswählen:
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.