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

Rico Giesler

Offizieller Servicepartner
SPBanner
10. Mai 2017
13.244
1.517
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.863
534
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.405
2.033
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.220
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.220
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.863
534
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 Servicepartner für Workflow gesucht Dienstleistung, Jobs und Ähnliches 3
Neu Workflow für fehlerhafte Retouren User helfen Usern - Fragen zu JTL-Wawi 0
In Diskussion Wie lässt sich ein Freiposition im Auftrag per Workflow löschen? JTL-Workflows - Fehler und Bugs 4
Neu Workflow : Bei Artikel die ein Erscheinungsdatum haben Denn Auftrag Farblich markieren Arbeitsabläufe in JTL-Wawi 7
In Diskussion Workflow für die Abfrage des noch offenen Kreditlimits JTL-Workflows - Ideen, Lob und Kritik 2
Neu Erheblich Workflow Probleme nach Update auf 1.9 User helfen Usern - Fragen zu JTL-Wawi 5
In Diskussion Workflow für fehlgeschlagenen Versanddatenexport Adressfehler beheben JTL-Workflows - Fehler und Bugs 5
In Diskussion JTL Wawi Workflow: Automatische Etikettenerstellung und E-Mail-Versand JTL-Workflows - Ideen, Lob und Kritik 9
In Diskussion Workflow "Auf Pickliste setzen" ohne gleich einen Lieferschein zu genereieren? JTL-Workflows - Fehler und Bugs 1
Neu Lieferschein per Workflow o.ä. von "offen" auf "Versendet" setzen bei bestimmter Versandart User helfen Usern - Fragen zu JTL-Wawi 7
In Diskussion Syntax für For-Schleife? For-Schleife im Workflow gibt Syntaxfehler aus ... JTL-Workflows - Fehler und Bugs 13
Neu Track and Trace DHL im Ausland ( z.B. Österreich ) - Workflow startet nicht User helfen Usern - Fragen zu JTL-Wawi 1
Gelöst Workflow Auftrag mit Positionsabfrage geht nicht, wegen Textposition für den Versand JTL-Workflows - Ideen, Lob und Kritik 1
Neu Workflow Überverkäufe nach Bestandsbuchung automatisch deaktivieren? User helfen Usern - Fragen zu JTL-Wawi 1
In Diskussion Versandbestätigung per Workflow versenden JTL-Workflows - Fehler und Bugs 1
Neu JTL-WAWI API] - Trigger Sales Order Workflow Event - X-RunAs wird ignoriert JTL-Wawi - Fehler und Bugs 0
In Diskussion Manueller Workflow Regex JTL-Workflows - Ideen, Lob und Kritik 4
Beantwortet Workflow funktioniert bei Unicorn 2 Bestellungen nicht JTL-Workflows - Fehler und Bugs 3
In Diskussion Workflow Rechnung Email Wochenende JTL-Workflows - Fehler und Bugs 3
In Diskussion Workflow - Lagerbestand auf Lager X = 0, dann setzte 5 Tage Lieferzeit JTL-Workflows - Ideen, Lob und Kritik 4
Beantwortet Doppelte Versandpositionen per Workflow entfernen JTL-Workflows - Fehler und Bugs 4
Neu Amazon & Schweiz ab 01.01.25: Rechnungslegung ja oder nein? Workflow? User helfen Usern - Fragen zu JTL-Wawi 3
Neu ausgehende XRechnung speichern - workflow User helfen Usern - Fragen zu JTL-Wawi 5
Neu Workflow: Auftragsfarbe bei Fehlbestand ändern User helfen Usern - Fragen zu JTL-Wawi 1
SQL Abfrage bei Workflow Datei Schreibn JTL-Wawi 1.9 1
1.9.5.4 und Shop 5.3.3 fehlende Beschreibung im Shop durch Workflow, bin genervt JTL-Wawi 1.9 2
In Diskussion Workflow Beschaffung - gelöscht JTL-Workflows - Ideen, Lob und Kritik 2
Neu Kunden UST Feld mit Workflow befüllen User helfen Usern - Fragen zu JTL-Wawi 5
Neu JTL Worker führt den Workflow nicht aus User helfen Usern - Fragen zu JTL-Wawi 0
In Diskussion Workflow testen, teilweise unmöglich aktuelles Beispiel zu wählen JTL-Workflows - Fehler und Bugs 11
Beantwortet Workflow manuell Preisreduzierung 10% JTL-Workflows - Ideen, Lob und Kritik 4
In Diskussion Workflow Benachrichtigung wenn 80% vom Anfangsbestand verkauft wurde JTL-Workflows - Ideen, Lob und Kritik 7
Neu Custom Workflow: Zuordnung einer Verantwortlichen Person zu Artikeln User helfen Usern - Fragen zu JTL-Wawi 3
Neu Vorauss. Lieferdatum = Heute in Workflow abfragen? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Workflow Email versenden wenn Durchnittseinkaufspreis sich verändert hat JTL-Workflows - Ideen, Lob und Kritik 1
Neu Workflow o.Ä. gesucht für Versanddatenimport Arbeitsabläufe in JTL-Wawi 3
In Diskussion Automatische Workflow laufen nicht JTL-Workflows - Fehler und Bugs 4
In Diskussion In Workflow auf Views zugreifen JTL-Workflows - Ideen, Lob und Kritik 4
Neu Workflow für Otto.de Bestellungen über Amazon MCF Otto.de - Anbindung (SCX) 0
In Diskussion Workflow soll nur Montags bis Freitags greifen JTL-Workflows - Ideen, Lob und Kritik 12
Neu Workflow: Adresse - Strasse kürzen ( ab Wert "OT" ) User helfen Usern - Fragen zu JTL-Wawi 6
Workflow FollowUP Angebot JTL-Wawi - Ideen, Lob und Kritik 1

Ähnliche Themen