In Diskussion Kann mir jemand bitte diesen Code erklären?

Ahok

Mitglied
11. September 2023
144
8
Ich bin Anfänger und habe große Schwierigkeiten ins Thema Workflows reinzukommen. Ich übe das ganze anhand dieses Beispiels: https://guide.jtl-software.com/jtl-wawi/jtl-workflows/workflow-doppelte-kunden-pruefen/
Ich habe dieses Beispiel in JTL eingepflegt und es funktioniert, nur leider verstehe ich nicht warum.
Könnte mir bitte jemand Zeile für Zeile diesen Code erklären? Ich finde die Erklärung auf der Seite etwas dürftig.
Vor allem frage ich mich auch warum immer Vorgang. oder Vorgang.Adresse. dort steht, anstatt einfach nur InterneKundennummer oder EMail. Und warum steht {{ Vorgang.Adresse.EMail }} in Anführungszeichen?


Code:
{% capture query %}

SELECT cKundenNr FROM Kunde.lvKundenDaten

WHERE kKunde != {{ Vorgang.InterneKundennummer }}
AND
(
    ( ISNULL(cMail,'') != '' AND  cMail = '{{ Vorgang.Adresse.EMail }}' )
    OR ( ISNULL(cTel,'') != '' AND cTel = '{{ Vorgang.Adresse.Telefon }}' )
    OR (
        (ISNULL(cName,'') != '' AND cName = '{{ Vorgang.Adresse.Nachname }}')
        AND  (ISNULL(cOrt,'') != '' AND cOrt ='{{ Vorgang.Adresse.Ort }}')
        AND  (ISNULL(cPLZ,'') != '' AND cPLZ = '{{ Vorgang.Adresse.PLZ }}')
    )
)

{% endcapture -%}

\
{% assign result = query | DirectQueryScalar %}

\
{{ result }}
 

kelvin.

Gut bekanntes Mitglied
15. Februar 2023
161
62
Frankfurt
Zeile 1: Start der capture Funktion
Diese hinterlegt die SQL Abfrage in die Variable query.
Zeile 17: Ende capture Funktion
Wenn du {{ query }} ausgibt, wird in der Ausgabe der Inhalt zwischen capture und endcapture wiedergegeben.

Zeile 20: Die Variable result wird der Wert vom Ergebnis der SQL Abfrage query mittels dem Filter DirectQueryScalar zugewiesen.

Zeile 23: Wiedergabe der Variable result, die eine Kundennummer ist, falls es einen doppelt angelegten Kunden existiert.

SQL Abfrage
Die Idee: Man prüft, ob der Kunde, der gerade erstellt ist in der Datenbank schonmal vorkommt.
Dabei wird nachgeschaut, ob es einen Kunden mit der gleichen EMail oder mit der gleichen Telefonnummer oder der Nachname in Kombination mit Ort und PLZ existiert.
Zeile 3: Sie Abfrage gibt die Spalte cKundenNr aus der Tabelle Kunde.lvKundenDaten wieder
Zeile 5: Mit der Bedingung, dass die interne Kundennummer (kKunde) nicht mit der internen Nummer vom neu erstellten Kunden übereinstimmt.
Zeile 8: Und dass die Email nicht leer ist und nicht mit der Email vom neu erstellten Kunden übereinstimmt.
Zeile 9: Oder dass die Telefonnummer nicht leer ist und nicht mit der Telefonnummer vom neu erstellten Kunden übereinstimmt.
Zeile 10: Oder dass der Nachname und Ort und PLZ nicht leer ist und nicht mit der Nachname und Ort und PLZ vom neu erstellten Kunden übereinstimmt.

{{ Vorgang.InterneKundennummer }}, {{ Vorgang.Adresse.EMail }}, {{ Vorgang.Adresse.Telefon }}, {{ Vorgang.Adresse.Nachname }}, {{ Vorgang.Adresse.Ort }}, {{ Vorgang.Adresse.PLZ }} sind Variablen von dem neu erstellten Kunden.

Die Variablen {{ Vorgang.Adresse.EMail }}, {{ Vorgang.Adresse.Telefon }}, {{ Vorgang.Adresse.Nachname }}, {{ Vorgang.Adresse.Ort }}, {{ Vorgang.Adresse.PLZ }} werden in Anführungszeichen geschrieben, weil diese Werte in SQL syntaktisch Strings sind.
{{ Vorgang.InterneKundennummer }} ist ein Integer.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.091
1.854
Berlin
Ach das ist ja meiner, das ist aber lange her, das ich den zusammengeschustert habe :)

Ja das ist gut erklärt, man muss mein dem Vergleich ja immer auch prüfen ob in dem Feld etwas drin um es zu zu vergleichen, weil es nur dann Sinn machen würde. dadurch sieht das etwas wild aus.
Jetzt Jahre später würde ich den vermutlich etwas anders schreiben aber es läuft ja soweit ich weiß auch in aktuellen Versionen noch.
 
  • Gefällt mir
Reaktionen: Ahok

Ahok

Mitglied
11. September 2023
144
8
Zeile 1: Start der capture Funktion
Diese hinterlegt die SQL Abfrage in die Variable query.
Zeile 17: Ende capture Funktion
Wenn du {{ query }} ausgibt, wird in der Ausgabe der Inhalt zwischen capture und endcapture wiedergegeben.

Zeile 20: Die Variable result wird der Wert vom Ergebnis der SQL Abfrage query mittels dem Filter DirectQueryScalar zugewiesen.

