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

Ahok

Mitglied
11. September 2023
79
2
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
104
42
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
6.513
1.545
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
79
2
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 Wie kann ich im JTL-Shop einen Abwesenheitshinweis einstellen? Allgemeine Fragen zu JTL-Shop 1
Neu Wie kann ich eine Inventurliste als Excel- oder csv-Datei erstellen? User helfen Usern - Fragen zu JTL-Wawi 3
Wie kann ich eine Benachrichtigung bei einem Wareneingang auslösen mit einer Mail über die Artikel die eingebucht wurden JTL-Wawi 1.8 2
Neu Wie kann ich die vergebene Coupons sehen. Welche Kunde welchen Copoun Allgemeine Fragen zu JTL-Shop 0
Neu Woran kann es liegen, dass ein neu erstellter Connector-Verkaufskanal nicht in der Statusliste des Workers vorkommt? Shopify-Connector 2
Neu Wie kann ich Alt-Texte für Bilder an Shopify senden? Shopify-Connector 2
Neu syntaxfehler report.invoicebilltoaddress.country kann nicht interpretiert werden Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Wer kann bei uns ein EcoDMS einrichten? Dienstleistung, Jobs und Ähnliches 16
Neu TSE Modul wird nicht mehr erkannt, kann auch nicht wieder aktiviert werden, diverse Fehlermeldungen JTL-POS - Fehler und Bugs 0
In Bearbeitung Sunmi P2 kann keinen Barcode scannen JTL-POS - Fragen zu Hardware 5
Neu [Umfrage] - Was hälst du von Updates - Innovativ oder aufwendig? Wie kann es besser gehen? Installation / Updates von JTL-Shop 0
Neu Wie kann ich nicht mehr vorhandene ausländische USt-ID löschen? User helfen Usern - Fragen zu JTL-Wawi 0
Neu PayPal - Benachrichtungen über Zahlung -> EMail. Wo kann man den Betreff bearbeiten? User helfen Usern - Fragen zu JTL-Wawi 6
Neu JTL WAWI Icecat Anbindung - Wer kann einrichten? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wawi läuft, aber ein Rechner hat den Pfad zur Datenbank verloren, Mandant kann nicht ausgewählt werden User helfen Usern - Fragen zu JTL-Wawi 3
Neu Versandart kann nicht gelöscht werden User helfen Usern - Fragen zu JTL-Wawi 0
Neu Kann ich mit dem Connector arbeiten, wenn Woo durch eine Drittanbieter API mit Produkten versorgt wird? WooCommerce-Connector 2
Neu Variationswerte lassen sich nicht Löschen. Fehlermeldung: Der Artikel kann sich ggf. in einem inkonsistentem Zustand befinden JTL-Wawi - Fehler und Bugs 0
Neu Abgleich kann nicht durchgeführt werden Shopify-Connector 3
In Bearbeitung Bug: Divers-Artikel kann nicht umbenannt werden JTL-POS - Fehler und Bugs 2
Kategorie kann nicht gelöscht werden JTL-Wawi 1.8 6
JTL WAWI APP - Auftrag kann nicht geändert sein. JTL-Wawi App 4
Neu Kann ich bestimmte Artikel beim Wareneingang direkt auf einen Klärplatz buchen? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Neu Nutzt jemand Ratepay mit Shopware 6? Shopware-Connector 2
Neu EBIC mit Commerzbank hat das jemand? User helfen Usern - Fragen zu JTL-Wawi 11

Ähnliche Themen