Workflow: Artikel geändert -> bat-script ausführen

Mojo78

Aktives Mitglied
6. März 2012
92
8
Hi Leute,
Ich versuche in JTLWawi 1.11.4 ein Script auszuführen, sobald ein Artikel angelegt wurde.
Die Datenbank und der Worker laufen auf einem Server, die Clients greifen über das Netz auf den Server zu. Ich habe nun auf dem Server
  • ein batch file mit einem SQL-Befehl geschrieben. Inhalt:
    sqlcmd -S WINSRV19\JTLWAWI -d Mandant_1 -U sa -P 123456 -Q "UPDATE tArtikelSonderpreis SET dEnde = NULL WHERE dEnde IS NOT NULL AND nIstDatum = 0;".
    Das batchfile Funktioniert auch wie erwartet...
  • einen workflow angelegt
  • "Artikel geändert"
  • in "Ausführen" das Script hinterlegt: " C:\Users\Administrator\Desktop\JTLWawiScripts\jtl-sonderpreise-fix-sql.bat"
Dann am Client getestet, indem ich einen Artikel geändert habe. Das Script wird nicht ausgeführt, es passiert einfach nichts. Worker ist aktiv, Workflows auch.
Wenn ich den Workflow am Client anlege, das script am Client liegen habe und referenziere funktiont das jedoch.

Woran könnte das liegen? Was mache ich da falsch?

Falls Ihr euch wunder wozu das alles: Es geht um diesen Bug, der mir seit vielen Monaten das Leben schwer macht:
https://issues.jtl-software.de/issues/WAWI-83894
JTL erweckt auch nicht den Anschein, als würde der kurzfristig gefixt - dabei halte ich "Sonderpreise" wirklich für eine Kernfunktionalität einer WaWi 🙁.

Bye, Jörg

wf.jpg
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.708
2.734
Berlin
Firma
css-umsetzung
Ich habe das für einen meiner Kunden anders geregelt, da es den Anschein hat, dass dieser Fehler nie behoben wird.

im Shop /includes/src/dbeS/Sync/Products.php habe ich die Funktion addPrices modifiziert.

aus

PHP:
        if (
            isset($xml['tartikel']['tartikelsonderpreis']['dEnde'])
            && $xml['tartikel']['tartikelsonderpreis']['dEnde'] === ''
        ) {
            $xml['tartikel']['tartikelsonderpreis']['dEnde'] = '_DBNULL_';
        }

habe ich

PHP:
        if (
            isset($xml['tartikel']['tartikelsonderpreis']['dEnde'])
            && (
                $xml['tartikel']['tartikelsonderpreis']['dEnde'] === ''
                || strtotime($xml['tartikel']['tartikelsonderpreis']['dEnde']) < time()
                )


        ) {
            $xml['tartikel']['tartikelsonderpreis']['dEnde'] = '_DBNULL_';
        }

gemacht.

So wird bei einer Artikeländerung, der Sonderpreis zurückgesetzt, wenn das Datum in der Vergangenheit liegt.
Eine Aktualisierung nur über die Preisänderung ist nicht ausreichend.
 
  • Gefällt mir
Reaktionen: Mojo78

Mojo78

Aktives Mitglied
6. März 2012
92
8
Danke, für die Antwort und Deine Lösung.

Ich habe mein Script oben mittlerweile ans Laufen gebracht, das Problem war das Verzeichnis. Ich habe das Script in ein Verzeichnis gelegt, dass ich in der root erstellt habe - dann lief und läuft es wie erwartet.

Ich habe auch hierrüber nachgedacht: "So wird bei einer Artikeländerung, der Sonderpreis zurückgesetzt, wenn das Datum in der Vergangenheit liegt. Eine Aktualisierung nur über die Preisänderung ist nicht ausreichend. "

Ich sehe eigentlich garnicht, warum der Sonderpreis = null gesetzt werden muss, wenn das Ablaufdatum in der Vergangenheit liegt... Oben die Lösung hab ich vor einigen Tagen implementiert, bei uns sind noch keine weiteren Fehler / Probleme aufgefallen. Wenn das Datum in der Vergangenheit liegt zeigt JTLShop auch einfach keinen Hinweis mehr auf die abgelaufene Aktion an (wie erwartet), zumindest bei mir.

Bye, Jörg
 

Ähnliche Themen