In Diskussion Abfrage auf Wert bei allen Artikelpositionen nicht möglich?

ongnamo

Sehr aktives Mitglied
31. März 2013
1.117
96
Hallo,

Ziel des WF ist, das Eigene Feld "Warenpost Nation fähig" abzufragen. Nur wenn alle Artikel der Bestellung Warenpost National fähig sind, soll die Versandart neu gesetzt werden.

Bedingung ist: Auftrag\Auftragspositionen\ArtikelPositionen.enthält\Artikel\ Eigene Felder\Versand\Warenpost_National_fähig Gleich Wahr

Nun habe ich durch Testen bemerkt, dass das Ergebnis bereits dann WAHR ist, wenn nur ein Artikel der Positionsliste Wahr ist.

Keine Ahnung, ob das ein Bug oder Feature ist. Mein Verdacht ist, das hier das Wörtchen "enthält" ausschlaggebend ist.

Die Frage ist, wie erreicht man es, dass die Bedingung insgesamt nur dann WAHR ist, wenn sie für alle Positionen WAHR ist?
 

frankell

Sehr aktives Mitglied
9. September 2019
2.062
592
Flensburg
Hallo,

Ziel des WF ist, das Eigene Feld "Warenpost Nation fähig" abzufragen. Nur wenn alle Artikel der Bestellung Warenpost National fähig sind, soll die Versandart neu gesetzt werden.

Bedingung ist: Auftrag\Auftragspositionen\ArtikelPositionen.enthält\Artikel\ Eigene Felder\Versand\Warenpost_National_fähig Gleich Wahr

Nun habe ich durch Testen bemerkt, dass das Ergebnis bereits dann WAHR ist, wenn nur ein Artikel der Positionsliste Wahr ist.

Keine Ahnung, ob das ein Bug oder Feature ist. Mein Verdacht ist, das hier das Wörtchen "enthält" ausschlaggebend ist.

Die Frage ist, wie erreicht man es, dass die Bedingung insgesamt nur dann WAHR ist, wenn sie für alle Positionen WAHR ist?
Hast Du es mal mit der umgekehrten Logik probiert, also "Keine Bedingung erfüllt" und enthält ... gleich FALSCH?
Die doppelte Verneinung ist eine starke Bejahung, also genau das, was Du brauchst.
Da uns aber die Negierungen schwerer fallen als die positiven Ausdrücke, kann man das auch mit einer selbstdefinierten Erweiteren Eigenschaft erledigen. Es ist nur einfacher mit der doppelten Verneinung. Es sei denn, ich bin jetzt einem Logikfehler aufgesessen. 😂
 

ongnamo

Sehr aktives Mitglied
31. März 2013
1.117
96
Das Problem ist, dass ich nicht nur eine Bedingung habe. Wenn es nur eine Bedingung gäbe, könnte man tatsächlich so arbeiten.
 

ongnamo

Sehr aktives Mitglied
31. März 2013
1.117
96
Erweiterte Bedingungen kenne ich. Wir haben einige im Einsatz. Doch das Ausformulieren dieser Dotliquid-Abfragen ist nicht so mein Ding. Habe heute nach einer halben Stunde aufgegeben. Da fehlt mir einfach immer wieder das Detailwissen. ChatGPT war auch nicht hilfreich ^^
 

frankell

Sehr aktives Mitglied
9. September 2019
2.062
592
Flensburg
Erweiterte Bedingungen kenne ich. Wir haben einige im Einsatz. Doch das Ausformulieren dieser Dotliquid-Abfragen ist nicht so mein Ding. Habe heute nach einer halben Stunde aufgegeben. Da fehlt mir einfach immer wieder das Detailwissen. ChatGPT war auch nicht hilfreich ^^
Das ist auch nicht ganz so profan, weil das, soweit ich es erkennen kann, nicht ohne den Einsatz von SQL geht. Unter der Annahme, dass das Eigene Feld die Bezeichnung Warenpost_National_fähig hat, könntest Du folgende Erweiterte Eigenschaft anlegen:

