Gelöst Erweitere Eigenschaft im Workflow - Abfrage von Versandklasse bei mehreren Positionen im Auftrag funktioniert nur bei erstem Objekt

Christian_BD

Sehr aktives Mitglied
7. November 2016
380
69
Hallo zusammen,
ich versuche gerade per erweiterter Eigenschaft im Workflow abzufragen, ob ein Auftrag eine bestimmte Versandklasse enthält und ob der Auftrag eine andere bestimmte Versandklasse nicht enthält.

D.h. es ist ein Auftrag in dem mehrere Positionen enthalten sind, die verschiedene Versandklassen enthalten sind.
Das Ergebnis der erweiterten Eigenschaft(en) bzw. des Workflows muss wie folgt sein:
Auftrag enthält Positionen mit Versandklasse A und enthält keine Positionen mit Versandklasse B => Workflow auslösen
Auftrag enthält Positionen mit Versandklasse A und Positionen mit Versandklasse B => Workflow nicht auslösen

Mein Ansatz im Workflow war:
1599119418235.png

Leider gibt der Workflow bei gemischten Aufträgen immer aus, dass alle Bedingungen korrekt sind. Aus meiner Sicht liegt es daran, dass in den erweiterten Eigenschaften immer die erste Auftragspositionen abgefragt wird, die i.d.R. Versandklasse A ist. Deshalb stimmen beiden Bedingungen zu den Versandklassen - was aber in der Realität falsch ist, da z.B. Position Versandklasse B ist. Die erweitere Eigenschaft erkennt dies aber nicht, da anscheinend in der DB nur das erste Objekt abgefragt wird und ich sehe keine Option eine Schleife über alle Positionen zu ziehen (wie z.B. in den Dot Liquid Editoren für die E-Mailvorlage).

Hier noch die erweiterten Eigenschaften:
1599119681787.png
1599119731982.png

Zuvor habe ich es mit einer "And"-Bedingung in den erweiterten Eigenschaften versucht, d.h. ich habe das in einer Eigenschaft verkettet, aber das hat logischweise auch nicht funktioniert, da nur das erste Objekt abgefragt wird und dann kann nicht Versandklasse A und B haben... :rolleyes:

Ist das ein Fehler, ein fehlendes Feature und bin ich das Problem? ;)

Viele Grüße
Christian
 

Christian_BD

Sehr aktives Mitglied
7. November 2016
380
69
Hier ist die Lösung:
{% for pos in Vorgang.AuftragsPositionen.ArtikelPositionen -%}{% if pos.Artikel.VersandklasseName contains 'A' %}true{% elsif pos.Artikel.VersandklasseName != 'B' %}false{% endif %}{% endfor -%}

Abhängig von der Menge der Positionen gibt die erweiterte Eigenschaft dann aus:
truetruetruefalsetruetruefalse...

Im Workflow heißt die Bedingung dann:
Versandklase=A enthält nicht "false"

Dann funktioniert der Workflow einwandfrei und ich kann mir auch eine Bedingung sparen. :)
 

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.889
545
Darf ich das in meine Tips mit übernehmen? Ich wollte da einen anlegen für nützliche Schleifen und finde es schade wenn solche Tips einfach nicht wieder auffindbar sind.
 
  • Gefällt mir
Reaktionen: DITH-Shop

Ähnliche Themen