Neu Dotliquid if else break

karabey

Sehr aktives Mitglied
28. November 2012
907
74
Hallo,

@kelvin. hat mir geholfen meinen Code entsprechend anzupassen. Für die Priorisierung wollte ich einfach nur {% break %} nach "assign" stellen um bei Fund abzubrechen was aber anscheinend nicht im JTL verfügbar ist. Wie könnte ich die Reihenfolge so umschreiben um von oben nach unten zu nur eine verfügbare Email Adresse auszulesen?

Code:
{% assign mail ='' %}
{% if Vorgang.Auftrag.Kunde.Ansprechpartner.Anzahl > 0 %}
    {% for jtlAnsprechpartner in Vorgang.Kunde.Ansprechpartner %}
        {% if jtlAnsprechpartner.Abteilung == 'Buchhaltung' and jtlAnsprechpartner.EMail != empty %}
            {% assign mail = jtlAnsprechpartner.EMail %}
        {% elsif jtlAnsprechpartner.Abteilung == 'Einkauf' and jtlAnsprechpartner.EMail != empty %}
            {% assign mail = jtlAnsprechpartner.EMail %}
        {% endif %}
    {% endfor -%}
{% elsif Vorgang.Kunde.Lieferadressen.Anzahl > 0 %}
    {% for jtlLieferAdresse in Vorgang.Kunde.Lieferadressen %}
        {% if jtlLieferAdresse.EMail != empty %}
            {% assign mail = jtlAnsprechpartner.EMail %}
        {% endif %}
    {% endfor -%}
{% elsif Vorgang.Auftrag.Kunde.EMail != empty %}
    {% assign mail = Vorgang.Auftrag.Kunde.EMail %}
{% endif %}
{{ mail }}
 

kelvin.

Gut bekanntes Mitglied
15. Februar 2023
164
62
Frankfurt
So müsste es funktionieren:
Code:
{% assign mail ='' %}
{% if Vorgang.Auftrag.Kunde.Ansprechpartner.Anzahl > 0 %}
    {% for jtlAnsprechpartner in Vorgang.Kunde.Ansprechpartner %}
        {% if jtlAnsprechpartner.Abteilung == 'Buchhaltung' and jtlAnsprechpartner.EMail != empty %}
            {% assign mail = jtlAnsprechpartner.EMail %}
        {% elsif jtlAnsprechpartner.Abteilung == 'Einkauf' and jtlAnsprechpartner.EMail != empty and mail == ''  %}
            {% assign mail = jtlAnsprechpartner.EMail %}
        {% endif %}
    {% endfor -%}
{% elsif Vorgang.Kunde.Lieferadressen.Anzahl > 0 %}
    {% for jtlLieferAdresse in Vorgang.Kunde.Lieferadressen %}
        {% if jtlLieferAdresse.EMail != empty %}
            {% assign mail = jtlAnsprechpartner.EMail %}
        {% endif %}
    {% endfor -%}
{% elsif Vorgang.Auftrag.Kunde.EMail != empty %}
    {% assign mail = Vorgang.Auftrag.Kunde.EMail %}
{% endif %}
{{ mail }}

Mit break wäre das meiner Meinung nach viel schöner und bei sehr vielen Ansprechpartnern auch effizienter. Im Normalbetrieb ist es aber wahrscheinlich nicht merkbar.
 
  • Gefällt mir
Reaktionen: karabey

karabey

Sehr aktives Mitglied
28. November 2012
907
74
So müsste es funktionieren:
Code:
{% assign mail ='' %}
{% if Vorgang.Auftrag.Kunde.Ansprechpartner.Anzahl > 0 %}
    {% for jtlAnsprechpartner in Vorgang.Kunde.Ansprechpartner %}
        {% if jtlAnsprechpartner.Abteilung == 'Buchhaltung' and jtlAnsprechpartner.EMail != empty %}
            {% assign mail = jtlAnsprechpartner.EMail %}
        {% elsif jtlAnsprechpartner.Abteilung == 'Einkauf' and jtlAnsprechpartner.EMail != empty and mail == ''  %}
            {% assign mail = jtlAnsprechpartner.EMail %}
        {% endif %}
    {% endfor -%}
{% elsif Vorgang.Kunde.Lieferadressen.Anzahl > 0 %}
    {% for jtlLieferAdresse in Vorgang.Kunde.Lieferadressen %}
        {% if jtlLieferAdresse.EMail != empty %}
            {% assign mail = jtlAnsprechpartner.EMail %}
        {% endif %}
    {% endfor -%}
{% elsif Vorgang.Auftrag.Kunde.EMail != empty %}
    {% assign mail = Vorgang.Auftrag.Kunde.EMail %}
{% endif %}
{{ mail }}

Mit break wäre das meiner Meinung nach viel schöner und bei sehr vielen Ansprechpartnern auch effizienter. Im Normalbetrieb ist es aber wahrscheinlich nicht merkbar.
Danke für die Rückmeldung nochmals kelvin. Bin nicht auf die Idee gekommen mail='' zu überprüfen ob es ein Wert hat oder nicht. Das sollte den ganzen Code durchlaufen und auch an den nachliegenden 'elsif' prüfen.
Allerdings gibt es keine Ausgabe mehr ab der Zeile {% elsif Vorgang.Kunde.Lieferadressen.Anzahl > 0 %} auch wenn Werte vorhanden sind.

Dazu habe ich es so einfach wie möglich gehalten und mal die Zeilen damit ersetzt:
Code:
{% elsif Vorgang.Auftrag.Lieferadresse.EMail != empty and mail == '' %}
    {% assign mail = Vorgang.Auftrag.Lieferadresse.EMail %}
{% elsif Vorgang.Auftrag.Kunde.EMail != empty and mail == '' %}
    {% assign mail = Vorgang.Auftrag.Kunde.EMail %}

Das Ergebnis ist erneut keine Ausgabe auch wenn Buchhaltung und Einkauf negativ ist. Bau ich aber die beiden elsif in eine neue if Bedingungen, dann funktioniert es prima. Debugged habe ich es in dem ich vor der Zeile
Code:
{% elsif Vorgang.Auftrag.Lieferadresse.EMail != empty and mail == '' %}
mit
Code:
{{mail}}
Keine Ausgabe, also sollte es in den nächsten Zeile eine Ausgabe stattfinden. Auch die Zeile danach wieder keine Ausgabe auch wenn die Bedingung Vorgang.Auftrag.Lieferadresse.EMail nicht erfüllt ist.

Mir kommt es vor dass 'elsif' ignoriert wird.