Code:
{% for Artikelbeschreibungen in Vorgang.AuftragsPositionen -%}
{% assign PTyp = Artikelbeschreibungen.Positionstyp | abs -%}
{% if PTyp == 1 -%}
{% capture SQL -%}
SELECT nWertInt FROM tArtikelAttributSprache AS ARTATTS
LEFT JOIN tArtikelAttribut AS ARTATT ON ARTATTS.kArtikelAttribut = ARTATT.kArtikelAttribut
LEFT JOIN tAttributSprache AS ATTS ON ARTATT.kAttribut = ATTS.kAttribut
WHERE ATTS.cName = 'Warenpost_National_fähig' AND ATTS.kSprache = 0 AND ARTATTS.kSprache = 0 AND ARTATT.kArtikel = {{ Artikelbeschreibungen.InterneArtikelnummer | SqlEsacape }}
{% endcapture -%}
{% assign EF = SQL | DirectQueryScalar -%}
{% if EF == 1 -%}y{% else %}n{% endif -%}
{% endif -%}
{% endfor -%}

Diese müsste dann als Bedingung "enhält nicht" und "n" definiert werden.

Der Code geht alle Auftragspositionen durch und filtert zunächst einmal nach Standardpositionen (Artikel), also so etwas wie Gebühren, Versandkosten, Finanzierungskosten etc. werden nicht beachtet. Dann wird geprüft, ob der Wert für das Eigene Feld 1 ist (= WAHR bei Checkbox als Datentyp) . Wann immer das der Fall ist, wird ein y geschrieben. Ist das nicht der Fall, wird ein n geschrieben. Enthält also das Ergebnis n, ist das Eigene Feld bei mindestens einer Position nicht WAHR.

Das sollte dem Gewünschten entsprechen.

Hinweise:
  • Man könnte sich den zweiten JOIN sparen, wenn man den Wert kAttribut für das Eigene Feld kennt.
  • Die Verwendung von Unterstrichen in Bezeichnungen ist in SQL kann unglücklich sein, da der Unterstrich eine bestimmte Bedeutung bei der Suche nach einem String hat, wenn man keine exakte Suche verwendet. Er ist dann eine Wildcard für exakt ein beliebiges Zeichen. Wenn es also neben "Warenpost_National_fähig" auch "Warenpost National fähig" oder auch "Warenpost-National-fähig", würden alle diese Werte bei einer Sucher über LIKE gefunden. Wenn man eine exakte Suche benutzt wie oben bei WHERE ATTS.cName = 'Warenpost_National_fähig', wird der Unterstrich auch als Unterstrich verstanden, daher kommt es hier nicht drauf an. Daher ist das hier nur als Hinweis zu verstehen, dass der Unterstrich auch mal Probleme bereiten kann.
  • Theoretisch bedarf es der Erweiterten Eigenschaft nicht, Du könntest auch einfach die Prüfung auf das Eigene Feld in einen weiteren Workflow auslagern, bspw. als ersten Workflow, der nur diese Bedingung prüft (ohne die Notwendigkeit einer Erweiterten Eigenschaft) und als Aktion den Aufruf des jetzigen Workflows hat. Ich persönlich bin aber kein großer Fan davon, mehr Workflows als notwendig anzulegen. Und das generell, nicht nur, weil die manuellen Workflows unterhalb von Pro begrenzt oder gar nicht vorhanden sind. Und es ist auch einfach übersichtlicher. :) Aber nur der Vollständigkeit halber: Es ist auch eine Möglichkeit.
 
  • Gefällt mir
Reaktionen: ongnamo

ongnamo

Sehr aktives Mitglied
31. März 2013
1.117
96
Was für eine geniale, kollegiale Antwort! Vielen Dank schon allein für diesen Einsatz!

Den Code kann ich gedanklich nachvollziehen. Validieren kann ich ihn nur durch testen, weil mir ja wie gesagt der Tiefgang dafür fehlt. Ich habe dafür meinen Auftrag 4156692 genommen, der 1 nicht WP-fähige und 2 WP-fähige Artikelpositionen enthält. Ergebnis:
nnn
Doch auch wenn alle 3 oder keine der Artikelpositionen WP-fähig ist, es kommt immer "nnn" heraus. Irgendetwas passt da noch nicht. Hast du ein Idee, woran das liegt?
 

frankell

Sehr aktives Mitglied
9. September 2019
2.062
592
Flensburg
Was für eine geniale, kollegiale Antwort! Vielen Dank schon allein für diesen Einsatz!

