In Diskussion Workflow für Erinnerungen an bevorstehende Lieferungen

STH

Sehr aktives Mitglied
23. Dezember 2020
190
25
Nachdem ich auf dieses Thema gestoßen bin: https://forum.jtl-software.de/threads/erinnerung-an-bevorstehende-lieferung.187237/ wollte ich ebenfalls eine Lösung für uns basteln.
Ich konnte leider keine Möglichkeit finden, alle noch offenen Aufträge mit zukünftigem Lieferdatum in einer bestimmten Zeitspanne zu finden, da immer ein einzelnes Auftragsobjekt geprüft wird in den Workflows.
Nach langem hin und her probieren, habe ich das ganze nun per direkter SQL Abfrage + Mailversand via Powershell und Windows Aufgabenplaner gelöst.

Es wäre aber schön, wenn es solch eine Möglichkeit auch WaWi nativ gäbe. Mir ist schon klar, dass es dann ein manueller Workflow dafür notwendig ist, der wieder von einem externen Tool gestartet werden muss, da Workflows für Aufträge überlicherweise einen Trigger brauchen.

Wenn jemand Interesse an der Lösung hat, dann teile ich sie hier gerne. Wird verwenden GMAIL als Mailprovider in dem Beispiel.


# --- JTL DATENBANK KONFIGURATION ---
$SQLServer = "EUERSERVERNAME\JTLWAWI"
$Database = "eazybusiness"
$SQLUser = "sa"
$SQLPassword = "EUERDBPASSWORT"

# --- ZEITSPANNE FÜR DIE PRÜFUNG ---
$DaysAhead = 14
$MaxDaysOverdue = 60

# --- E-MAIL / SMTP KONFIGURATION ---
$SMTPServer = "smtp-relay.gmail.com"
$SMTPPort = 587
$MailFrom = "ABSENDEREMAIL"
$MailTo = "EMPFAENGERMAIL1 ", "EMPFAENGERMAIL2"
$SMTPUser = "ABSENDERBENUTZERNAME"

# --- GMAIL AUTHENTIFIZIERUNG ---
$secpasswd = ConvertTo-SecureString "APPPASSWORT" -AsPlainText -Force

# --- SQL ABFRAGE (Filter: Lieferdatum in den nächsten X-definierten Tagen, maximal Y-Tage über dem Datum drüber) ---
$SqlQuery = @"
SELECT
A.cAuftragsNr AS [Auftragsnummer],
ISNULL(Adr.cFirma, '') AS [Firma],
ISNULL(Adr.cName, '') + ', ' + ISNULL(Adr.cVorname, '') AS [Kunde],
CONVERT(VARCHAR(10), A.dVoraussichtlichesLieferdatum, 104) AS [Vorauss. Lieferdatum],
DATEDIFF(day, GETDATE(), A.dVoraussichtlichesLieferdatum) AS [TageRest]
FROM
Verkauf.tAuftrag A
LEFT JOIN
Verkauf.tAuftragAdresse Adr ON A.kAuftrag = Adr.kAuftrag AND Adr.nTyp = 1
WHERE
A.nStorno = 0
AND A.nKomplettAusgeliefert = 0
-- Filtert: Von minus $MaxDaysOverdue (Vergangenheit) bis plus $DaysAhead (Zukunft)
AND DATEDIFF(day, GETDATE(), A.dVoraussichtlichesLieferdatum) BETWEEN -$MaxDaysOverdue AND $DaysAhead
ORDER BY
A.dVoraussichtlichesLieferdatum ASC
"@

# Daten abrufen
$ConnectionString = "Server=$SQLServer;Database=$Database;User Id=$SQLUser;Password=$SQLPassword;Encrypt=False"
$Connection = New-Object System.Data.SqlClient.SqlConnection($ConnectionString)
$Command = New-Object System.Data.SqlClient.SqlCommand($SqlQuery, $Connection)
$DataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter($Command)
$DataTable = New-Object System.Data.DataTable

