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

Rico Giesler

Offizieller Servicepartner
SPBanner
10. Mai 2017
13.243
1.508
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.829
525
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
6.675
1.606
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.189
180
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.189
180
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.829
525
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 Workflow - Stücklisten im Auftrag abfragen und korrekt in einer Mail auflisten User helfen Usern - Fragen zu JTL-Wawi 0
Workflow = Gewinn unter 30 % vom netto = per Mail informiert JTL-Wawi 1.6 3
Verwiesen an Support BUG: Mahnlauf über Workflow ignoriert Zahlungsziel JTL-Workflows - Fehler und Bugs 3
Neu Wie gebrauchte Waren bei Ebay einstellen? Workflow User helfen Usern - Fragen zu JTL-Wawi 0
Neu Workflow - Mobile App Neukunden identifizieren User helfen Usern - Fragen zu JTL-Wawi 1
Neu Workflow - Stücklistenartikel abfragen User helfen Usern - Fragen zu JTL-Wawi 2
Neu Workflow - Positionen an Dropshipping-Lieferant mailen. Warum funktioniert dieser Code nicht? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Workflow bei Login in WMS / WAWI starten User helfen Usern - Fragen zu JTL-Wawi 10
Neu Workflow - als Bedingung Standard-Dropshipping-Lieferantenname prüfen Gelöste Themen in diesem Bereich 5
Nach Aufruf von Stored Procedure 'Kunde.spKundeUpdate' schwere Fehler in JTL (z.B. Kundenliste, Workflow-Editor) JTL-Wawi 1.8 2
Neu Feldname für Workflow herausfinden User helfen Usern - Fragen zu JTL-Wawi 4
Workflow - internationaler Auftrag -> Artikelname aus Stammdaten JTL-Wawi 1.7 1
JTL Mahnwesen Workflow- Email nach 30 Tagen noch nicht bezahlt. JTL-Wawi 1.8 2
Neu Workflow der bei Stücklisten: Überverkäufe de-/aktivieren User helfen Usern - Fragen zu JTL-Wawi 11
Neu Workflow Aktion E-Mail senden kann nicht Plain und HTML Email zusammen versenden Arbeitsabläufe in JTL-Wawi 6
Workflow Manuell HTML Request wie Server Antwort verarbeiten JTL-Wawi 1.7 0
Workflow Marktplätze - Otto, Kaufland, etc. JTL-Wawi 1.6 0
Workflow Artikel + Anzahl in Einkaufsliste aktualisieren JTL-Wawi 1.8 0
Neu Workflow Web-Request Post für mollie Arbeitsabläufe in JTL-Wawi 6
Workflow MwSt.-Sätze ersetzen 0% -> 19% ändert netto in Positionen aber nicht in der Auftragssumme JTL-Wawi 1.7 2
Neu API Integration via Workflow Arbeitsabläufe in JTL-Wawi 10
In Diskussion Automatische Zuweisung der Kategorien für Artikel durch Workflow JTL-Workflows - Ideen, Lob und Kritik 3
In Bearbeitung Workflow offene Aufträge zusammenfassen bei ausgelieferten JTL-Workflows - Ideen, Lob und Kritik 1
Neu Workflow-Auswahl ... mit ins Kontext-Menü aufnehmen (rechten Maustaste) JTL-Wawi - Ideen, Lob und Kritik 2
Neu Benachrichtigung per Workflow bei Wareneingang User helfen Usern - Fragen zu JTL-Wawi 24
Workflow für Artikel versandklassen JTL-Wawi 1.7 1
Gelöst Per Workflow im Servicedesk eine Mail versenden. Gelöste Themen in diesem Bereich 4
Workflow für Versandart Wenn/Und JTL-Wawi 1.7 0
Workflow für Amazon Zahlart erstellen JTL-Wawi 1.7 0
In Diskussion Workflow von Stornobelege Rechnung JTL-Workflows - Ideen, Lob und Kritik 1
Workflow Auftraqspositionen per Email an Kunden senden JTL-Wawi 1.7 3
Gelöst Servicedesk Workflow Datei erstellen um einen Auftrag zu ändern Gelöste Themen in diesem Bereich 1
Neu Workflow mit Freipositionen in Email Gelöste Themen in diesem Bereich 3
Neu Workflow > Rechnungen > Label Setzen ? (1.8.11) User helfen Usern - Fragen zu JTL-Wawi 6
Neu Workflow Ereignis auslösen wenn alle Bedingungen erfüllt sind. Sonst anderes Ereignis auslösen. JTL-Wawi - Ideen, Lob und Kritik 0
Beantwortet Kunde von Firma per Workflow setzen JTL-Workflows - Ideen, Lob und Kritik 1
Neu Workflow für Rechnung gesucht Arbeitsabläufe in JTL-Wawi 1
Workflow - Debitorennummer JTL-Wawi 1.8 2
In Diskussion Workflow - Artikelmerkmale setzen? JTL-Workflows - Ideen, Lob und Kritik 2
Workflow: Mahnungen - Fehler JTL-Wawi 1.8 5
Neu Workflow Lieferantenartikel-Nummer vor Artikelname setzen JTL-Wawi 1.7 1
In Diskussion Workflow wenn offene Rechnungen, dann weitere offene Aufträge sperren und im Kundensatz Sperrung setzten. JTL-Workflows - Ideen, Lob und Kritik 0
Workflow für Kaufland greift nicht mehr 1.8.11.0 kaufland.de - Anbindung (SCX) 5
[JTL-WAWI API] - Trigger Sales Order Workflow Event JTL-Wawi 1.8 3
Workflow-Bug: 1.8.11 Attribute in Workflow setzen JTL-Wawi 1.8 10
In Diskussion Workflow, Wert setzen aus Zwischenablage/Clipboard JTL-Workflows - Ideen, Lob und Kritik 0
Neu EK-Preise per Workflow in Lieferantenbestellung einfügen? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Workflow Rechnungsvorlage ändern klappt nicht - Wawi 1.7.13.1 User helfen Usern - Fragen zu JTL-Wawi 0
Neu per Workflow: WhatsApp oder ähnliches senden User helfen Usern - Fragen zu JTL-Wawi 0
Workflow Bug: Rechnungskorrektur erstellen aus Retoure JTL-Wawi 1.8 4

Ähnliche Themen