Neu Dotliquid Schleife über Positionen mit Abfrage von Merkmalwert

  • Das FBA-Reparatur Tool zur Korrektur der doppelten FBA Aufträge vom 06.06. und folgend steht nun endlich zum Download bereit! HIER gehts zum Download

TomRogge

Neues Mitglied
14. Dezember 2022
8
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
525
175
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

Neues Mitglied
14. Dezember 2022
8
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
525
175
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
663
201
{%- assign poscount = 1 | Plus: 1 -%}

macht keinen Sinn.

Nicht eher

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

TomRogge

Neues Mitglied
14. Dezember 2022
8
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
525
175
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
Attribut mit DotLiquid füllen; Attribut nicht übermitteln, wenn Wert leer kaufland.de - Anbindung (SCX) 4
Neu Fehler im Guide - Allgemeine Beispiele für DotLiquid - Melden nicht möglich JTL-Wawi - Fehler und Bugs 0
Neu Lieferadresse bei Import über Ameise festlegen User helfen Usern - Fragen zu JTL-Wawi 0
Berechnung Durchschnitts-EK in der WaWi 1.6 historisch über alle Einkäufe des Artikels sinnvoll? JTL-Wawi 1.6 4
2 Mandanten über einen Server laufen lassen bzw. über ein Software Recht ? Tipps und Tricks - hilfreiche Videoanleitungen 3
Neu Bei Verkauf über JTL POS kann ich keine Rechnung erstellen - Auftrag wird extern abgerechnet? JTL-Shop - Fehler und Bugs 0
JTL Wawi und korrekte Exportattribute für Google Shopping Plugin über JTL Shop 5 JTL-Wawi 1.7 0
Zugriff über App funktioniert nicht JTL-Wawi App 6
Neu Problem mit Retouren über WMS JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Neu Paypal oder Kreditkarte für Aufträge die nicht über den Shop laufen Schnittstellen Import / Export 2
Artikel über Han suchen JTL-Wawi App 1
Neu Tracking Status & ID (DHL z.B.) Übertragung über den Connector in den eigenen Drittshop Technische Fragen zu den JTL-Connectoren 2
Neu Retourenlabel über Österreichische Post JTL-ShippingLabels - Fehler und Bugs 0
Neu Wawi zeigt nicht an in welcher Box sich der Auftrag GENAU befindet! Nur über Umwege. JTL-Wawi - Ideen, Lob und Kritik 0
Neu Auf Wawi auf Mini PC von einem Mac über RDP und einem anderen auswertigen PC zugreifen? Gelöste Themen in diesem Bereich 4
In Diskussion JTL-POS-Server über das Internet erreichen/ Wawi-App von überall aus nutzen Einrichtung / Updates von JTL-POS 3
Neu Produktauswahlassist über Grafiken Gelöste Themen in diesem Bereich 5
JTL Wawi App über Tailscale oder Zerotier mit JTL Server verbinden JTL-Wawi App 1
Neu Was ist schneller? Optimierung über Kategorien oder Merkmal? Technische Fragen zu Plugins und Templates 1
In Diskussion Rechnung Drucken über den Workflow (Verzögerung?) oder das WMS Modul (Sofort) JTL-Workflows - Fehler und Bugs 1
Neu Artikel wird über ASIN gefunden aber es steht keine ASIN im Artikel drinne JTL-Wawi - Fehler und Bugs 0
Neu Kontist/Solaris über XS2A anbinden ohne 2 Faktor Authentifizierung? Schnittstellen Import / Export 0
Umlagerungen werden über Kundenbestellungen priorisiert. Warum? JTL-Wawi 1.7 0
JTL Wawi / JTL Wawi App über Tailscale oder Zerotier Gelöste Themen in diesem Bereich 0
In Bearbeitung Artikel nur noch 1x im Ladenlokal auf Lager - Bestellung aber über Webshop Allgemeine Fragen zu JTL-POS 3
Neu Shopware 6 Kategorietyp über WaWi ändern Shopware-Connector 1
E-Mail Versand über ein Freigegebenes Postfach Einrichtung JTL-Shop5 2
Neu Hersteller im Artikel über das + Zeichen anlegen geht nicht mehr. JTL-Wawi - Fehler und Bugs 0

Ähnliche Themen