Neu Wiederkehrende Aufgaben mit rekursivem Workflow automatisieren {JTL-Automation} (Video)

Manuel Pietzsch

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.874
1.047
Hückelhoven
Hi Freunde,

hier erkläre ich wie man einen Workflow baut, der regelmäßig zur gleichen Zeit ausgeführt wird.


Und hier die verwendeten Inhalte:

Erweiterte Eigenschaft "BewegungenHeute":


1615285210629.png

{% capture query -%}
DECLARE @kKunde AS INT = {{ Vorgang.InterneKundennummer }};
SELECT SUM(Anzahl)
FROM
(
SELECT COUNT(*) AS Anzahl FROM FulfillmentNetwork.ifReportLieferantenbestellungen(@kKunde)
UNION ALL
SELECT COUNT(*) AS Anzahl
FROM dbo.tRMRetoure
JOIN dbo.tSpracheUsed ON nStandard = 1
JOIN dbo.tRMRetourePos ON tRMRetoure.kRMRetoure = tRMRetourePos.kRMRetoure
JOIN FulfillmentNetwork.tFulfillerEinstellungen ON tRMRetoure.kKunde = tFulfillerEinstellungen.kKunde
LEFT JOIN dbo.tArtikel ON tRMRetourePos.kArtikel = tArtikel.kArtikel
LEFT JOIN dbo.tliefartikel ON tArtikel.kArtikel = tliefartikel.tArtikel_kArtikel
AND tFulfillerEinstellungen.kLieferant = tliefartikel.tLieferant_kLieferant
JOIN dbo.tRMGrundSprache ON tRMRetourePos.kRMGrund = tRMGrundSprache.kRMGrund
AND tSpracheUsed.kSprache = tRMGrundSprache.kSprache
LEFT JOIN dbo.tZustandSprache ON tRMRetourePos.kZustand = tZustandSprache.kZustand
AND tSpracheUsed.kSprache = tZustandSprache.kSprache
JOIN dbo.tBestellung ON tRMRetoure.kBestellung = tBestellung.kBestellung
WHERE DAY(tRMRetoure.dErstellt) = DAY(GETDATE())
AND MONTH(tRMRetoure.dErstellt) = MONTH(GETDATE())
AND YEAR(tRMRetoure.dErstellt) = YEAR(GETDATE())
AND tRMRetoure.kKunde = @kKunde
) AS U1
{% endcapture -%}
{{ query | DirectQueryScalar }}

Und hier der Code für die HTML Mail:

1615285468600.png