Den Code kann ich gedanklich nachvollziehen. Validieren kann ich ihn nur durch testen, weil mir ja wie gesagt der Tiefgang dafür fehlt. Ich habe dafür meinen Auftrag 4156692 genommen, der 1 nicht WP-fähige und 2 WP-fähige Artikelpositionen enthält. Ergebnis:
nnn
Doch auch wenn alle 3 oder keine der Artikelpositionen WP-fähig ist, es kommt immer "nnn" heraus. Irgendetwas passt da noch nicht. Hast du ein Idee, woran das liegt?
Gern geschehen! :thumbsup:

Ich habe das bei uns mit einem Eigenen Feld getestet, da ging es.

Kannst Du einmal einen Screenshot der Einstellungen des Eigenen Feldes machen, also in Admin - Eigene Felder?
 

frankell

Sehr aktives Mitglied
9. September 2019
2.062
592
Flensburg
Na klar: Screenshot anbei.

Es ist ein Flag-Feld und in allen Warengruppen gültig.

Ok, dann kann das auch nicht klappen. Ich schrieb ja:

Unter der Annahme, dass das Eigene Feld die Bezeichnung Warenpost_National_fähig hat, könntest Du folgende Erweiterte Eigenschaft anlegen:

Wenn Du im Code

'Warenpost_National_fähig'

durch

'Warenpost National fähig'

ersetzt, sollte es klappen. Ich war davon ausgegangen, dass die Unterstriche Teil der Bezeichnung sind, aber die sind bei den Feldern automatisch hinzugefügt worden.
 

frankell

Sehr aktives Mitglied
9. September 2019
2.062
592
Flensburg
Das ist auch nicht ganz so profan, weil das, soweit ich es erkennen kann, nicht ohne den Einsatz von SQL geht. Unter der Annahme, dass das Eigene Feld die Bezeichnung Warenpost_National_fähig hat, könntest Du folgende Erweiterte Eigenschaft anlegen:

Code:
{% for Artikelbeschreibungen in Vorgang.AuftragsPositionen -%}
{% assign PTyp = Artikelbeschreibungen.Positionstyp | abs -%}
{% if PTyp == 1 -%}
{% capture SQL -%}
SELECT nWertInt FROM tArtikelAttributSprache AS ARTATTS
LEFT JOIN tArtikelAttribut AS ARTATT ON ARTATTS.kArtikelAttribut = ARTATT.kArtikelAttribut
LEFT JOIN tAttributSprache AS ATTS ON ARTATT.kAttribut = ATTS.kAttribut
WHERE ATTS.cName = 'Warenpost_National_fähig' AND ATTS.kSprache = 0 AND ARTATTS.kSprache = 0 AND ARTATT.kArtikel = {{ Artikelbeschreibungen.InterneArtikelnummer | SqlEsacape }}
{% endcapture -%}
{% assign EF = SQL | DirectQueryScalar -%}
{% if EF == 1 -%}y{% else %}n{% endif -%}
{% endif -%}
{% endfor -%}

Diese müsste dann als Bedingung "enhält nicht" und "n" definiert werden.

Der Code geht alle Auftragspositionen durch und filtert zunächst einmal nach Standardpositionen (Artikel), also so etwas wie Gebühren, Versandkosten, Finanzierungskosten etc. werden nicht beachtet. Dann wird geprüft, ob der Wert für das Eigene Feld 1 ist (= WAHR bei Checkbox als Datentyp) . Wann immer das der Fall ist, wird ein y geschrieben. Ist das nicht der Fall, wird ein n geschrieben. Enthält also das Ergebnis n, ist das Eigene Feld bei mindestens einer Position nicht WAHR.

Das sollte dem Gewünschten entsprechen.

