Workflow-Sammelstelle: Teilt eure erfolgreich erstellten Workflows mit anderen JTLern

Rico Giesler

Offizieller Servicepartner
SPBanner
10. Mai 2017
13.244
1.521
Wie Shopsitters richtig schreibt ist es derzeit nur über Umwege möglich.
Wir hatten die Anfrage aber schon ein paar mal und auch auf dem Schirm.
Allerdings müssen da diverse Sachen beachtet und geklärt werden, damit dann auch alles reibungslos laufen kann.
 

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.868
536
Für Leute die nicht so gut mit SQL umgehen können habe ich mal folgenden WF gebaut. Ich meine das die Anweisungen verständlich sind und jeder seine eigenen Parameter eintragen kann.
Das ganze wird noch erweitert auf die Länder (grad in Arbeit) und mehrere verschiedene Artikel wo die höchsten Versandkosten genommen werden (da brauche ich wohl Hilfe).
Aber das Prinzip sollte so klar sein.

Der WF macht folgendes unter "Erweiterten Eigenschaften":
Wenn ein Auftrag erstellt wurde weist der WF die eigenen Versandkosten, mit den eigenen Preisen beim Dienstleister, zu ohne die von der Plattform gesendeten zu überschreiben.
Es wird abgefragt:
1. Welche Warengruppe hat der Auftrag
2. Kommt der Kunde aus Deutschland, der EU (ohne Deutschland), Europa (ohne EU) und Russland.
3. Wie viele gleiche Artikel kauft der Kunde
4. Wie hoch ist der Preis

Mit Punkt 3 bestimme ich z:B. wenn der Kunde mehr als 4 Artikel kauft dann nimm ein Paket statt eines Postbriefes.
Mit Punkt 4 bestimme ich z:B. wenn der Artikel mehr als z.B. 30,00 Euro kostet dann nimm ein Paket statt eines Postbriefes. Oder nimm versicherten Versand.

Am Ende jeder Bedingung (if, elsif) setze ich einen Begriff mit dem ich im Workflow über Versandart ändern, unsere Versandart zuweise.
Das heißt wenn z.B. in der Erweiterten Eigenschaft eine Bedingung zutrifft die z.B. POST145 heißt dann ändere die Versandart auf "Postbrief 1,45 Euro".

Ganz am Ende kommt NIXALL (else) das heißt wenn keine Bedingung zutrifft dann halte den Auftrag zurück und ein Mitarbeiter kann den bearbeiten.

VERSION 2 für kürze Abarbeitungszeiten:
Da ich ja sowie so für jede unsere Versandarten einen WF anlegen muss, habe ich jeweils die Abfrage aufgeteilt, so das nicht mehr alle Möglichkeiten abgefragt werden müssen.

Hier der Beispielcode aus den Erweiterten Eigenschaften:

Code:
{% for Item in Vorgang.AuftragsPositionen.ArtikelPositionen %}\
{% if Vorgang.Lieferung.Lieferadresse.LandISO != 'RU' and Vorgang.Lieferung.Lieferadresse.LandISO != 'DE' %}{% assign landINT = true %}{% endif %}\
{% assign preis=Vorgang.Zahlungen.GesamtbruttopreisOhneVersandart %}\
{% assign menge=Vorgang.AuftragsPositionen.Positionen.ErstesObjekt.Menge %}\
{% assign waren=Item.Artikel.Warengruppe.Name %}\
{% if waren == "Retentionmodul" and landINT =="true" and menge == 1 %}GB370
    {% elsif waren == "SLI-Brücke" and landINT =="true" and menge == 1 %}GB370
    {% elsif waren == "Zubehör Sets" and landINT =="true" and menge == 1 %}GB370
    {% elsif waren == "Kabel / Adapter" and landDE =="true" and menge == 1 %}GB370
{% endif %}
{% endfor %}