<style type="text/css">
.tg {border-collapse:collapse;border-spacing:0;border-color:#aaa;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-top-width:1px;border-bottom-width:1px;border-color:#aaa;color:#333;background-color:#fff;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-top-width:1px;border-bottom-width:1px;border-color:#aaa;color:#fff;background-color:#f38630;}
.tg .tg-0lax{text-align:left;vertical-align:top}
.tg .tg-dg7a{background-color:#FCFBE3;text-align:left;vertical-align:top}
.tg .tg-open{background-color:#ff8181;text-align:left;vertical-align:top}
.tg .tg-part{background-color:#fffe65;text-align:left;vertical-align:top}
</style>

<h3>Täglicher Wareneingangs- und Retourenbericht</h3>

<p>Wir senden Ihnen hiermit, die Tagesübersicht zu den gebuchten Wareneingängen und Retouren.</p>

{% capture query -%}
DECLARE @kKunde AS INT = {{ Vorgang.InterneKundennummer }};
SELECT cBezugsAuftragsNummer, kLieferantenBestellung FROM FulfillmentNetwork.ifReportLieferantenbestellungen(@kKunde) GROUP BY cBezugsAuftragsNummer, kLieferantenBestellung
{% endcapture -%}
{% assign Lieferantenbestellungen = query | DirectQuery %}
{% for item in Lieferantenbestellungen.Daten %}
<h5>Auftragsnummer: {{ item.cBezugsAuftragsNummer }}</h5>
<table class="tg">
{% capture query -%}
DECLARE @kKunde AS INT = {{ Vorgang.InterneKundennummer }};
SELECT kLieferantenBestellung,
cBezugsAuftragsNummer,
kLieferantenBestellungPos,
fMenge,
fMengeGeliefert,
fAnzahl,
cName,
cLieferantenArtNr,
cHinweis,
fMenge - fMengeGeliefert as fMengeOffen
FROM FulfillmentNetwork.ifReportLieferantenbestellungen(@kKunde) WHERE kLieferantenBestellung = {{item.kLieferantenBestellung}}
ORDER BY CASE WHEN fAnzahl > 0 THEN 3 WHEN fMengeGeliefert = 0 THEN 2 WHEN fMenge - fMengeGeliefert > 0 THEN 1 ELSE 0 END DESC
{% endcapture -%}
{% assign Positionen = query | DirectQuery -%}
<tr>
<th class="tg-0lax">ArtNr</th>
<th class="tg-0lax">Name</th>
<th class="tg-0lax">Bestellt</th>
<th class="tg-0lax">Insg. gebucht</th>
<th class="tg-0lax">Heute </th>
</tr>
{% assign tdClass = "tg-dg7a" -%}
{% for pos in Positionen.Daten -%}
<tr>
{% assign currentClass = tdClass %}
{% if pos.fMengeGeliefert == 0 -%}
{% assign currentClass = "tg-open" %}
{% elseif pos.fMengeOffen > 0 %}
{% assign currentClass = "tg-part" %}
{% endif -%}
<td class="{{currentClass}}">{{pos.cLieferantenArtNr}}</td>
<td class="{{currentClass}}">{{pos.cName}}</td>
<td class="{{currentClass}}">{{pos.fMenge | FormatNumber: 'N0', 'de-DE' }}</td>
<td class="{{currentClass}}">{{pos.fMengeGeliefert | FormatNumber: 'N0', 'de-DE'}}</td>
<td class="{{currentClass}}">{{pos.fAnzahl | FormatNumber: 'N0', 'de-DE'}}</td>
{% if tdClass == "tg-dg7a" -%}
{% assign tdClass = "tg-0lax" -%}
{% else -%}
{% assign tdClass = "tg-dg7a" -%}
{% endif -%}
</tr>
{% endfor -%}
</table>
{% endfor -%}

<table class="tg">
{% capture query -%}
DECLARE @kKunde AS INT = {{ Vorgang.InterneKundennummer }};
SELECT ROW_NUMBER() OVER (ORDER BY tRMRetoure.cRetoureNr) AS Nummer,
ISNULL(ISNULL(tliefartikel.cLiefArtNr, tArtikel.cArtNr), '') AS cArtikelnummer,
tRMRetoure.cRetoureNr AS cRetourennummer,
ISNULL(tBestellung.cInetBestellNr, tRMRetoure.cExternalNumber) AS cExterneAuftragsnummer,
tRMGrundSprache.cName AS cRueckgabegrund,
tZustandSprache.cName AS cArtikelzustand,
CASE WHEN LEN(ISNULL(tRMRetourePos.cGrundKommentar, '')) > 0
THEN tRMRetourePos.cGrundKommentar + CHAR(13) + CHAR(10)
ELSE ''
END
+ ISNULL(tRMRetourePos.cZustandKommentar, '') AS cKommentar,
tRMRetourePos.fAnzahl AS Menge
FROM dbo.tRMRetoure
JOIN dbo.tSpracheUsed ON nStandard = 1
JOIN dbo.tRMRetourePos ON tRMRetoure.kRMRetoure = tRMRetourePos.kRMRetoure
JOIN FulfillmentNetwork.tFulfillerEinstellungen ON tRMRetoure.kKunde = tFulfillerEinstellungen.kKunde
LEFT JOIN dbo.tArtikel ON tRMRetourePos.kArtikel = tArtikel.kArtikel
LEFT JOIN dbo.tliefartikel ON tArtikel.kArtikel = tliefartikel.tArtikel_kArtikel
AND tFulfillerEinstellungen.kLieferant = tliefartikel.tLieferant_kLieferant
JOIN dbo.tRMGrundSprache ON tRMRetourePos.kRMGrund = tRMGrundSprache.kRMGrund
AND tSpracheUsed.kSprache = tRMGrundSprache.kSprache
LEFT JOIN dbo.tZustandSprache ON tRMRetourePos.kZustand = tZustandSprache.kZustand
AND tSpracheUsed.kSprache = tZustandSprache.kSprache
JOIN dbo.tBestellung ON tRMRetoure.kBestellung = tBestellung.kBestellung
WHERE DAY(tRMRetoure.dErstellt) = DAY(GETDATE())
AND MONTH(tRMRetoure.dErstellt) = MONTH(GETDATE())
AND YEAR(tRMRetoure.dErstellt) = YEAR(GETDATE())
AND tRMRetoure.kKunde = @kKunde
{% endcapture -%}
{% assign Positionen = query | DirectQuery -%}
{% for pos in Positionen.Daten -%}
{% if pos.Nummer == 1 -%}
<tr>
<th class="tg-0lax">Artikelnummer</th>
<th class="tg-0lax">Menge</th>
<th class="tg-0lax">Retourennummer</th>
<th class="tg-0lax">Auftragsnummer</th>
<th class="tg-0lax">Rückgabegrund</th>
<th class="tg-0lax">Artikelzustand</th>
<th class="tg-0lax">Kommentar</th>
</tr>
{% endif -%}
<tr>
<td class="{{tg-part}}">{{pos.cArtikelnummer}}</td>
<td class="{{tg-part}}">{{pos.Menge | FormatNumber: 'N0', 'de-DE'}}</td>
<td class="{{tg-part}}">{{pos.cRetourennummer}}</td>
<td class="{{tg-part}}">{{pos.cExterneAuftragsnummer }}</td>
<td class="{{tg-part}}">{{pos.cRueckgabegrund }}</td>
<td class="{{tg-part}}">{{pos.cArtikelzustand }}</td>
<td class="{{tg-part}}">{{pos.cKommentar }}</td>
</tr>
{% endfor -%}
</table>

Gruß

Euer Manuel
 
  • Gefällt mir
Reaktionen: Shopküche.de

NewBuy

Sehr aktives Mitglied
29. August 2016
2.102
316
Erst einmal bei mir war der Ton OK

Dann kann man die Abfrage auch so ändern, dass eine eigener Bericht für die Bewegungshistorie geschickt wird, dieses ist ja nur FFN interessant. ;)
 

nieruf

Aktives Mitglied
10. September 2016
48
8
Ich hätte eine Frage dazu, das geht Quasi nur mit den Eigenen Felder? Wenn ich z.B. einen WF aufbauen möchte, der täglich prüft ob die Lieferantenbestellung bestätigt ist, wenn Nein -> Mail an Lieferanten / Wenn Ja dann keine Aktion. Wie müsste ich das aufbauen?
 

Manuel Pietzsch

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.874
1.047
Hückelhoven
Ich hätte eine Frage dazu, das geht Quasi nur mit den Eigenen Felder? Wenn ich z.B. einen WF aufbauen möchte, der täglich prüft ob die Lieferantenbestellung bestätigt ist, wenn Nein -> Mail an Lieferanten / Wenn Ja dann keine Aktion. Wie müsste ich das aufbauen?

Hi,

das notier ich mir mal für ein weiteres Video.

Danke Gruß

Manuel
 
  • Gefällt mir
Reaktionen: nieruf

JuergenSaenger

Sehr aktives Mitglied
19. August 2013
462
59
Genthin
Hat jemand bereits ein Script, was über die erweiterten Eigenschaften alle (!) netto Umsätze zusammenrechnet und den Gesamtwert ausgibt?
  • Alle Plattformen (Amazon, JTL, LS-POS, Unicorn2 usw.)
  • Kein Berücksichtung von Rechnungskorrekturen, Rabatten o. ä.
 

Shopküche.de

Offizieller Servicepartner
SPBanner

z0mbi3

Aktives Mitglied
22. Oktober 2018
66
17
Nutzen teilweise externe Skript um uns eigene Reports zu bauen. Teilweise nutzen wir auch die .NET Workflow Test App mit leichten Anpassungen um Workflowereignisse extern auszulösen.
z.B. um einen Versandienstleister die Paketanzahl Voranzukündigen die abgeholt werden muss.

@Manuel Pietzsch Ihr müsstet unbedingt die JTL-Wawi.exe noch mit weiteren Parametern bestücken, das man, ohne ein Extra Programm schreiben zu müssen, gezielt Workflowereignisse für Kunden, Aufträge etc. auslösen kann. Unteranderem auch manuelle Workflows. Dann wäre die Wiederholung und die Zeitplanung über den Windows Aufgabenplaner möglich.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu JTL mit Shopify für Etsy anstatt JTL mit Unicorn2 - hat das jemand gemacht? Anbindung, bestehende Artikel mappen? Multishop? Shopify-Connector 1
Neu Shopify Basic mit JTL? Wie einrichten? Ist der JTL Guide noch aktuelle wegen PII Einschränkung? Shopify-Connector 1
Neu Gibt es eine Möglichkeit Copilot Studio mit der JTL-Datenbank zu verbinden? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wann ist JTL WaWi / Connector mit Shopware 6.7 kompatibel? Shopware-Connector 0
Zahlungsmodul in Kombination mit der Deutschen Bank funktioniert nicht JTL-Wawi 1.10 0
Neu Rhewa 32 Waage mit JTL-WMS / JTL-Packtisch+ verbinden JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 1
Neu Shopabgleich mit Varianten scheitert Shopify-Connector 15
Neu Kompakte Kasse gesucht mit der auch Kartenzahlung über 50 € funktioniert? JTL-POS - Fragen zu Hardware 4
In Diskussion Hilfe bei Verbindung von EC-Terminal (CCV A920) mit JTL-POS Allgemeine Fragen zu JTL-POS 3
API QueryItems mit Herstellern oder Kategorien bringt nichts JTL-Wawi 1.10 0
Neu JTL Shop 5: ein Kundenkonto in der WAWI mit mehreren Konten im Webshop Allgemeine Fragen zu JTL-Shop 7
Nach Update auf 1.10.13.2 Probleme mit der POS Kasse JTL-Wawi 1.10 7
Neu Fehler bei Abgleich mit Shopify Shopify-Connector 5
Neu Abgleich mit JTL-Wawi funktioniert nicht Allgemeine Fragen zu JTL-POS 0
Neu Ausliefern Workflow mit variablen Ausführungszeiten je nach vorauss. Lieferdatum User helfen Usern - Fragen zu JTL-Wawi 3
Neu seit 1.8.25 kein Aufschalten von Angeboten merh möglich mit 1.7.14.0 Amazon-Anbindung - Fehler und Bugs 10
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
Neu BIO Zertifizierung - Kontrollstelle fordert jetzt eine Liste aller Artikel mit Sortierung Smalltalk 9
Neu Etsy mit Unicorn2 - quasi gestorben - keine Anpassung mehr, Token KEINESFALLS neu verknüpfen !!! Schnittstellen Import / Export 5
Artikel mit Freitext Variation - oder wie "kundenindividuelle Artikel" handhaben? JTL-Wawi 1.10 1
Neu Welcher Zahlungsanbieter mit JTL-POS Allgemeine Fragen zu JTL-POS 0
Neu CustomGPT - Workflows bzw. DotLiquid erstellen mit ChatGPT User helfen Usern 16
Kabelkonfektionierung mit JTL Konfigurator JTL-Wawi 1.10 0
Neu Rechnungskorrektur direkt aus „Verkauf → Aufträge → Mit Rechnung“ möglich? Arbeitsabläufe in JTL-Wawi 2
Neu Produkt-Stream mit Variationsbildern Allgemeine Fragen zu JTL-Shop 0
Neu Donwload: Rechnungsvorlage 2.0 MIT Lieferanschrift Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu PayPal V 2.0.2 mit Shop 5.5.2: Ablauf der Zahlung Plugins für JTL-Shop 13
Webinar: Mein Start mit JTL | Produkte, Funktionen, Einsatzmöglichkeiten Messen, Stammtische und interessante Events 0
Webinar: Mein Start mit JTL | Produkte, Funktionen, Einsatzmöglichkeiten Messen, Stammtische und interessante Events 0
Webinar: Mein Start mit JTL | Produkte, Funktionen, Einsatzmöglichkeiten Messen, Stammtische und interessante Events 0
Webinar: Mein Start mit JTL | Produkte, Funktionen, Einsatzmöglichkeiten Messen, Stammtische und interessante Events 0
Webinar: Mein Start mit JTL | Produkte, Funktionen, Einsatzmöglichkeiten Messen, Stammtische und interessante Events 0
Webinar: So sieht ein vollständiges E-Commerce-Steuersetup wirklich aus - mit SKULD & countX am 25.09.25 Messen, Stammtische und interessante Events 0
Webinar: So meisterst du deine JTL-Steuereinstellungen – mit countX & JERA am 11.09.25 Messen, Stammtische und interessante Events 0
Webinar Amazon-Expansion 2025 mit countX am 28.08.25 Messen, Stammtische und interessante Events 0
Neu Hat jemand Erfahrung mit der Anbindung von TikTok Shop über Shopify? Einrichtung und Installation von JTL-eazyAuction 0
MeetUp mit Kaufland Global Marketplaces am 04.09.25 Messen, Stammtische und interessante Events 0
Probleme mit wawi, in der leiste wird kein onlineshop angezeigt JTL-Wawi 1.10 8
Neu Frage zur eBay-Artikelbeschreibung bei Variationskombinationen (Kindartikel mit eigenem Text und Bildern) eBay-Anbindung - Fehler und Bugs 5
Versanddatenexport mit DHL JTL-Wawi 1.9 1
Neu Newsletter Anmeldung mit Themenauswahl Plugins für JTL-Shop 0
Neu Desktop voll mit Printlogs JTL-Wawi - Fehler und Bugs 5
Neu Ist es nicht möglich unter Plattformen - Neukunden sich die Mobilnummer anzeigen zu lassen, mit der die Kunden sich regsitriert haben? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Hilfe beim Einrichten von JTL-Wawi mit unternehmensspezifischen Artikeldaten Arbeitsabläufe in JTL-Wawi 14
Neu Aufträge exportieren mit Angabe des Lieferanten JTL-Ameise - Ideen, Lob und Kritik 1
Neu alte Aufträge ausliefern ohne Label drucken und Abgleich mit eBay User helfen Usern - Fragen zu JTL-Wawi 2
Ebay Angebot mit Kindartikel die keinen Bestand haben per Ameise importieren JTL-Wawi 1.6 5
Hood SCX Schnittstelle mit Listing Fehler JTL-Wawi 1.10 1
Neu JTL Shop 5 Probleme mit Anlegen eines Kundenaccounts Allgemeine Fragen zu JTL-Shop 4
Neu Rechnungsdatenservice 2.0 : Wie initial Übergabe von Rechnungen mit Belegtyp (Belegkreis) "Rechnungsausgang" an Datev Unternehmen online? User helfen Usern - Fragen zu JTL-Wawi 1

Ähnliche Themen