Gelöst Bedingung "10 kleiner gleich 2" trifft zu - Bug?

Der_Bob

Gut bekanntes Mitglied
10. August 2007
222
9
Hallo,

Ich habe eine Workflow-Bedingung für den höchsten Artikel geschrieben für die Versandkostenermittlung.
Soweit scheint die auch zu funktionieren, allerdings wird bei Verwendung der Bedingung und anschließender Simulation folgendes ausgegeben:

"Bedingung trifft zu (10 kleiner gleich 2)"

Gleichzeitig wird bei einem anderen Auftrag ausgegeben:

"Bedingung trifft nicht zu (1 kleiner gleich 2)"

Meine Vermutung: das Ergebnis {{result}} wird nicht als Zahl, sondern Text (String) gespeichert und dann der Text "10" mit der Zahl 2 verglichen. Ich hab' allerdings keine Möglichkeit gefunden, den Typ der Variablen zu bestimmen bzw. scheint das bei anderen Workflows auch so zu funktionieren. Sonst fällt mir nicht ein warum 10 größer als 2 sein soll.
Hat jemand das gleiche Problem?

Grüße,
Marcus
 

Anhänge

  • Hoechster_Artikel.jpg
    Hoechster_Artikel.jpg
    34,6 KB · Aufrufe: 55

Verkäuferlein

Sehr aktives Mitglied
29. April 2012
2.568
1.034
AW: Bedingung "10 kleiner gleich 2" trifft zu - Bug?

Ich würde mal eher vermuten, dass da jemand beim Programmieren "<" und ">" vertauscht hat. Probiers doch mal mit 10 kleiner gleich 10 oder 2 kleiner gleich 2, dann könnte man das mit dem Integer und String schon widerlegen oder bestätigen.
 

Der_Bob

Gut bekanntes Mitglied
10. August 2007
222
9
AW: Bedingung "10 kleiner gleich 2" trifft zu - Bug?

Die programmierte Bedingung vergleicht noch gar nichts, die gibt nur eine "Zahl" (als String oder Int) aus. Der Vergleich kommt dann erst bei den Workflow-Einstellungen, also hier:

Also da müsste das JTL beim Programmieren vertauscht haben. ;)
 

Anhänge

  • workflow_fehler_2.jpg
    workflow_fehler_2.jpg
    21,1 KB · Aufrufe: 43

D. Lehmeier

Moderator
14. August 2013
248
4
AW: Bedingung "10 kleiner gleich 2" trifft zu - Bug?

Hallo,

die Erweiterten Eigenschaften geben immer einen String zurück.
Dementsprechend wird hier ein Stringvergleich gemacht.
Den größer/kleiner Vergleich müsstest du in der "Erweiterten Eigenschaft" machen und etwas entsprechendes zurückgeben.
 

Der_Bob

Gut bekanntes Mitglied
10. August 2007
222
9
AW: Bedingung "10 kleiner gleich 2" trifft zu - Bug?

Danke für den Tipp!
Leider will das mit dem Vergleich aber auch in der erweiterten Eigenschaft selbst nicht klappen.
Auch nicht mit " | FormatNumber: 'N1', 'de-DE' ". Es scheint als ob mein aus der DB ausgelesener Wert für die Höhe ({% capture itemquery3 %}SELECT fHoehe from tArtikel Where kArtikel = '{{ item.tArtikel_kArtikel | SqlEscape }}'{% endcapture -%}) von Anfang an ein String ist und auch bleibt. Wie kann ich den in eine Zahl umwandeln? Leider hab' ich dazu nichts im Dotliquid-Wiki gefunden.
 

D. Lehmeier

Moderator
14. August 2013
248
4
AW: Bedingung "10 kleiner gleich 2" trifft zu - Bug?

Hallo,

hier ein Beispiel für eine Erweiterte Eigenschaft "HöheGrösserGleich10" am Artikel, gibt 1 aus wenn Höhe >= 10, anderenfalls 0

Code:
{% assign kArtikel = Vorgang.Allgemein.Stammdaten.InterneArtikelnummer %}\
{% capture query -%}\
SELECT fHoehe FROM tArtikel WHERE tArtikel.kArtikel = {{kArtikel}}
{% endcapture -%}
{% assign result = query | DirectQueryScalar | FormatNumber: 'N2', 'de-DE' | ToDouble %}\
{% if result >= 10 %}1
{% else %}0{% endif %}
 

Der_Bob

Gut bekanntes Mitglied
10. August 2007
222
9
AW: Bedingung "10 kleiner gleich 2" trifft zu - Bug?

Hallo,

hier ein Beispiel für eine Erweiterte Eigenschaft "HöheGrösserGleich10" am Artikel, gibt 1 aus wenn Höhe >= 10, anderenfalls 0

Code:
{% assign kArtikel = Vorgang.Allgemein.Stammdaten.InterneArtikelnummer %}\
{% capture query -%}\
SELECT fHoehe FROM tArtikel WHERE tArtikel.kArtikel = {{kArtikel}}
{% endcapture -%}
{% assign result = query | DirectQueryScalar | FormatNumber: 'N2', 'de-DE' | ToDouble %}\
{% if result >= 10 %}1
{% else %}0{% endif %}


Vielen Dank für die Mühe! Wir haben in der Zwischenzeit, ehrlich gesagt, schon eine Lösung gefunden, aber sicher haben/hatten noch mehr das Problem hier. :)