Neu Workflow erst auslösen, wenn alle Positionen verschickt sind

Kehrzeit

Aktives Mitglied
7. Januar 2021
27
5
Liebe JTLer

bei uns kommt es oft vor, dass die Positionen einer Bestellung an unterschiedlichen Tagen verschickt werden ( Fullfillment / Dropshipping).

Ich möchte den Workflow RECHNUNG ERSTELLEN erst laufen lassen, wenn alles verschickt wurde.

Zuerst habe ich ihn unter VERSAND > LIEFERSCHEINE > VERSENDET platziert. Dort wurde er aber bereits beim ersten Lieferschein ausgeführt.

Dann habe ich den Workflow hierhin verlegt:
AUFTRÄGE > AUFTRAG > AUSGELIEFERT

Dort wird er aber bereits ausgelöst, wenn der Versandauftrag via FFN an unseren Fulfiller übertragen wird.

Kann mir jemand helfen, wo ich den Workflow ansiedeln muss, damit er erst ausgeführt wird, wenn alle Positionen verschickt wurden?

Vielen Dank schon mal für Anregungen!
Daniel
 

wortek

Offizieller Servicepartner
SPBanner
1. Juli 2016
1.536
320
Landsberg am Lech
Ich gehe davon aus dass du den Workflow unter Versand > Lieferschein erstellt angelegt hast, mit Aktion Rechnung erstellen.

Versuche es mal mit der Bedingung "Lieferscheine>Auftrag>IstKomplettAusgeliefert Gleich KomplettAusgeliefert

Durch die Bedingung wird die Rechnung also erst mit dem Lieferschein erstellt, durch den der Auftrag auch komplett als ausgeliefert markiert wird.
 

Dull

Gut bekanntes Mitglied
14. Juli 2014
129
12
Passau
Falls es nicht darum geht, dass der Auftrag komplett ausgeliefert ist, sondern die Aktion (z. B. Rechnung erstellen) erst ausgeführt wird, wenn alle Lieferscheine versendet wurden, dann hilft hier evtl. folgender Code als erweiterte Eigenschaft:

Code:
{% comment %}
Standardmäßig davon ausgehen, dass alle versendet sind.
Wir ändern dies nur auf 'false', wenn wir einen finden, der NICHT versendet ist.
{% endcomment %}
{% assign alle_lieferscheine_versendet = true %}

{% comment %} Prüfen, ob überhaupt Lieferscheine vorhanden sind {% endcomment %}
{% if Vorgang.Lieferscheine.Anzahl > 0 %}
    {% comment %} Gehe jeden Lieferschein durch {% endcomment %}
    {% for lieferschein in Vorgang.Lieferscheine %}
        {% comment %} Wenn dieser EINE Lieferschein NICHT versendet ist... {% endcomment %}
        {% unless lieferschein.Versendet %}
            {% comment %} ...dann ist die Gesamtbedingung ('alle versendet') falsch. {% endcomment %}
            {% assign alle_lieferscheine_versendet = false %}
            {% comment %} Wir könnten hier theoretisch aufhören, aber Liquid hat kein 'break'.
                 Das Flag auf false zu setzen reicht aus. {% endcomment %}
        {% endunless %}
    {% endfor %}
{% else %}
    {% comment %}
    Keine Lieferscheine vorhanden.
    In diesem Fall ist die Bedingung "alle sind versendet" technisch erfüllt (leere Menge).
    Falls keine Lieferscheine 'false' bedeuten sollen, ändern Sie den Wert unten auf 'false'.
    {% endcomment %}
    {% assign alle_lieferscheine_versendet = true%}
{% endif %}

{% comment %} Gib das finale Ergebnis aus {% endcomment %}
{{ alle_lieferscheine_versendet }}
 

Ähnliche Themen