Hinweise:
  • Man könnte sich den zweiten JOIN sparen, wenn man den Wert kAttribut für das Eigene Feld kennt.
  • Die Verwendung von Unterstrichen in Bezeichnungen ist in SQL kann unglücklich sein, da der Unterstrich eine bestimmte Bedeutung bei der Suche nach einem String hat, wenn man keine exakte Suche verwendet. Er ist dann eine Wildcard für exakt ein beliebiges Zeichen. Wenn es also neben "Warenpost_National_fähig" auch "Warenpost National fähig" oder auch "Warenpost-National-fähig", würden alle diese Werte bei einer Sucher über LIKE gefunden. Wenn man eine exakte Suche benutzt wie oben bei WHERE ATTS.cName = 'Warenpost_National_fähig', wird der Unterstrich auch als Unterstrich verstanden, daher kommt es hier nicht drauf an. Daher ist das hier nur als Hinweis zu verstehen, dass der Unterstrich auch mal Probleme bereiten kann.
  • Theoretisch bedarf es der Erweiterten Eigenschaft nicht, Du könntest auch einfach die Prüfung auf das Eigene Feld in einen weiteren Workflow auslagern, bspw. als ersten Workflow, der nur diese Bedingung prüft (ohne die Notwendigkeit einer Erweiterten Eigenschaft) und als Aktion den Aufruf des jetzigen Workflows hat. Ich persönlich bin aber kein großer Fan davon, mehr Workflows als notwendig anzulegen. Und das generell, nicht nur, weil die manuellen Workflows unterhalb von Pro begrenzt oder gar nicht vorhanden sind. Und es ist auch einfach übersichtlicher. :) Aber nur der Vollständigkeit halber: Es ist auch eine Möglichkeit.
Und ein Tippfehler ist da noch im Code von mir: Da steht leider SqlEsacape anstelle von SqlEscape. Warum der Code dann bei mir trotzdem funktioniert hat, weiß ich nicht. :D
 

ongnamo

Sehr aktives Mitglied
31. März 2013
1.117
96
Ah, cool: Bei 2 WPN-fähigen und 1 nicht-WPN-fähigem Artikel erhalte ich nun das gewünschte Ergebnis: yyn

Und im Workflow:

Snap110.jpg
Mit deiner Hilfe hat das geklappt :D 1000 Dank dafür 🙏
 