Zeile 23: Wiedergabe der Variable result, die eine Kundennummer ist, falls es einen doppelt angelegten Kunden existiert.

SQL Abfrage
Die Idee: Man prüft, ob der Kunde, der gerade erstellt ist in der Datenbank schonmal vorkommt.
Dabei wird nachgeschaut, ob es einen Kunden mit der gleichen EMail oder mit der gleichen Telefonnummer oder der Nachname in Kombination mit Ort und PLZ existiert.
Zeile 3: Sie Abfrage gibt die Spalte cKundenNr aus der Tabelle Kunde.lvKundenDaten wieder
Zeile 5: Mit der Bedingung, dass die interne Kundennummer (kKunde) nicht mit der internen Nummer vom neu erstellten Kunden übereinstimmt.
Zeile 8: Und dass die Email nicht leer ist und nicht mit der Email vom neu erstellten Kunden übereinstimmt.
Zeile 9: Oder dass die Telefonnummer nicht leer ist und nicht mit der Telefonnummer vom neu erstellten Kunden übereinstimmt.
Zeile 10: Oder dass der Nachname und Ort und PLZ nicht leer ist und nicht mit der Nachname und Ort und PLZ vom neu erstellten Kunden übereinstimmt.

{{ Vorgang.InterneKundennummer }}, {{ Vorgang.Adresse.EMail }}, {{ Vorgang.Adresse.Telefon }}, {{ Vorgang.Adresse.Nachname }}, {{ Vorgang.Adresse.Ort }}, {{ Vorgang.Adresse.PLZ }} sind Variablen von dem neu erstellten Kunden.

Die Variablen {{ Vorgang.Adresse.EMail }}, {{ Vorgang.Adresse.Telefon }}, {{ Vorgang.Adresse.Nachname }}, {{ Vorgang.Adresse.Ort }}, {{ Vorgang.Adresse.PLZ }} werden in Anführungszeichen geschrieben, weil diese Werte in SQL syntaktisch Strings sind.
{{ Vorgang.InterneKundennummer }} ist ein Integer.
Danke für die ausführliche Erklärung. Das hat mir sehr weitergeholfen. :thumbsup:
 
  • Gefällt mir
Reaktionen: aaha
Ähnliche Themen
Titel Forum Antworten Datum
Neu Kann man manuell versendet setzen und Shipping Labels nutzen? JTL-ShippingLabels - Ideen, Lob und Kritik 1
WYSIWYG kann kein HTML mehr einstellen ? Einrichtung JTL-Shop5 0
Beantwortet Doppelt erstellt, kann man nicht löschen =') Smalltalk 0
Neu Wie kann ich verhindern, dass ein Auftrag den verfügbaren Lagerbestand beeinflusst? JTL-Wawi - Ideen, Lob und Kritik 1
Update 1.9.4.6 Fehlerhafte Adresse von Amazon kann nicht mehr bearbeitet werden. JTL-Wawi 1.9 3
Neu Kann ich das alte EVO-Template löschen? Templates für JTL-Shop 2
Listenansicht kann nicht mehr eingestellt werden (außer für Admins) JTL-Wawi 1.9 2
Neu pf_amazon_lagerbewegung - kann man diese Tabelle leeren User helfen Usern - Fragen zu JTL-Wawi 0
Neu DropShipping - Artikel kann nicht geliefert werden - aus Bestellung entfernen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Farbe setzen funktioniert nach dem Updaten anders als früher. Was kann ich dagegen tun? Arbeitsabläufe in JTL-Wawi 0
Neu [Wawi 1.7]Rechnung drucken - Vorlage fehlt / kann nicht geändert werden JTL-Wawi - Fehler und Bugs 0
Neu JTL WAWI RESTAPI Sales Order kann nicht erstellt werden User helfen Usern - Fragen zu JTL-Wawi 0
Gelöst Kann bei Wawi kein neues Zertifikat für den POS Server erstellen Einrichtung / Updates von JTL-POS 5
Neu WMS Mobile picken - wie kann ich Pickreihenfolge umdrehen ? User helfen Usern - Fragen zu JTL-Wawi 2
Neu JTL-POS KAsse - exportiert nichts an Wawi und kann keine Aufträge aufrufen JTL-POS - Fehler und Bugs 3
In Bearbeitung Kann man die Buchungsdaten noch anders exportieren? Allgemeine Fragen zu JTL-POS 2
JTL-APP Auftrag kann nicht Festgeschrieben werden. JTL-Wawi App 0
Neu Suche Ameisen Export, der mir alle aktiven Amazon Angebote ausgibt. JTL-Ameise - Fehler und Bugs 3
Neu Nutzt schon jemand den Lister 2.0 erfolgreich? Amazon-Lister - Ideen, Lob und Kritik 4
Neu Dringende Hilfe benötigt: JTL-Connector Fehler beim Shopify-Abgleich trotz "200 OK" - Hat jemand eine Lösung? Shopify-Connector 0
Neu Fehlermeldung im Log - hat jemand einen Anhaltspunkt in welche Richtung man suchen muss? JTL-Shop - Fehler und Bugs 8
Neu Fehlermeldung im Log - jemand ne Idee? JTL-Shop - Fehler und Bugs 0
Neu hat noch jemand eine Fritzbox 7590 (AX) übrig zum Verkauf ? Smalltalk 6

Ähnliche Themen