Guten Morgen,
wir importieren Aufträge über die Ameise und haben einige Workflows zur Weiterverarbeitung erstellt. Unter anderem muss eine Freiposition erstellt werden, deren Preis abhängig vom Lieferland und vom Versandgewicht des Auftrags ist.
Dank Dotliquid-Abfrage kein Problem, allerdings ist unser Ansatz etwas umständlich. So sieht die Dotliquid-Anweisung beispielsweise aus:
{% if Vorgang.Lieferung.Lieferadresse.LandISO == 'FR' or Vorgang.Lieferung.Lieferadresse.LandISO == 'AT' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < 1 %}
2
{% elsif Vorgang.Lieferung.Lieferadresse.LandISO == 'FR' or Vorgang.Lieferung.Lieferadresse.LandISO == 'AT' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < 2 %}
3
{% elsif Vorgang.Lieferung.Lieferadresse.LandISO == 'FR' or Vorgang.Lieferung.Lieferadresse.LandISO == 'AT' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < 3 %}
4
{% elsif Vorgang.Lieferung.Lieferadresse.LandISO == 'FR' or Vorgang.Lieferung.Lieferadresse.LandISO == 'AT' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < 4 %}
5
.
.
.
{% elsif Vorgang.Lieferung.Lieferadresse.LandISO == 'IT' or Vorgang.Lieferung.Lieferadresse.LandISO == 'ES' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < 2 %}
4
{% elsif Vorgang.Lieferung.Lieferadresse.LandISO == 'IT' or Vorgang.Lieferung.Lieferadresse.LandISO == 'ES' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < 3 %}
6
.
.
{% endif %}
Der Aufbau ist relativ simpel. Wenn das Lieferland Frankreich oder Österreich ist, setzt er abhängig vom Gesamtgewicht einen Preis (beispielsweise 3 EUR für ein Paket, das 5,5kg wiegt). Das ganze Spiel dann noch mit weiteren Ländern, wie in diesem Beispiel mit Italien und Spanien. Für diese beiden Länder gelten andere Preise.
Die Anweisung macht, was sie soll, allerdings ist sie nicht sehr effizient. Insgesamt werden über 50 Länder berücksichtigt, die sich teilweise zusammenfassen lassen (wie im Beispiel Frankreich und Österreich oder Italien und Spanien), allerdings ist die Anweisung trotzdem extrem aufgebläht. Weiteres Problem: Die Liste arbeitet natürlich nur mit Gewichten, die wir hier auch eintragen. Wenn das Versandgewicht für einen Auftrag mal exorbitant hoch sein sollte, wird u.U. kein Preis mehr berechnet.
Frage: Gibt es die Möglichkeit, eine Art FOR-Schleife zu schreiben, die beispielsweise für jedes Kilogramm Versandgewicht einen Wert von 1,00 aufsummiert und den Vorgang theoretisch bis ins Unendliche wiederholt?
Beispielweise so:
{% if Vorgang.Lieferung.Lieferadresse.LandISO == 'FR' or Vorgang.Lieferung.Lieferadresse.LandISO == 'AT' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < n %}
n+1
{% endif %}
Viele lieben Dank!
Mander
wir importieren Aufträge über die Ameise und haben einige Workflows zur Weiterverarbeitung erstellt. Unter anderem muss eine Freiposition erstellt werden, deren Preis abhängig vom Lieferland und vom Versandgewicht des Auftrags ist.
Dank Dotliquid-Abfrage kein Problem, allerdings ist unser Ansatz etwas umständlich. So sieht die Dotliquid-Anweisung beispielsweise aus:
{% if Vorgang.Lieferung.Lieferadresse.LandISO == 'FR' or Vorgang.Lieferung.Lieferadresse.LandISO == 'AT' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < 1 %}
2
{% elsif Vorgang.Lieferung.Lieferadresse.LandISO == 'FR' or Vorgang.Lieferung.Lieferadresse.LandISO == 'AT' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < 2 %}
3
{% elsif Vorgang.Lieferung.Lieferadresse.LandISO == 'FR' or Vorgang.Lieferung.Lieferadresse.LandISO == 'AT' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < 3 %}
4
{% elsif Vorgang.Lieferung.Lieferadresse.LandISO == 'FR' or Vorgang.Lieferung.Lieferadresse.LandISO == 'AT' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < 4 %}
5
.
.
.
{% elsif Vorgang.Lieferung.Lieferadresse.LandISO == 'IT' or Vorgang.Lieferung.Lieferadresse.LandISO == 'ES' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < 2 %}
4
{% elsif Vorgang.Lieferung.Lieferadresse.LandISO == 'IT' or Vorgang.Lieferung.Lieferadresse.LandISO == 'ES' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < 3 %}
6
.
.
{% endif %}
Der Aufbau ist relativ simpel. Wenn das Lieferland Frankreich oder Österreich ist, setzt er abhängig vom Gesamtgewicht einen Preis (beispielsweise 3 EUR für ein Paket, das 5,5kg wiegt). Das ganze Spiel dann noch mit weiteren Ländern, wie in diesem Beispiel mit Italien und Spanien. Für diese beiden Länder gelten andere Preise.
Die Anweisung macht, was sie soll, allerdings ist sie nicht sehr effizient. Insgesamt werden über 50 Länder berücksichtigt, die sich teilweise zusammenfassen lassen (wie im Beispiel Frankreich und Österreich oder Italien und Spanien), allerdings ist die Anweisung trotzdem extrem aufgebläht. Weiteres Problem: Die Liste arbeitet natürlich nur mit Gewichten, die wir hier auch eintragen. Wenn das Versandgewicht für einen Auftrag mal exorbitant hoch sein sollte, wird u.U. kein Preis mehr berechnet.
Frage: Gibt es die Möglichkeit, eine Art FOR-Schleife zu schreiben, die beispielsweise für jedes Kilogramm Versandgewicht einen Wert von 1,00 aufsummiert und den Vorgang theoretisch bis ins Unendliche wiederholt?
Beispielweise so:
{% if Vorgang.Lieferung.Lieferadresse.LandISO == 'FR' or Vorgang.Lieferung.Lieferadresse.LandISO == 'AT' and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < n %}
n+1
{% endif %}
Viele lieben Dank!
Mander