Gelöst DotLiquid komplexe Rechenaufgaben Workflow

shopar

Aktives Mitglied
1. August 2016
13
0
Hi,

möchte gerne einen Wert errechnen lassen, einzelne Werte Addieren ist kein Problem:

{{ 1 | Plus: 1 }} Daraus folgt: 2

Was muss ich schreiben, damit ich dieses Ergbniss "2" nun z.B. multiplizieren will mit der Zahhl 5?

{{ {{ 1 | Plus: 1 }} | Times: 5 }} ist leider falsch...

und {{ 1 | Plus: 1 | Times: 5 }} Ergbit leider 10... obwohl er dann ja eigentlich Punkt vor Strichrechnen sollte (6)

habt Ihr eine Lösung?!
 

mike59999

Gut bekanntes Mitglied
16. Oktober 2012
775
49
Darmstadt
Das einzige was mir jetzt auf die schnelle einfallen würde wäre die Zuweisung von Variablen.

Ergibt 10:
Code:
{% assign Zwischenergebnis = 1 | Plus: 1 %}
{{ Zwischenergebnis | Times: 5 }}
Ergibt 6:
Code:
{% assign Zwischenergebnis = 1 | Times: 5 %}
{{ Zwischenergebnis | Plus: 1 }}
 

Marc Völker

Moderator
Mitarbeiter
15. April 2014
1.696
91
Hürth
Ansonsten wenn damit das Rechnen einfach ist, guck mal nach {{ capture }} und {{ DirectQuery }} dann kannst du die berechnung mit SQL machen, wobei da auch alle normalen Mathematischen Regeln und so greifen, (ist zwar ein bisschen umständlicher, aber die berechnungen ist sicherlich einfacher und Verständlicher als mit Times und Plus....

Mal hammer gewöhnungsbedürftig.
 

shopar

Aktives Mitglied
1. August 2016
13
0
Hi, die Lösungen haben mir weitergeholfen, vielen Dank.

nun folgt ein Problem gern dem anderen:


{% assign Zwischenergebnis9 = Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.UPC | Minus: 1 %}
{{ Zwischenergebnis9 | Minus: 1 }}


Wenn der UPC den Wert 4,5 hat, sollte das Ergebnis 2,5 herrauskommen, allerdings bekomme ich folgende Meldung: "Liquid error: Parameteranzahlkonflikt."
Wenn ich "Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.UPC" durch "4,5" in der Formel ersetze kommt das Ergebnis?! Woran kann das liegen?

{{ Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.UPC }} --> 4,5


Marc kannst du mir ein Beispiel für eine {{ capture }} Zeile geben? Konnte in der JTl-Ratgeberseite nichts passendes für mich dazu finden.

Super für eure Hilfe.
 

mike59999

Gut bekanntes Mitglied
16. Oktober 2012
775
49
Darmstadt
Das liegt daran das auch wenn du eine Zahl bei UPC hinterlegst diese bei Dotliquid als "String" also Text erkannt wird. Du musst diese zuerst umwandeln wie unten angegeben.

Code:
{% assign Zwischenergebnis9 = Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.UPC | ToDouble | Minus: 1 %}