Neu Dotliquid Schleife über Positionen mit Abfrage von Merkmalwert

TomRogge

Mitglied
14. Dezember 2022
11
0
Moin an Alle,

ich sitze momentan an einer erweiterten Eigenschaft für einen JTL Workflow. Dabei möchte ich folgendes abfragen:

Besitzen alle Artikelpositionen des Auftrags das Merkmal "Versandgruppe" mit dem Wert "Paketgut" und ist das Versandgewicht des Auftrags unter 100 kg dann setze die Variable Paketversand auf 1. Wenn eine Artikelposition kein "Paketgut" ist oder der Auftrag über 100 kg ist, dann setze die Variable Paketversand auf 0.

Leider schaffe ich es in Dotliquid lediglich die Artikelmerkmalwerte vom ersten Objekt auszugeben. Ich sitze nun bereits 3 Stunden dran und werde langsam wahnsinnig :D Vielleicht hat jemand ja spontan eine Idee, bzw. gleich den richtigen Ansatz, wie man diese Schleife realisieren kann.

Danke und viele Grüße,
Tom
 

MirkoWK

Sehr aktives Mitglied
14. März 2022
801
290
Hi,

das hier könnte klappen:

Code:
{%- assign poscount = 0 -%}
{%- assign vacount = 0 -%}
{%- for Artikelbeschreibungen in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
{%- for item in Artikelbeschreibungen.Artikel.EigeneFelder -%}
{%- if item.Versandgruppe == 'Paketgut' -%}{%- assign vacount = vacount | Plus: 1 -%}{%- endif -%}
{%- endfor -%}
{%- assign poscount = 1 | Plus: 1 -%}
{%- endfor -%}
{{ poscount | Minus: vacount }}

Das prüft zumindest erstmal alle Positionen auf das eigene Feld "Versandgruppe". Es zählt alle Positionen und alle Positionen mit "Paketgut" und bildet die Differenz. Ist diese 0, dann haben alle Positionen "Paketgut".

Soll das Versandgewicht aus aus den Artikeln kommen? Dann kannst du das auch an der Stelle mit auslesen und aufaddieren je Schleifendurchlauf.
Am Ende dann eine finale Bedingung, welche dann 1 oder 0 ausgibt.

Viele Grüße
Mirko
 

TomRogge

Mitglied
14. Dezember 2022
11
0
Vielen Dank für die Antwort! Leider zählt er den Zähler nicht hoch, wenn sich Artikel mit "Paketgut" im Auftrag befinden. Funktioniert das Auslesen von Merkmalen über "EigeneFelder"? Wir pflegen die Werte über die Merkmale beim Artikel und nicht über eigene Felder.
 

MirkoWK

Sehr aktives Mitglied
14. März 2022
801
290
sorry hatte das irgendwie verwechselt ^^.
Probier es mal damit:

Code:
{%- assign poscount = 0 -%}
{%- assign vacount = 0 -%}
{%- for Artikelbeschreibungen in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
{%- for item in Artikelbeschreibungen.Artikelmerkmale -%}
{%- if item.MerkmalName == 'Versandgruppe' -%}
{%- if item.Wert.Wert == 'Paketgut' -%}{%- assign vacount = vacount | Plus: 1 -%}{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- assign poscount = poscount | Plus: 1 -%}
{%- endfor -%}
{{ poscount | Minus: vacount }}
 

JohnFrea

Sehr aktives Mitglied
21. September 2017
899
284
{%- assign poscount = 1 | Plus: 1 -%}

macht keinen Sinn.

Nicht eher

{%- assign poscount = poscount | Plus: 1 -%} ?
 

TomRogge

Mitglied
14. Dezember 2022
11
0
Vielen Dank, das hat hervorragend geklappt! Leider stoße ich jetzt auf ein neues Problem, welches ich nicht so ganz nachvollziehen kann.
Ich möchte das Gesamtgewicht der Artikelpositionen abfragen und in einer If-Abfrage vergleichen, ob es unter 100 liegt.

Code:
{%- assign poscount = 0 -%}
{%- assign vacount = 0 -%}
{%- assign diff = 1 -%}
{%- assign Paketversand = 0 -%}
{%- for Artikelbeschreibungen in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
{%- for item in Artikelbeschreibungen.Artikelmerkmale -%}
{%- if item.MerkmalName == 'Versandgruppe' -%}
{%- if item.Wert.Wert == 'Paketgut' -%}{%- assign vacount = vacount | Plus: 1 -%}{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- assign poscount = poscount | Plus: 1 -%}
{%- endfor -%}

{%- assign diff = poscount | Minus: vacount -%}


{{ Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt }}

{% if diff == 0 and {{ Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt }}<100.0000 %}
{% assign Paketversand = 1 %}
{{Paketversand}}
{% else %}
{% assign Paketversand = 0 %}
{{Paketversand}}
{% endif %}

Überhalb der If-Abfrage lasse ich die Variable ausgeben, dort wird problemlos der Wert ausgegeben. In der Abfrage erhalte ich aber den Fehler
Code:
Liquid error: Der Wert darf nicht NULL sein.
Parametername: input

Ich habe bereits probiert, den Wert per Capture oder assign in eine Variable zu schreiben, aber dann erhalte ich ebenfalls die Fehlermeldung. Wenn ich es per capture in eine Variable speichere und dann nur einen == Vergleich mache, anstatt < oder > funktioniert es. Ich schätze, dass es zu irgendwelchen Datentypen-Konvertierungen kommt? Obwohl die Variable {{ Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt }} ja theoretisch decimal als Datentyp ist?

Vielen Dank im Voraus!

Viele Grüße,
Tom
 

MirkoWK

Sehr aktives Mitglied
14. März 2022
801
290
Freut mich, dass das andere schonmal geklappt hat :) der andere Fehler könnte hieran liegen:

{% if diff == 0 and {{ Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt }}<100.0000 %}
das sind geschweifte Klammern innerhalb anderer, was nicht geht, also so könnte es dann gehen:
{% if diff == 0 and Vorgang.AuftragsPositionen.ArtikelPositionen.GewichtGesamt < 100.0000 %}
 
Ähnliche Themen
Titel Forum Antworten Datum
Beantwortet Workflow Datei schreiben Dateiname per Dotliquid Fehler Illegales Zeichen im Pfad. callerMemberName : WriteFile JTL-Workflows - Fehler und Bugs 1
In Diskussion Auftrag Notizen / Historie via dotliquid ausgeben!? JTL-Workflows - Ideen, Lob und Kritik 4
Keine Datensicherung über ODBC möglich JTL-Wawi 1.10 0
Neu Kartonagen nicht mehr über Workflow auswählbar nach Update auf 1.11.3 JTL-Workflows - Ideen, Lob und Kritik 0
Neu Materialeinsatz Berechnung über EKNetto JTL Ameise - Eigene Exporte 1
Neu Übergabe Versandlaber an Fulfiller möglich über FFN standallone aber nicht über FFN mit angebundeener JTL-WAWI Arbeitsabläufe in JTL-Wawi 0
Neu Staffelpreise Variantenartikel über alle Varianten User helfen Usern - Fragen zu JTL-Wawi 0
Sammelbuchung bei Zahlungsausgang über das Zahlungsmodul JTL-Wawi 1.10 0
Überverkäufe über Workflow setzen JTL-Wawi 1.10 2
Neu Shop über verschieden Domains in gewünschter Sprache aufrufen ? Betrieb / Pflege von JTL-Shop 5
Ausliefern Workflow über API JTL-Wawi 1.9 6
Neu JTL-Shop Admin Bereich und Shop nur noch 504 Gateway Time-out ( Hosting über JTL ) User helfen Usern - Fragen zu JTL-Wawi 4
Probleme mit dem Einstellen von Artikeln auf Amazon über JTL Wawi mit dem Lister 2.0 Amazon-Lister - Fehler und Bugs 6
Neu Auftrag über WaWi versenden Arbeitsabläufe in JTL-Wawi 3
Über 100 Bestellungen von SCX nicht importiert kaufland.de - Anbindung (SCX) 1
Neu Probleme mit der Email über jtl hosting (plesk) User helfen Usern 2
Neu Fehlermeldungen beim Hochladen von Artikel über Amazon Lister 2.0 Amazon-Lister - Fehler und Bugs 1
Neu Registrierung über amazonpay nicht möglich Plugins für JTL-Shop 0
Statistik über Zahlungsmoral der Kunden / Zahlungsverzug möglich? JTL-Wawi 1.9 4
Merkmalfilter als Leiste über Artikelliste möglich??? Einrichtung JTL-Shop5 3
Neu Kein CN22 über DHL JTL-ShippingLabels - Fehler und Bugs 4
Defekt-Artikel nach Retoure über WMS nicht mehr in JTL-Wawi sichtbar JTL-Wawi 1.10 2
In Bearbeitung Kompakte Kasse gesucht mit der auch Kartenzahlung über 50 € funktioniert? JTL-POS - Fragen zu Hardware 5
Neu Zahlungsimport über CSV ... Ausgangszahlung ? JTL-Wawi - Fehler und Bugs 0
Datenbank ist über 800gb groß Hilfe !!! JTL-Wawi 1.9 23

Ähnliche Themen