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

Ahok

Gut bekanntes Mitglied
11. September 2023
273
10
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.043
2.298
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
273
10
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 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
Beantwortet SalesOrderPosition.AmazonCustomJSON kann nicht interpretiert werden User helfen Usern - Fragen zu JTL-Wawi 1
Neu Kann man keine Testlizenzen mehr archivieren? Allgemeine Fragen zu JTL-Shop 0
DHL 4.0 Absenderreferenz kann nicht gespeichert werden JTL-Wawi 1.11 1
Kann ich mit dieser SQL Version die neue WaWi 1.11.1 installieren? JTL-Wawi 1.11 2
Neu Wawi 1.10 weigert sich zu starten und 1.11 kann man nicht downloaden JTL-Wawi - Fehler und Bugs 4
Neu JTL Wawi 1.10.14.3 / Unbehandelte Ausnahme im WaWi-Error-Log / Die Sammlung wurde geändert. Der Enumerationsvorgang kann möglicherweise .... JTL-Wawi - Fehler und Bugs 1
Neu Kann man das Shop-Guthaben von Kunden per Workflow beeinflussen? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Kunde kann sich im Checkout-Prozess nicht anmelden bzw. bleibt nicht angemeldet. Installation / Updates von JTL-Shop 11
Artikel kann trotz Lagerbestand nicht reserviert werden Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Von 0.99923 auf aktuell - mir fehlen die 1.5.52. und die 1.8.10.0 Installation von JTL-Wawi 1
Neu Dinge die mir fehlen.... JTL-Shop - Ideen, Lob und Kritik 3

Ähnliche Themen