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

Ahok

Aktives Mitglied
11. September 2023
249
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.

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
7.797
2.199
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: wo0dle und Ahok

Ahok

Aktives Mitglied
11. September 2023
249
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 Wo kann ich folgendes Wort übersetzen? Allgemeine Fragen zu JTL-Shop 2
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 Kann ich irgendwie ausgeben, welches JTL-Konto das Dokument gedruckt hat? Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 11
Kann keinen neuen Export für Google Shopping mehr erstellen Allgemeine Fragen zu JTL-Shop 4
Neu Kann nicht Updaten... darum geht POS nicht mehr (1.5.19) Installation von JTL-Wawi 22
Neu Wie kann man einen Artikel auf einen bestehenden Artikel bei Amazon aufschalten? Amazon-Lister - Ideen, Lob und Kritik 4
Neu Beleg kann nicht durch TSE signiert werden JTL-POS - Fehler und Bugs 3
Neu Wie kann ich den Token manuell hinzufügen? Allgemeine Fragen zu JTL-Shop 2
Bestellung kann nicht per Mail verschickt werden JTL-Wawi 1.10 1
Neu JTL Shop 5.5.1 Lieferland kann bei abweichender Lieferadresse nicht ausgewählt werden JTL-Shop - Fehler und Bugs 9
SCX -> ausländische Marktplätze zB Kaufland, Conrad - wie kann ich Titel und Beschreibung auf italienisch übergeben (oder generell Sprache wechseln) kaufland.de - Anbindung (SCX) 0
Neu 5.5.1 bzw. 5.5.2 kann nicht installiert werden Installation / Updates von JTL-Shop 8
Neu HILFÄÄÄÄ - Gibt es hier jemand der uns helfen kann Schlussrechnungen mit ausgewiesener MwSt bei den Anzahlungen User helfen Usern - Fragen zu JTL-Wawi 32
Wie kann man eine Vorkasse-Rechnung / Proforma Rechnung nach Bezahlung als Rechnung ausweisen? JTL-Wawi 1.9 11
Neu Kann die css Regel nicht ansprechen Allgemeine Fragen zu JTL-Shop 9
Neu Wie kann ich Zubehör, welches beim DropshippingLieferanten UND im Standardlager verfügbar ist dropshippen, Wenn der Hauptartikel Dropshipping ist? Arbeitsabläufe in JTL-Wawi 5
Neu Wie kann man die automatische Übernahme der letzten (falschen) Versandart verhindern? Allgemeine Fragen zu JTL-Shop 2
Neu Wie kann es sein, dass ein "Rechnung erstellt" - Workflow 3 Tage später nochmal ausgelöst wird? User helfen Usern - Fragen zu JTL-Wawi 5
Neu JTL-Connector: Wie kann man Bestände nur von einem Lager (WMS) übertragen? WooCommerce-Connector 3
Neu Ich habe eben einen neuen Shop erstellt und alle Artikel übertragen, aber leider werden mir bei den Versandarten die Versandklassen nicht angezeigt User helfen Usern - Fragen zu JTL-Wawi 1
Kunde haut mir die E-Rechnung um die Ohren. Länge des BT-131 sollte 2 Nachkommastellen haben JTL-Wawi 1.9 6
offene Postenliste zeigt mir keine offenen Posten an, obwohl Rechnungen offen sind ? JTL-Wawi 1.9 0
Neu Shop 5.5.1: Lieferadresse - Lieferland - bei mir leer? JTL-Shop - Fehler und Bugs 4
Neu JTL mit Shopify für Etsy anstatt JTL mit Unicorn2 - hat das jemand gemacht? Anbindung, bestehende Artikel mappen? Multishop? Shopify-Connector 1
Neu Hat jemand Erfahrung mit der Anbindung von TikTok Shop über Shopify? Einrichtung und Installation von JTL-eazyAuction 0
Gelöst Kompatibilität von JTL-POS mit iMin Swan 2 – hat jemand Erfahrung? JTL-POS - Fragen zu Hardware 1
Neu Nutzt hier jemand das TECHNIK Template von Salepix? Templates für JTL-Shop 13

Ähnliche Themen