try {
$Connection.Open()
$null = $DataAdapter.Fill($DataTable)
$Connection.Close()

if ($DataTable.Rows.Count -gt 0) {
Write-Host "$($DataTable.Rows.Count) Aufträge gefunden. Bereite E-Mail vor..." -ForegroundColor Green

$HTMLRows = ""
foreach ($Row in $DataTable.Rows) {
$tageRest = [int]$Row['TageRest']

# Standard-Style für normale Zeilen
$rowStyle = ""
$statusErgaenzung = ""

# WENN DIE TAGE NEGATIV SIND -> ROT MARKIEREN
if ($tageRest -lt 0) {
$rowStyle = "style='background-color: #ffe6e6; color: #b30000; font-weight: bold;'"
$verspaetung = [math]::Abs($tageRest)
$statusErgaenzung = " <span style='font-size: 11px; color: #cc0000; font-weight: normal;'><br>⚠️ SEIT $verspaetung TAGEN ÜBERFÄLLIG</span>"
}

# HTML-Zeile zusammenbauen (Style wird dynamisch angewendet)
$HTMLRows += "<tr $rowStyle>
<td>$($Row['Auftragsnummer'])</td>
<td>$($Row['Firma'])</td>
<td>$($Row['Kunde'])</td>
<td>$($Row['Vorauss. Lieferdatum'])$statusErgaenzung</td>
</tr>"
}

# HTML-Mail-Inhalt
$MailBody = @"
<html>
<head>
<style>
table { border-collapse: collapse; width: 100%; font-family: Arial, sans-serif; margin-top: 15px; }
th { background-color: #1c64a3; color: white; padding: 10px; text-align: left; font-size: 14px; }
td { border: 1px solid #dddddd; padding: 8px; font-size: 13px; }
tr:nth-child(even) { background-color: #f9f9f9; }
body { font-family: Arial, sans-serif; color: #333333; line-height: 1.5; }
</style>
</head>
<body>
<p>Hallo SHOP-Team,</p>
<p>Folgende terminisierte Aufträge stehen zur Auslieferung an oder sind bereits <strong>überfällig</strong>. Bitte prüft die Rechnungserstellung und bereite den Versand vor:</p>
<table>
<tr>
<th>Auftragsnummer</th>
<th>Firma</th>
<th>Kunde</th>
<th>Vorauss. Lieferdatum</th>
</tr>
$HTMLRows
</table>
<br>
<p><i>Dies ist eine automatische Benachrichtigung aus der JTL-Datenbank.</i></p>
</body>
</html>
"@

$gmailCred = New-Object System.Management.Automation.PSCredential ($SMTPUser, $secpasswd)

$SendParams = @{
SmtpServer = $SMTPServer
Port = $SMTPPort
From = $MailFrom
To = $MailTo
Subject = "Erinnerung: Fällige JTL-Auslieferungen"
Body = $MailBody
BodyAsHtml = $true
Encoding = [System.Text.Encoding]::UTF8
UseSsl = $true
Credential = $gmailCred
}

Send-MailMessage @SendParams
Write-Host "E-Mail erfolgreich gesendet!" -ForegroundColor Green

} else {
Write-Host "Keine fälligen oder überfälligen Aufträge gefunden. Keine Mail gesendet." -ForegroundColor Yellow
}
}
catch {
Write-Error "Fehler beim Ablauf: $_"
}
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Workflow zum ändern des Amazon-Bestandes JTL-Workflows - Ideen, Lob und Kritik 0
Neu JTL-Shop 5.5 – „Rechnung nicht beilegen“ per Workflow anhand der Auftragsposition erkennen User helfen Usern - Fragen zu JTL-Wawi 1
In Diskussion Kundengruppe nach Umsatz (SQL in Workflow) JTL-Workflows - Ideen, Lob und Kritik 5
In Diskussion Workflow bei fehlerhaften Bankabgleich JTL-Workflows - Ideen, Lob und Kritik 4
Neu Lagerkommentar 1 per Workflow füllen User helfen Usern - Fragen zu JTL-Wawi 6
Neu Biete: KI-gestützte Produktdatenoptimierung für JTL-Wawi (Zero-Touch, mit Faktencheck) Dienstleistung, Jobs und Ähnliches 2
Neu Suche Setup-Datei / Installer für JTL-Wawi 1.6 (1.6.48.0) JTL-Wawi 1.6 1
Neu Ringscanner mit Akku zu verkaufen (für das WMS) Smalltalk 1
In Wawi 2.0.6 Kommentar 1 und Kommentar 2 für Lagerbestände von Kindartikeln desselben Vaterartikels nicht mehr über Vaterartikel pflegbar JTL-Wawi 2.0 4
Neu Identische Aufträge übernimmt nur für einen Auftrag die Kartonage JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Neu Merkmal oder Attribut für Produktdetailseite und Strukturierte Daten Betrieb / Pflege von JTL-Shop 2
Neu Plugin: Infinite Scroll / „Mehr laden“ für JTL-Shop 5 – einmalige Lizenz, kein Abo Plugins für JTL-Shop 0
Exportvorlage ZUGFeRD für Deutsche Bahn JTL-Wawi 1.11 1
Neu System für Ebay Artikelmerkmale - warum ist das so wichtig? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Kapazitäten für anstehenden Auftragsspitzen Dienstleistung, Jobs und Ähnliches 1
Neu Ebay.com: Mehrfaches Dropdown-Menü für den Artikelzustand eBay-Anbindung - Fehler und Bugs 0
Neu Shipping 2.0 ist ein Grund für kleine Shops JTL zu verlassen bzw. gar nicht erst mit JTL anzufangen JTL-ShippingLabels - Ideen, Lob und Kritik 25
Wawi nur für ebay JTL-Wawi 2.0 2
Neu Exportvorlage für Shopify Schnittstellen Import / Export 1
Versandmail für Kaufland abstellen kaufland.de - Anbindung (SCX) 6
Neu 💚 Plugin: DZM Bonus Plus - das Treueprogramm für deinen JTL-Shop Plugins für JTL-Shop 12
Neu Stücklisten auf Vorlagen für Picklisten formatieren User helfen Usern - Fragen zu JTL-Wawi 0
Neu 🔥 𝐍𝐮𝐫 𝟓× verfügbar 𝟓𝟎% 𝐑𝐚𝐛𝐚𝐭𝐭 auf dein Besucherticket für die kommende JTL-Connect am 02.10.2026 in Köln Dienstleistung, Jobs und Ähnliches 0
Neu 💚 Plugin: DZM Agentic Plus - dein Shop wird für KI-Agenten lesbar und abfragbar Plugins für JTL-Shop 0
Neu Abgleiche für zweiten Mandanten bei Worker-Neustart deaktiviert JTL-Wawi - Fehler und Bugs 0
Neu Eigenen JTL-SCX-Marktplatzkanal für Multi-Vendor-Marktplatz erstellen – Erfahrungen gesucht Einrichtung und Installation von JTL-eazyAuction 3
Neu PPWR für Importeure aus dem Nicht-EU-Ausland Business Jungle 2
Neu 🚨 Sicherheitswarnung für JTL-Shop-Betreiber: Manipulation des Checkout-Prozesses durch externes JavaScript (Magecart- / Payment-Skimmer) Betrieb / Pflege von JTL-Shop 11
Neu Abschaltung Bewertungserinnerung für spezifische Kunden Allgemeine Fragen zu JTL-Shop 0
Neu Suche 10–15 JTL-Shops für kostenlose JTL-Shop-Analyse (verschiedene Branchen) Dienstleistung, Jobs und Ähnliches 0
Neu Wir suchen Mitstreiter für ein gemeinsames Konfigurator-Projekt Dienstleistung, Jobs und Ähnliches 0
Neu Wir suchen Mitstreiter für ein gemeinsames Konfigurator-Projekt User helfen Usern - Fragen zu JTL-Wawi 7
Neu Wie stelle ich Retouren in JTL für DPD ein? JTL-ShippingLabels - Ideen, Lob und Kritik 1
Neu JTL Shop Plugin - BD Automatisierter Widerruf (Von Händler für Händler - Schluss mit Mail-Chaos & Spam-Sorgen!) Plugins für JTL-Shop 0
Wroker macht keinen abgleich für Kaufland JTL-Wawi 2.0 8
Neu Beta-Tester gesucht: Produktdaten aus Artikelfotos schneller für JTL/CSV vorbereiten Dienstleistung, Jobs und Ähnliches 0
Neu Kundengruppeneinstellungen für Mindestabnahme und Abnahmeintervall löschen User helfen Usern - Fragen zu JTL-Wawi 1
Neu Installationsdatei für JTL‑Wawi 1.9.6.5 Installation von JTL-Wawi 2
Wie lange braucht ihr aktuell für die Anlage eines neuen Artikels? JTL-Wawi App 3
Neu kostenlos: DHL Sendungsverfolgung für JTL-Wawi – Web-Dashboard mit Frühwarnsystem Schnittstellen Import / Export 0
In Diskussion Tool für Abrechnung von Fulfillment Dienstleistungen Arbeitsabläufe im Fulfillment Network 0
Neu Widerrufsbutton für JTL-Shop 4 Allgemeine Fragen zu JTL-Shop 17
Neu Keine Labels für Warenpost international über Packtisch JTL-ShippingLabels - Fehler und Bugs 8
Neu Laut Backend Shop Update für Shop 5.71 - Download nicht zu finden? Betrieb / Pflege von JTL-Shop 3
Neu Meta Shop seit September 2025: JTL-Lösung für neue Checkout-URL gesucht Allgemeine Fragen zu JTL-Shop 0
Angebliche externe Aufträge "für Rechnungserstellung freigeben" und Rechnungen erstellen. Gibt es dazu eine akzeptable Erklärung von JTL? JTL-Wawi 1.11 1
Neu Artikelname & Beschreibung angepasst für jeweiligen Marktplatz Arbeitsabläufe in JTL-Wawi 1
Neu OnFinds: KI-Suche für JTL-Shop mit fairer Abrechnung nach Artikelanzahl. 30 Tage kostenlos testen Plugins für JTL-Shop 11
API 2.1 für OnPrem? JTL-Wawi 2.0 6
Neu Dummy-ID oder Freiposition für Angebot mit mehrzeiliger Beschreibung JTL-Wawi - Ideen, Lob und Kritik 7

Ähnliche Themen