Hier der Beispielcode aus den Erweiterten Eigenschaften:
Code:
{% if Vorgang.AuftragsPositionen.ArtikelPositionen.Anzahl == 1 %}
{% for Item in Vorgang.AuftragsPositionen.ArtikelPositionen %}
    {% if Vorgang.Lieferung.Lieferadresse.LandISO == 'DE' %}{% assign landDE = true %}{% endif %}
    {% if Vorgang.Lieferung.Lieferadresse.Land.IstEU == 'true' and Vorgang.Lieferung.Lieferadresse.LandISO != 'DE' %}{% assign landEU = true %}{% endif %}
    {% if Vorgang.Lieferung.Lieferadresse.Land.Kontinent == 'Europa' and Vorgang.Lieferung.Lieferadresse.LandISO != 'DE' %}{% assign landEU_NONEU = true %}{% endif %}
    {% if Vorgang.Lieferung.Lieferadresse.Land.Kontinent == 'Europa' and Vorgang.Lieferung.Lieferadresse.Land.IstEU != 'true' %}{% assign landNONEU = true %}{% endif %}
    {% if Vorgang.Lieferung.Lieferadresse.LandISO == 'RU' %}{% assign landRU = true %}{% endif %}    
 
    {% assign preis=Vorgang.Zahlungen.GesamtbruttopreisOhneVersandart %}
    {% assign menge=Vorgang.AuftragsPositionen.Positionen.ErstesObjekt.Menge %}
    {% assign waren=Item.Artikel.Warengruppe.Name %}
    {% assign marke=Vorgang.AuftragsPositionen.Positionen.ErstesObjekt.Marke %}

       {% comment %} Post 1,45 Euro {% endcomment %}
        {% if waren == "MAC" and landDE =="true" and menge == 1 %}POST145
        {% elsif waren == "Arbeitsspeicher (RAM)" and landDE =="true" and menge == 1 and preis <= 30,00 %}POST145
        {% elsif waren == "Controller" and landDE =="true" and menge == 1 and preis <= 30,00 %}POST145
        {% elsif waren == "Prozessor (CPU)" and marke == "Intel" and landDE =="true" and menge == 1 and preis <= 30,00 %}POST145
        {% elsif waren == "Gehäuselüfter" and landDE =="true" and menge == 1 %}POST145
        {% elsif waren == "Kabel / Adapter" and landDE =="true" and menge == 1 %}POST145
        {% elsif waren == "Lüftersteuerung" and landDE =="true" and menge == 1 preis <= 10,00 %}POST145
        {% elsif waren == "Blende" and landEU =="true" and menge == 1 %}POST145
        {% elsif waren == "Zubehör Sets" and landEU =="true" and menge == 1 %}POST145    
        {% elsif waren == "Retentionmodul" and landDE =="true" and menge == 1 %}POST145
        {% elsif waren == "SLI-Brücke" and landDE =="true" and menge == 1 %}POST145
        {% elsif waren == "Soundkarte" and landDE =="true" and menge == 1 and preis <= 20,00 %}POST145
        {% elsif waren == "TV-Karte" and landDE =="true" and menge == 1 and preis <= 20,00 %}POST145

       {% comment %} Post 1,90 Euro {% endcomment %}
        {% elsif waren == "Prozessor (CPU)" and marke != "Intel" and landDE =="true" and menge == 1 and preis <= 30,00 %}POST190
        {% elsif waren == "Blende" and landDE =="true" and menge == 1 %}POST190
        {% elsif waren == "Zubehör Sets" and landDE =="true" and menge == 1 %}POST190    


       {% comment %} Paket 5,00 Euro bis 1kg {% endcomment %}        
        {% elsif waren == "Arbeitsspeicher (RAM)" and landDE =="true" and menge == 1 and preis > 30,00 %}PAKET501
        {% elsif waren == "Bundle" and landDE =="true" menge == 1 %}PAKET501
        {% elsif waren == "Betriebssystem" and landDE =="true" and menge == 1 %}PAKET501
        {% elsif waren == "Controller" and landDE =="true" and menge == 1 and preis > 30,00 %}PAKET501
        {% elsif waren == "CPU-Kühler" and landDE =="true" and menge == 1 %}PAKET501
        {% elsif waren == "Prozessor (CPU)" and landDE =="true" and menge == 1 and preis > 30,00 %}PAKET501
        {% elsif waren == "Tastatur / Maus" and landDE =="true" and menge == 1 %}PAKET501
        {% elsif waren == "Festplatte" and landDE =="true" and menge == 1 %}PAKET501
        {% elsif waren == "Gehäuselüfter" and landDE =="true" and menge > 1 %}PAKET501
        {% elsif waren == "Grafikkarte" and landDE =="true" and menge > 1 %}PAKET501
        {% elsif waren == "Sonstige Kühler" and landDE =="true" and menge == 1 %}PAKET501    
        {% elsif waren == "Laufwerk" and landDE =="true" and menge == 1 %}PAKET501
        {% elsif waren == "Lüftersteuerung" and landDE =="true" and menge == 1 preis > 10,00 %}PAKET501
        {% elsif waren == "Mainboard" and landDE =="true"" and menge == 1 %}PAKET501
        {% elsif waren == "Netzteil" and landDE =="true" and menge == 1 %}PAKET501
        {% elsif waren == "Software" and landDE =="true" and menge == 1 %}PAKET501
        {% elsif waren == "Soundkarte" and landDE =="true" and menge == 1 and preis > 20,00 %}PAKET501
        {% elsif waren == "TV-Karte" and landDE =="true" and menge == 1 and preis > 20,00 %}PAKET501
        {% elsif waren == "CPU-Wasserkühlung" and landDE =="true" and menge == 1 %}PAKET501
         
       {% comment %} Paket 10,00 Euro bis 10kg {% endcomment %}
        {% elsif waren == "Gehäuse" and landDE =="true" and menge == 1 %}PAKET100
        {% elsif waren == "Monitor" and landDE =="true" and menge == 1 %}PAKET100
        {% elsif waren == "PC / Server" and landDE =="true" and menge == 1 %}PAKET100
        {% elsif waren == "Bundle-PC" and landDE =="true" and menge == 1 %}PAKET100
        {% elsif waren == "Komplett-PC´s" and landDE =="true" and menge == 1 %}PAKET100
        {% elsif waren == "Komplett-PC" and landDE =="true" and menge == 1" %}PAKET100
     
        {% else %}NIXALL
        {% endif %}
       
{% endfor %}
{% endif %}

Im Workflow selber kann es dann so aussehen:
WF_Versand.jpg

ACHTUNG: Hier hat JTL einen kleinen Fehler, sobald man Versandart ändern auswählt und man keinen Hacken rechts setzt, meldet JTL einen Fehler.
Das kann man umgehen in dem man einmal einen Hacken setzt und den wieder rausnimmt.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Shopküche.de

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.706
2.165
Berlin
Was besser wäre, wenn du das ganze in einem capture Block machen würdest und so wie ich es gezeigt habe das nach einem if, mit einem assign einer Variable zuzuordnen, die du dann am ende ausgibst.

Du siehst das ganz gut wenn du das anhand eines Aufteages testest, dann gast du haufenweise returns und leerzeichen drin und musst deshalb auch auf enthält prüfen.

Du könntest das auch mit einem \ am Ende umgehen und alle Leerzeichen weglassen aber schöner wäre es mit einem capture Block.
 

elevennerds.de

Sehr aktives Mitglied
23. September 2015
1.225
203
Problem: Bei einem Kunden setzen wir die Versandarten mittels Workflows anhand der Artikelpositionen im Auftrag. Nun kann ja in einem Auftrag jeweils ein Artikel mit Briefversand und einer mit Paketversand enthalten sein. Um so etwas abzufangen, habe ich folgenden Workflow entwickelt. Dieser prüft auf unterschiedliche Versandklassen aller Artikelpositionen eines Auftrages außer Stücklistenkomponenten (dafür die Stückliste selber) und entfernt dann die Versandart. Diese wird dann einfach am Packtisch neu ausgewählt.

Auftrag > Erstellt > Neue Bedingung > Erweiterte Eigenschaften verwalten > Hinzufügen > Code einfügen
Code:
{% capture countquery %}
SELECT COUNT(DISTINCT a.kVersandklasse) FROM dbo.tArtikel AS a \
JOIN dbo.tbestellpos AS bp ON tArtikel_kArtikel = a.kArtikel \
JOIN dbo.tBestellung AS b ON bp.tBestellung_kBestellung = b.kBestellung \
LEFT JOIN dbo.tStueckliste AS s ON s.kStueckliste = a.kStueckliste \
WHERE a.kArtikel NOT IN \
    (SELECT kArtikel FROM dbo.tStueckliste \
    WHERE a.kStueckliste != 0 AND kStueckliste = a.kStueckliste) \
AND b.cBestellNr = '{{ Vorgang.Stammdaten.Auftragsnummer | SqlEscape}}'
{% endcapture -%}
{% assign result = countquery | DirectQueryScalar -%}
{{ result }}

Dieser Snippet gibt die Anzahl unterschiedlicher Versandklassen eines Auftrages zurück. Danach einfach prüfen, ob die zurückgegebene Anzahl größer als 1 ist und die entsprechende Aktion ausführen.

Hier kann natürlich als Aktion auch gleich Paketversand gesetzt werden.
 
Zuletzt bearbeitet:

elevennerds.de

Sehr aktives Mitglied
23. September 2015
1.225
203
Query Update:
Code:
{% capture countquery %}
SELECT COUNT(DISTINCT kVersandklasse) FROM dbo.tArtikel \
WHERE kArtikel IN ( \
    SELECT bp.tArtikel_kArtikel FROM dbo.tbestellpos AS bp \
        JOIN dbo.tBestellung AS b ON bp.tBestellung_kBestellung = b.kBestellung \
        WHERE b.cBestellNr = '{{ Vorgang.Stammdaten.Auftragsnummer | SqlEscape}}' AND bp.kBestellStueckliste = 0 \
    UNION \
    SELECT bp.tArtikel_kArtikel FROM dbo.tbestellpos AS bp \
        JOIN dbo.tBestellung AS b ON bp.tBestellung_kBestellung = b.kBestellung \
        JOIN dbo.tArtikel AS a ON a.kArtikel = bp.tArtikel_kArtikel \
        JOIN dbo.tStueckliste AS s ON s.kStueckliste = a.kStueckliste \
        WHERE b.cBestellNr = '{{ Vorgang.Stammdaten.Auftragsnummer | SqlEscape}}' \
);
{% endcapture -%}
{% assign result = countquery | DirectQueryScalar -%}
{{ result }}
  • Es wird jetzt nur noch die Versandklasse der Stückliste und nicht die der Stücklistenkomponenten in der Auswertung berücksichtigt.
 
  • Gefällt mir
Reaktionen: gnarx und _simone_

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.868
536
Moin, ich habe das nun mal getestet, Rückgabe wert ist 4 (4 Artikel enthalten). Muss ich jetzt als Aktion erstmal die Versandarten löschen, können ja mehrere drinne sein? Und dann eine Versandart setzen als 2. Aktion?
 

JuergenSaenger

Sehr aktives Mitglied
19. August 2013
462
59
Genthin
Query Update:
Code:
{% capture countquery %}
SELECT COUNT(DISTINCT kVersandklasse) FROM dbo.tArtikel \
WHERE kArtikel IN ( \
    SELECT bp.tArtikel_kArtikel FROM dbo.tbestellpos AS bp \
        JOIN dbo.tBestellung AS b ON bp.tBestellung_kBestellung = b.kBestellung \
        WHERE b.cBestellNr = '{{ Vorgang.Stammdaten.Auftragsnummer | SqlEscape}}' AND bp.kBestellStueckliste = 0 \
    UNION \
    SELECT bp.tArtikel_kArtikel FROM dbo.tbestellpos AS bp \
        JOIN dbo.tBestellung AS b ON bp.tBestellung_kBestellung = b.kBestellung \
        JOIN dbo.tArtikel AS a ON a.kArtikel = bp.tArtikel_kArtikel \
        JOIN dbo.tStueckliste AS s ON s.kStueckliste = a.kStueckliste \
        WHERE b.cBestellNr = '{{ Vorgang.Stammdaten.Auftragsnummer | SqlEscape}}' \
);
{% endcapture -%}
{% assign result = countquery | DirectQueryScalar -%}
{{ result }}
  • Es wird jetzt nur noch die Versandklasse der Stückliste und nicht die der Stücklistenkomponenten in der Auswertung berücksichtigt.


Wo kann man sich belesen was es für Befehle gibt?
 

vapish

Aktives Mitglied
11. März 2018
46
2
Damit hier mal wieder etwas aktuelles reinkommt teile ich gerne meine Workflows mit euch:

Automatische Zahlungserinnerung versenden für unbezahlte Aufträge:
https://shopkueche.de/tutorials-jtl...ungserinnerung-ueber-jtl-workflows-versenden/

Viele Grüße,
René

Hallo shopküche.de und alle andere Board-Mitglieder,

ich habe den Workflow bezüglich der Zahlungserinnerung genauso eingerichtet wie es in der Anleitung von shopküche beschrieben ist.

Letztens hatte ich einen Kunden der seine Bestellung storniert, wie es auch im Guide von JTL beschrieben ist.
Der Kunde hat sich gemeldet und gesagt das er trotz Stornierung eine Zahlungserinnerung erhalten hat.
Diese Mail habe ich auch erhalten als CC.

Meine Frage an euch, habt ihr dieses Problem auch gehabt?
Wie konntet Ihr das Lösen?
Hat hierbei einer, einen Lösungsansatz für mich?

Viele Grüße
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Kommentar / Notiz einblenden lassen bei Retoure am WMS? Oder Workflow bei Retoure mit kommentiertem Auftrag? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Workflow löst nicht aus, obwohl alle Bedingungen erfüllt JTL-Workflows - Fehler und Bugs 0
In Diskussion Workflow wird ausgeführt obwohl Bedingung nicht zutrifft. JTL-Workflows - Fehler und Bugs 9
Neu Workflow Auftrag über FFN ausliefern wenn Ware eingelagert JTL-Workflows - Ideen, Lob und Kritik 0
Workflow mit Bedingung Lieferant wird nicht mehr ausgeführt JTL-Wawi 1.9 1
Seit Update 1.10.12.0 – Keine Rechnungserstellung per Workflow bei FBA-Aufträgen JTL-Wawi 1.10 0
Neu Workflow Amazon Versandgruppe ändern User helfen Usern - Fragen zu JTL-Wawi 0
In Diskussion Per Workflow aktuelle Kategorie als Attribut hinterlegen JTL-Workflows - Ideen, Lob und Kritik 5
Neu Workflow lößt bei Track & Trace nicht aus User helfen Usern - Fragen zu JTL-Wawi 1
In Diskussion JTL WAWI + FFN + OrangeConnex Workflow für Versand und Lagerbestand JTL-Workflows - Ideen, Lob und Kritik 0
In Diskussion Workflow kurze Pause per Batch - Fehler "Die Eingabeumleitung wird nicht unterstützt" JTL-Workflows - Ideen, Lob und Kritik 6
In Diskussion Workflow auf Zahlungseingang und Zahlungsweise JTL-Workflows - Ideen, Lob und Kritik 1
In Diskussion Per Workflow Versandart ändern - EK wird nicht korrigiert JTL-Workflows - Ideen, Lob und Kritik 1
In Bearbeitung Workflow funktioniert nicht - Bedingung: Seriennummer JTL-Workflows - Fehler und Bugs 32
Neu Menge von Auftragspositionen per Workflow ändern User helfen Usern - Fragen zu JTL-Wawi 4
In Diskussion Workflow Stücklistenbestandteile ausgeben JTL-Workflows - Ideen, Lob und Kritik 1
Neu Externe Belege per Workflow speichern Amazon-Anbindung - Fehler und Bugs 3
Verwiesen an Support Probleme mit dem Workflow JTL-Workflows - Fehler und Bugs 2
Workflow-Hilfe Zahlungserinnerung nach 3 Werktagen & Storno nach 7 Werktagen ohne Zahlung JTL-Wawi 1.10 7
Neu Zustellzeit EXPRESS Sendungen - als Bedingung für Workflow User helfen Usern - Fragen zu JTL-Wawi 1
Neu Workflow - Ausliefern - Jeden Tag um 04:00 Uhr, außer Sa. User helfen Usern - Fragen zu JTL-Wawi 4
Neu Wie kann es sein, dass ein "Rechnung erstellt" - Workflow 3 Tage später nochmal ausgelöst wird? User helfen Usern - Fragen zu JTL-Wawi 5
In Diskussion Rechnung per mail / Workflow gibt Fehler aus JTL-Workflows - Fehler und Bugs 6
Neu Workflow mehrere Werte setzen Shopify-Connector 2
In Diskussion Workflow für Amazon Tel. Nummern löschen JTL-Workflows - Ideen, Lob und Kritik 3
Neu Lässt sich die Artikelsichtbarkeit pro Kundengruppe per Workflow steuern? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Variabel für "Bearbeiter" im Workflow User helfen Usern - Fragen zu JTL-Wawi 8
Gelöst BUG - Falsches Workflow wird ausgeführt JTL-Workflows - Fehler und Bugs 2
Neu Workflow der die Versandart für den Export zu Amazon nach dem ausliefern über WMS ändert User helfen Usern - Fragen zu JTL-Wawi 3
Gelöst [WAWI-75772] Workflow Erscheinungsdatum Feld leeren deaktiviert Überverkäufe möglich JTL-Workflows - Fehler und Bugs 2
Neu Workflow Artikel Erscheint am Datum überschritten, Bestandsführung aktivieren. User helfen Usern - Fragen zu JTL-Wawi 2

Ähnliche Themen