dynamische Lieferanten-Lieferzeiten

dynamische Lieferanten-Lieferzeiten, was soll das sein?

in meinem Onlineshop myMoments24.de kann man unter anderem Leinöl kaufen. Leinöl ist eine super cooles und äußerst gesundes Produkt, insbesondere das kaltgepresste ungefilterte mit Schwebstoffen der Leinsaat. Das aber nur nebenbei, hier geht es ja um variable Lieferanten-Lieferzeiten. :)

Also die Leinölprodukte beziehe ich immer direkt frisch vom Hersteller und der liefert immer Dienstags. Ich kann bis Montag 14 Uhr immer für den darauffolgenden Dienstag bestellen und dann kommt das eben an Diesem. Wer das gleiche Problem hat, wie ich es hatte, erkennt sicher schon, worauf ich hinaus will, oder?!

Meine Artikel habe ich so eingestellt, dass sie die Lieferantenlieferzeit immer direkt vom Lieferanten beziehen. (Muss für den Workaround auch so sein!) Die Lieferzeit, die beim Lieferanten aktuell hinterlegt werden kann, ist ja fix, bei mir also max. 8 Tage (Montag nach 14 Uhr bis Dienstag der Folgewoche). Kommt ein Kunde also Montag vor 14 Uhr in den Shop ist die Lieferzeit 1 Tag, kommt er nach 14 Uhr ist sie 8 Tage. Kommt er Dienstag sind es 7 Tage und Mittwoch nur noch 6 usw.. Nun muss man eigentlich jeden Morgen und Montags nach 14 Uhr beim Lieferanten die Lieferzeit anpassen. Blöd das immer machen zu müssen und vor allem immer dran zu denken!

Als JTL Auskenner ist das für mich natürlich keine Lösung - obwohl ich mich da aus Zeitgründen monatelang damit gequält habe. Dazu habe ich auch im JTL Forum schonmal etwas geschrieben und das auch als Idee eingereicht (gerne abstimmen ;)).

Eine Lösung mit Workflows konnte ich leider nicht finden. Leider hängen Workflows ja immer nur an bestimmten Ereignissen, ein bloßes Timing als Ereignis fehlt leider, vielleicht reicht JTL sowas noch nach, um Zeitgesteuert bestimmte Aktionen zu starten. Aktuell geht das leider nicht.

Nunja, die Lösung liegt hier - vorerst - in einem Batch-Script, ausgeführt über die Aufgabenplanung. Das Script wird täglich ausgeführt, prüft, was für ein Tag "heute" ist und stellt die Lieferzeit des Lieferanten entsprechend Liefertag und Bestellfrist um. Berücksichtigt wird auch, wenn zwischen Bestellfrist und Liefertag ein paar Tage dazwischen liegen. Beispiel: Lieferung am Montag bei Bestellung bis Freitag 16 Uhr oder so...

Was ist zu tun?

 

  1. Script für dynamische Lieferzeiten downloaden 
     
  2. Zip am Ort Eurer Wahl auf dem Server entpacken
     
  3. Die Datei "batch.bat" "bearbeiten"
     
  4. Dort im Bereich "Einstellungen" folgende Werte anpassen (WICHTIG: keine Leerzeichen irgendwo einbauen, wo keine hingehören):
    • server -> Ort Eures Servers (bekommt Ihr aus der Datenbankverwaltung)
    • datenbank -> die Datenbank des entsprechenden Mandanten (bekommt Ihr aus der Datenbankverwaltung)
    • benutzername -> Euer Benutzername für die Datenbank (Standard ist wie bekannt: "sa")
    • passwort -> Euer Passwort für die Datenbank (Standard ist wie bekannt: "sa04jT14")
    • sql -> kompletter Pfad zur Datei script.sql (je nach dem, wo Ihr das Archiv entpackt habt)
    • liefertag -> Tag an dem Euer Lieferant liefert (Achtung: numerischer Wert des Wochentages: 0 = Sonntag, 1 = Montag, 2 = Dienstag usw.)
    • bestelltag -> Tag an dem Ihr beim Lieferanten bestellt haben müsst, damit es am nächsten Liefertag kommt (auch numerisch)
    • bestalltagDeadline -> Uhrzeit am Bestelltag bis zu der bestellt sein muss
       
  5. Wenn Ihr das eingerichtet habt könnt Ihr das Ganze einmal testen: dazu in Windows die Eingabeaufforderung (cmd.exe) ausführen (kann man suchen, wenn man auf "Start" bzw. das Windows Symbol unten links geht.
    • Dort den ganzen Pfad zur "batch.bat" angeben und danach mit einem Leerzeichen getrennt den Namen des Lieferanten (wie in der WaWi angelegt) in Anführungszeichen eingeschlossen
      Beispiel: D:\JTL-Scripte\Lieferzeit\batch.bat "Name des Lieferanten"
    • Als Ergebnis bekommt Ihr eine Ausgabe wie diese:

       dynmaische Lieferzeiten JTL Shop
       
  6. Wenn das so läuft, dann in der WaWi das Ergebnis kontrollieren (vielleicht vorab etwas Falsches eintragen um zu sehen, ob es dann korrigiert wurde)
     
  7. Sofern alles korrekt ist, den Aufgabenplaner starten und eine neue Aufgabe mit folgenden Einstellungen anlegen (die Einstellungen könnt Ihr nach Euren Bedürfnissen auch anders wählen)
    • Bei Allgemein nur einen Namen vergeben, sonst alles so lassen. Bei Bedingungen auch alles so lassen.

      Dynamische Lieferantenlieferzeiten für JTL Shop - Trigger
       

    • Dynamische Lieferantenlieferzeiten für JTL Shop - Aktion

    • Dynamische Lieferantenlieferzeiten für JTL Shop - Einstellungen
       

So, das sollte es sein und Ihr habt Eure Lieferanten-Lieferzeit für einen Lieferanten dynamisiert. Glückwunsch zu mehr Freizeit und weniger "drandenkenmüssen"!

Ihr könnt den ganzen Script Ordner nach belieben kopieren, dann in der batch.bat "liefertag", "bestelltag" und "bestelltagDeadline" anpassen und eine neue Aufgabe mit dem anderen Lieferantennamen als Argument anlegen. So könnt Ihr das für beliebig viele Lieferanten machen. Oder - wer die Skills hat - kann die genannten Variablen auch parametrisieren und diese über die Aufgabenaktion als Argument mit übergeben. Dann muss man das Script nicht x mal kopieren, sondern nur die Aufgabe und diese anpassen...

*** feel free to share ***

Was gesagt werden muss, muss gesagt werden...

Wenn Dir der Workaround hilft, freue ich mich über Feedback, Du kannst auch gerne eines meiner JTL Shop Plugins kaufen ;)

Das Ganze kostet Dich nichts, daher kein Support, keine Haftung, kein gar nichts... ;) Nutzung also auf eigene Gefahr. Wenn du Dir unsicher bist, prüfe auf einem Testsystem, nicht in der Live-WaWi! Für Anregungen bin ich natürlich offen...