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

Ahok

Gut bekanntes Mitglied
11. September 2023
301
11
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.

Sehr aktives Mitglied
15. Februar 2023
166
65
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
8.245
2.446
Berlin
Firma
css-umsetzung
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: wo0dle und Ahok

Ahok

Gut bekanntes Mitglied
11. September 2023
301
11
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 Versandschnittstelle DPD Meta - wofür kann man diese nutzen? JTL-ShippingLabels - Ideen, Lob und Kritik 3
Neu kann man JTL POS alleine nutzen für 29 Euro? Einrichtung / Updates von JTL-POS 0
Neu Kann man mit JTL Gebrauchtware verkaufen? User helfen Usern - Fragen zu JTL-Wawi 8
Neu Wawi Synchronisation mit JTL Shop nicht möglich! seit 3 Stunden was kann man machen? Onlineshop-Anbindung 1
Neu Wo kann ich in JTL das Datum sehen, an dem eine Bestellung als bezahlt bestätigt wurde? User helfen Usern - Fragen zu JTL-Wawi 1
JTL Wawi App Registrierung kann nicht gelöscht werden JTL-Wawi App 11
Neu Kann die Verkaufsstatistik auch den aktuellen Bestand angeben? User helfen Usern - Fragen zu JTL-Wawi 1
Neu hood.de - Wie kann ich Dateien (z.B. Sicherheitsdatenblatt) automatisch einbinden? Einrichtung und Installation von JTL-eazyAuction 1
Neu JERA kann keine Conrad-Erlöse aus JTL importieren, JTL-SCX importiert keine Conrad-Rechnungen JTL-ShippingLabels - Fehler und Bugs 3
Neu Wo kann ich mich über JTL Kundencenter beschweren? 20 Minuten Lang einen Bug im Ticket dokumentiert, und am Ende "ein Fehler ist aufgetreten" Smalltalk 3
Neu DPD: YourInternalID 28: (1) Strasse - Postleitzahl - Ort kann nicht zugeordnet werden. Evtl. liegt ein Schreibfehler in der Adresse vor. JTL-ShippingLabels - Fehler und Bugs 0
Bestand anderer Kinderartikel wird in Artikelstammdaten mit angezeigt – wie kann man das deaktivieren? JTL-Wawi 1.11 2
Neu 1.11.4 Programmstart bricht ab, Fehlerprotokoll kann nicht geschrieben werden User helfen Usern - Fragen zu JTL-Wawi 0
Extension Store: Kann Kompatibiltität zu Wawi 1.11 nicht einstellen JTL-Wawi 1.11 6
Neu Wo ist der Worker Status hin? Bei mir ist in Version 1.11.4 nicht mehr zu finden? User helfen Usern - Fragen zu JTL-Wawi 7

Ähnliche Themen