Ähnliche Themen
Titel Forum Antworten Datum
Rechnung Abfrage IstStorniert JTL-Wawi 1.8 2
Neu Abfrage Business-Kunde in Worklow User helfen Usern - Fragen zu JTL-Wawi 3
Neu Artikel Filter laufende eBay Angebot funktioniert nicht - SQL Abfrage User helfen Usern - Fragen zu JTL-Wawi 3
Neu if else abfrage Arbeitsabläufe in JTL-Wawi 1
Neu Abfrage offene Aufträge von GESTERN oder VORGESTERN User helfen Usern - Fragen zu JTL-Wawi 3
Neu Alternativen zu Hosteurope? Nach Zwangsupdate auf Microsoft365 wg DSGVO Installation / Updates von JTL-Shop 10
Neu Fehler 500 im Child-Template nach Umstieg von 5.3.3 auf 5.5.3 Templates für JTL-Shop 8
Neu Nach Windows update auf dem Server keine Verbindung mehr zur Datenbank JTL-Wawi - Fehler und Bugs 3
Titel auf verschiedenen Plattformen und Artikeltitel auf gedruckter Rechnung oder Lieferschein. JTL-Wawi 1.10 8
Neu gelöschte Produkte tauchen wieder auf WooCommerce-Connector 4
Neu TIKTOK Shop-Rabatte auf Artikel Business Jungle 1
Neu Upgrade von Wawi Version 1.5.48.2 auf aktuellere Version - was gibt es zu beachten? Installation von JTL-Wawi 5
Neu Kein Shopabgleich mehr möglich nach Umstellung auf Cloudflare SSL-Zertifikat Allgemeine Fragen zu JTL-Shop 3
Neu Nachdem Shop-Update auf 5.5.3, im Backend: Export-Manager nicht aufrufbar Installation / Updates von JTL-Shop 1
Neu eBay Angebote bestehen lassen auf eBay bei 0 Bestand in WaWi User helfen Usern - Fragen zu JTL-Wawi 4
Workflow soll wenn Artikel 0 Bestand für 35 Tage hat diesen auf inaktiv setzen JTL-Wawi 1.10 4
Neu CSS-Gutschein-Plugin funktioniert nach Shop-update auf 5.5.3 nicht mehr Plugins für JTL-Shop 1
Neu Update von 1.5.55.5 auf aktuell, welche Reihenfolge, SQL Express auf Standard Installation von JTL-Wawi 10
Update von 1.8.10 auf aktuelle Version sinnvoll? JTL-Wawi 1.8 2
Neue IBAN bei Firma erscheint nicht auf Rechnung JTL-Wawi 1.8 2
Neu Update auf Shop 5.5.3: Immer 500 Internal Server ERror JTL-Shop - Fehler und Bugs 1
Neu Coupon codes nicht auf Sonderpreise Allgemeine Fragen zu JTL-Shop 0
Nach Update auf 1.10.13.2 "Menge ändern" bei "Auzuschaltende Angebote" bei mehreren selektierten Einträgen schließ Wawi JTL-Wawi 1.10 0
Nach Update auf 1.10.13.2 Probleme mit der POS Kasse JTL-Wawi 1.10 7
Neu Bestellbestätigungsmail wird teilweise nicht versendet (taucht auch nicht im Log auf) JTL-Shop - Fehler und Bugs 6
Neu Enorme Anfragen/Aufrufe vorw. aus Brasilien, Zugriffe auf Merkmalfilter Allgemeine Fragen zu JTL-Shop 4
Neu Rechnungsanzeige Amazon von "Bar" auf "Zahlung via Amazon Pay" Amazon-Anbindung - Fehler und Bugs 1
Neu Portlet - Zugriff auf Settings aus dem Adminbereich Technische Fragen zu Plugins und Templates 0
Neu Kann nach Update auf 1.10 meine alten VCS-Lite Amazonrechnungen (noch erstellt mit 1.9.4.5.) nicht mehr drucken? Amazon-Anbindung - Fehler und Bugs 4
kann man inzwischen aus der Wawi auf kaufland Varianten bilden, wenn ja, ab welcher Version? kaufland.de - Anbindung (SCX) 0
Neu Backup auf anderen Server umziehen Allgemeine Fragen zu JTL-Shop 0
Neu JTL auf LINUX Rechner User helfen Usern - Fragen zu JTL-Wawi 5
Neu JS nur auf auf spezifischer Seite nachladen Allgemeine Fragen zu JTL-Shop 1
Neu Amazon Lister 2.0 -- Kategorien (Amazon) auf andere Artikel vererben/kopieren Amazon-Lister - Fehler und Bugs 3
Neu Rabatte auf Hersteller oder Warengruppen JTL-Wawi - Ideen, Lob und Kritik 3
JTL WAWI GUI Update von 1.9.8.0 auf 1.10.13.1 nicht möglich WAWI reagiert nicht JTL-Wawi 1.10 3
Neu Workflow automatisch alle 2 Stunden ausführen – Prüfung auf voraussichtliches Lieferdatum User helfen Usern - Fragen zu JTL-Wawi 11
Update auf 1.10 JTL-Wawi 1.10 4
Neu Umstellung auf Shop5 geschafft Installation / Updates von JTL-Shop 11
Preis 135,00€ anpassen auf 135€ ?!? Einrichtung JTL-Shop5 0
Neu Update von 1.9.8.0 auf 1.10.13.1 Fehlerhafte Variationswert - Sortiernummern JTL-Wawi - Fehler und Bugs 8
Neu Firmenzusatz fehlt auf DHL Label JTL-ShippingLabels - Ideen, Lob und Kritik 5
Neu Update von 5.1.8 auf 5.2.1 inkl. PHP Umstellung von 7.4 auf 8.x funktioniert einfach nicht. 500er Serverfehler Installation / Updates von JTL-Shop 13
Steuerklassen prüfen nach Update auf JTL-Wawi 1.9 JTL-Wawi 1.9 1
Neu Lagerkommentar von Stücklistenartikel auf Lager-Packliste ausgeben Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Artikel soll laut Wawi auf der Pickliste sein. Ist er er aber nicht. JTL-Wawi 1.9 1
Neu Auftragsdatum anstatt Versanddatum auf Rechnung Arbeitsabläufe in JTL-Wawi 1
Neu Fehlermeldung nach update auf 5.5.2 JTL-Shop - Fehler und Bugs 4
Neu Amazon Lister 2.0 - Status auf "Wartet auf Hochladen" seit über einer Woche Amazon-Lister - Fehler und Bugs 7
Neu Zweites Bild auf Google Shopping Export mappen Plugins für JTL-Shop 0

Ähnliche Themen