Neu Ausgabe mehrerer Tracking IDs bei Rechnungsversand

PSMario

Neues Mitglied
28. Mai 2025
3
0
Guten Morgen,

mein erster Beitrag. Wir nutzen JTL-Wawi seit gut einem Jahr. Es wurde uns installiert und grob eingerichtet. Inklusive Fulfillment Anbindung. Nun möchte ich so langsam selber Einstellungen anpassen. Dabei stoße ich immer wieder an Grenzen.
Im Moment ist es so, dass nach dem Versand die Sendungsnummern für einen Auftrag in der Wawi zu sehen sind. Danach erstelle ich die Rechnung. Dabei wird die Rechnung als PDF gespeichert und automatisch eine Mail mit der PDF verschickt. In dieser ist auch die Sendungsnummer mit Link zu sehen. Aber nur für ein Paket. Sollte der Auftrag aus mehreren Paketen bestehen, wird nur das erste Paket angezeigt. Folgende Einstellungen sind beim Mailversand hinterlegt:
Textformat:
Code:
{% capture trackingidsql %} SELECT TOP(1) tVersand.cIdentCode FROM dbo.tBestellung JOIN dbo.tLieferschein ON tLieferschein.kBestellung = tBestellung.kBestellung JOIN dbo.tVersand ON tVersand.kLieferschein = tLieferschein.kLieferschein WHERE tRechnung_kRechnung = '{{ Report.InternalId }}'{% endcapture -%}
{% assign trackingid = trackingidsql | DirectQueryScalar -%}
{% if {{trackingid} > 0 -%}{{ GlobalTexts.KB-Mails.Sendungsverfolgung.Deutsch }}
Ihr Link zur Sendungverfolgungsnummer (Tracking-ID): {{trackingid}}
https://nolp.dhl.de/nextt-online-public/en/search?piececode={{trackingid}}
{% else -%}{% endif -%}
HTML:
Code:
<tr>
                                                                                                                        {% capture trackingidsql %} SELECT TOP(1) tVersand.cIdentCode FROM dbo.tBestellung JOIN dbo.tLieferschein ON tLieferschein.kBestellung = tBestellung.kBestellung JOIN dbo.tVersand ON tVersand.kLieferschein = tLieferschein.kLieferschein WHERE tRechnung_kRechnung = '{{ Report.InternalId }}'{% endcapture -%}

                                            <td valign="top" class="bodyContent">
                                            {% assign trackingid = trackingidsql | DirectQueryScalar -%}
{% if {{trackingid} > 0 -%}{{ GlobalTexts.KB-Mails.Sendungsverfolgung.Deutsch }}
Ihr Link zur Sendungverfolgungsnummer (Tracking-ID):
<a href="https://nolp.dhl.de/nextt-online-public/en/search?piececode={{trackingid}}">{{trackingid}}</a>

{% else -%}{% endif -%}<br /><br />

Ich bin nur Anwender und eigentlich handwerklich unterwegs. Die Codes wurden damals mit heißer Nadel extern gestrickt. Und was die im Detail machen, kann ich nicht immer nachvollziehen.

Ich möchte jetzt eigentlich nur eine Schleife haben, die alle Pakete aufzeigt. Allerdings weiß ich nicht, wo genau und mit welchen Variablen ich das machen muss. Ähnlich Vorschläge aus dem Forum traue ich mir nicht umzusetzen bzw. haben keine Auswirkungen auf die Ausgabe. Könnt ihr mir vielleicht sagen, wo ich was einfügen muss.

Vielen lieben Dank

Gruß PSMario
 

Tacweb

Aktives Mitglied
13. März 2023
17
11
Ludwigshafen
Firma
Tacweb
Hi PSMario,

mit Select Top 1 lässt du nur das erste Ergebnis anzeigen.

Du musst mit einer Schleife ran wie du schon richtig erkannt hast:

Da die Pakete nicht in der Rechnungsmail vorhanden sind, musst du die Pakete per sql holen und dann mit der for schleife drüber loopen.
 

frankell

Sehr aktives Mitglied
9. September 2019
1.904
549
Flensburg
Hallo Mario,

den grundsätzlichen Weg der Formatierung kannst Du hier nachlesen:
https://guide.jtl-software.com/jtl-...direkter-datenbank-zugriff/#komplexe-abfragen

Ein weiterer Weg der Formatierung:
https://guide.jtl-software.com/jtl-...piele-fuer-dotliquid/#tabellenzeilen-tablerow

Was Deinen Code angeht, könnte der mit wenigen Anpassungen wie folgt auf mehr als eine Tracking-ID angepasst werden:

Code:
{% capture trackingidsql -%}
SELECT
    tVersand.cIdentCode
FROM
    dbo.tBestellung
    JOIN dbo.tLieferschein ON tLieferschein.kBestellung = tBestellung.kBestellung
    JOIN dbo.tVersand ON tVersand.kLieferschein = tLieferschein.kLieferschein
WHERE
    tRechnung_kRechnung = {{ Report.InternalId }}
{% endcapture -%}
{% assign trackingid = trackingidsql | DirectQuery -%}
{% if trackingid != '' -%}
<tr><td>{{ GlobalTexts.KB-Mails.Sendungsverfolgung.Deutsch }}</td></tr>
{% for item in trackingid.Daten -%}
<tr>
<td valign="top" class="bodyContent">Ihr Link zur Sendungverfolgungsnummer (Tracking-ID): <a href="https://nolp.dhl.de/nextt-online-public/en/search?piececode= {{ item.cIdentCode }}">{{ item.cIdentCode }}</a></td>
</tr>
{% endfor -%}
{% else -%}{% endif -%}

VG,
Frank
 

PSMario

Neues Mitglied
28. Mai 2025
3
0
Guten Morgen,

ich hatte mit Hilfe des Forums eine für mich funktionierende Lösung gebastelt (Try and Error). Nur die Abfrage "{% if {{trackingid} > 0 -%}{{ GlobalTexts.KB-Mails.Sendungsverfolgung.Deutsch }}" habe ich noch nicht drin. Da hat es mir die Formatierung immer zerschossen. Ich denke, dass das eine Fehlerabfrage oder so ist.

Grundsätzlich möchte ich immer gerne verstehen, was die einzelnen Befehle bewirken. Im Guide sind einige Beispiele aufgelistet. Leider habe ich noch keine (für mich übersichtliche und verständliche) Anleitung gefunden, was die Programmierung angeht.

@Frank: Mein jetziger Code sieht ähnlich aus. Ich habe nur "Paket" und nicht "Item" als Variable. Und ich lasse auch die Anzahl der Pakete mit ausgeben (im Forum gefunden).

Gibt es denn irgendwo eine Anleitung bzw. Beschreibung zur Programmierung. Also bei 0 startend? Wie gesagt, ich bin Handwerker und habe das letzte Mal vor ca. 30-35 Jahren programmiert. Da war das noch Basic und TurboPascal.

LG
Mario
 

frankell

Sehr aktives Mitglied
9. September 2019
1.904
549
Flensburg
Nimm mal bitte

Code:
{% if trackingid != '' -%}

anstelle

Code:
{% if {{trackingid} > 0 -%}

Grundsätzlich möchte ich immer gerne verstehen, was die einzelnen Befehle bewirken. Im Guide sind einige Beispiele aufgelistet. Leider habe ich noch keine (für mich übersichtliche und verständliche) Anleitung gefunden, was die Programmierung angeht.

Du könntest eine KI dazu nutzen, Dir Schritt für Schritt den Code zu erklären.

Gibt es denn irgendwo eine Anleitung bzw. Beschreibung zur Programmierung. Also bei 0 startend?

Leider nein. Also zumindest auf JTL-Seite nicht. Aber vielleicht gibt es im Netz (bspw. bei YouTube) ein Tutorial, das sich allgemein mit DotLiquid (oder zumindest Liquid) beschäftigt.
 

PSMario

Neues Mitglied
28. Mai 2025
3
0
Guten Morgen,

hab erstmal vielen Dank. Das wird dann für mich eine größere Baustelle, da ich noch nicht mit einer KI arbeite und mein Englisch so gut wie nicht vorhanden ist. Ich bleibe aber dran.

LG
Mario
 

frankell

Sehr aktives Mitglied
9. September 2019
1.904
549
Flensburg
Das wird dann für mich eine größere Baustelle, da ich noch nicht mit einer KI arbeite

Das ist wirklich simpel, Du wirst erstaunt sein. Einfach die jeweilige Website öffnen (https://chatgpt.com/, https://chat.mistral.ai/chat, https://gemini.google.com) und bspw. Folgendes eintippen:

"Erkläre mir bitte Schritt für Schritt diesen Code:
Code:
"

Du kannst selbstverständlich auch nachfragen oder darum bitten, langsamer zu machen. Was immer Du willst und was immer Du einen Menschen bitten würdest.

Du solltest nur niemals Zugangs- oder sonstige datenschutzrelevante Informationen preisgeben. Abgesehen davon: Go! Du kannst da nix kaputt machen, und es ist einfacher, als Du wahrscheinlich denkst.

[QUOTE="PSMario, post: 1291367, member: 105028"]
und mein Englisch so gut wie nicht vorhanden ist.
[/QUOTE]

Die KIs sprechen ganz normales Deutsch. :)