Problem
Ihr möchtet eure Refurbished-Produkte über eBay oder Webshop weiter verkaufen und gleichzeitig die unterschiedlichen Zustände der Retouren im JTL erfassen. Aufgrund der gesetzlichen Maßgaben (insbesondere durch die Änderungen vom 01.01.2022), müssen die unterschiedlichen Defekte am Artikel auch einzeln erfasst und dokumentiert werden. Das ist über die JTL hauseigene Zustandsverwaltung nicht abbildbar. Der bisherige Workaround immer eigenständige Artikel neu anzulegen stört massiv den Ablauf. Darüber hinaus geht dadurch auch die Verbindung zum Hauptartikel verloren, was weitere erhebliche Nachteile mit sich bringt.
Lösung
Besser wäre es, wenn man die Artikel in einen individualisierten Zustand zwingen könnte. Dadurch bleiben sie zwar als Zustandsartikel am Master, bekommen aber immer und grundsätzlich eine eigene Lagerhaltungsnummer und können somit abweichende Artikeldaten und Bilder erhalten, welche den konkreten Mangel dokumentieren:
Vorgehensweise
1. Schritt - Individuellen Zustand anlegen
Im ersten Schritt legt ihr, neben all den anderen genutzten Artikelzuständen noch einen weiteren an. Diesen könnt ihr bezeichnen, wie ihr möchtet. Das ist euer Sammel-Zustand für individuelle Artikelzustände. Wichtig ist:
- Der Artikelnummer-Suffix lautet exakt: #individual#
- Der Artikel wird mit eigenem Bestand geführt. Das trifft ebenso und vor Allem auf die Zustände zu, die individualisiert werden sollen.
- Der Zustand wird auf Warengruppen beschränkt. Dabei darf allerdings keine Warengruppe ausgewählt werden. Das hat den Hintergrund, dass so der Zustand selbst niemals manuell auswählbar ist, sondern nur automatisch gesetzt werden kann.
2. Schritt - Workflow-Aktion anlegen
Im SQL Managementstudio führt ihr den nachstehenden SQL-Code aus. Bitte achtet darauf, dass ihr den Code in der richtigen Datenbank ausführt. Eine halbwegs aktuelle Wawi 1.6 ist dafür zwingend erforderlich.
--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 = 'spZustandAufIndividuellSetzen')
DROP PROCEDURE CustomWorkflows.spZustandAufIndividuellSetzen
GO
CREATE PROCEDURE CustomWorkflows.spZustandAufIndividuellSetzen @kArtikel INT 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 @kZustand INT = (SELECT TOP 1 kZustand FROM dbo.tZustand z WHERE z.cSuffix = '#individual#')
DECLARE @count int = (SELECT COUNT(*) FROM dbo.tArtikel ta
JOIN dbo.tArtikelZustand z ON z.kZustandArtikel = ta.kArtikel
JOIN dbo.tArtikelZustand z2 ON z.kHauptartikel = z2.kHauptartikel
JOIN dbo.tARtikel ta2 ON ta2.kArtikel = z2.kZustandArtikel
WHERE ta2.kArtikel = @kArtikel
AND ta.kZustand = @kZustand)
UPDATE art SET
cArtNr = cArtNr+FORMAT(@count+1,'N0'),
kZustand = @kZustand
FROM dbo.tArtikel art WHERE
art.kArtikel = @kArtikel
END
GO
EXEC CustomWorkflows._CheckAction 'spZustandAufIndividuellSetzen'
GO
EXEC CustomWorkflows._SetActionDisplayName 'spZustandAufIndividuellSetzen', 'Artikel-Zustand auf individuell setzen'
GO
3. Schritt - Aktion automatisch ausführen
Im Anschluss legen wir einen Workflow an, der immer, wenn ein neuer Zustandsartikel angelegt wird (das Kriterium kann bei Bedarf hier auch noch enger gefasst werden), den Artikel ad hoc in den individualisierten Zustand verschiebt. Dazu wird als Aktion die in Schritt 2 angelegte Aktion, wie im Bild gezeigt, ausgeführt:
Resultat & Funktionsweise
Wie gewünscht, erhält jeder Zustands-Artikel sofort und unmittelbar den Zustand "individuell". Da dieser von JTL nicht selbst vergeben wird (wir haben ihn ja über die Warengruppe ausgeschlossen), kann der Zustand individuell nur durch unseren Workflow genutzt werden. Da JTL selbst nicht damit rechnet, dass alle Zustandsartikel sofort verschoben werden, ist der eigentliche Zustand immer leer und JTL legt immer wieder einen neuen Zustandsartikel an. Die Zustandsartikel im Zustand individuell bleiben somit jeweils einzeln erhalten. Damit es dabei nicht zu Kollisionen kommt, bekommen die individualisierten Zustandsartikeln einen aufsteigenden Suffix.
Der ursprüngliche Suffix bleibt dabei erhalten. Nutzt ihr also je Zustand einen eigenen Suffix, könnt ihr anhand des Suffixes den ursprünglichen Zustand sehen.
Weitere Möglichkeiten
Darüber hinaus ist es, für die Profis unter euch, auch noch möglich je genutztem Artikelzustand einen individualisierten Zustand zu vergeben. Also beispielsweise #defekt-individual#. Indem man dann das SQL bedarfsgerecht anpasst, können dann alle Artikel immer auch einen referenzierten individuellen Unterzustand erhalten, wodurch dann die Artikelzustände auch noch diffizil getrennt würden.
Dieser Prozess ließe sich auch noch weiter ergänzen, indem fehlende Unterzustände automatisch erzeugt würden u.v.m.
Eurer Kreativität sind hier keinerlei Grenzen gesetzt.
Disclaimer & Sonstiger wichtiger Hinweis
Alle gezeigten Schritte sind bei uns im Labor getestet und erprobt. Wir übernehmen keinerlei Verantwortung dafür, dass das genannte Verhalten auch eins zu eins in eurer Test- oder Live-Umgebung zu beobachten ist. Darüber hinaus ist es natürlich eure zentrale Verantwortung vor etwaigen Tests grundsätzlich und immer sicherzustellen, dass ein geeignetes und zeitnahes Backup vorliegt.
Wir stellen die Funktion unentgeltlich zur Verfügung und untersagen hiermit explizit:
- Das Weglassen, Herauslöschen oder Verändern unseres Copyright-Textes
- Den entgeltlichen Weiterverkauf
- Die Nutzung durch Servicepartner ohne expliziten Quellenhinweis
- Das Ausgeben des Konzeptes oder Teile des Konzeptes als eigene Ideen
- Die Nutzung im Live-Betrieb in einer Umgebung, die nicht hinreichend durch Backups geschützt ist
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.