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

Manuel Pietzsch

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.894
1.071
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.105
319
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.894
1.071
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
67
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.
 

frankell

Sehr aktives Mitglied
9. September 2019
2.299
695
Flensburg
Wie im anderen Thread schon geschrieben:

Die Umbuchungen landen auch in den Warenlagereingangs- bzw. -ausgangstabllen, also tWarenLagerEingang und tWarenLagerAusgang. Ein Zustandsartikel kann als eigenständiger Artikel mit eigenem Lagerbestand geführt werden, wenn das Häkchen dafür bei den Einstellungen dieses Artikelzustands gesetzt ist. Der Zustandsartikel erhält dann eine eigene kArtikel, nach der Du wiederum in tWarenLagerAusgang filtern kannst und dann die Summe von fAnzahl ziehst.
 
  • Gefällt mir
Reaktionen: Manuel Pietzsch
Ähnliche Themen
Titel Forum Antworten Datum
S/MIME mit veraltetem Standard? JTL-Wawi 1.11 2
Neu JTL Wawi auf Windows Server 2025 mit SQL 2025? Installation von JTL-Wawi 4
Seit Update auf 1.11.4 Workflow für Kartonauswahl gibt error JTL Das Objekt mit Nullwert muss einen Wert haben. BrowsePk: 152325 WorkflowAktionId: 155 JTL-Wawi 1.11 0
Neu Ich möchte konfigurieren, dass Artikel mit einem Lagerbestand von 0 nicht mehr zu einer Bestellung hinzugefügt werden dürfen Eigene Übersichten in der JTL-Wawi 1
Neu "Eine Zeile mit doppeltem Schlüssel" im Assistent zur Einrichtung Installation von JTL-Wawi 1
Neu Konfigurator-Produkt wird mit 0 € in den Warenkorb gelegt JTL-Shop - Fehler und Bugs 2
Neu Probleme mit dem erstellen eines Profils in der Datenbankverwaltung JTL-Wawi - Fehler und Bugs 1
Neu Neues E-Commerce Business mit JTL Wawi - Jtl Shop - Lexware Office (online) - Fragen Starten mit JTL: Projektabwicklung & Migration 2
Neu Kein Abgleich mit Amazon mehr möglich - IP Sperre? Amazon-Anbindung - Fehler und Bugs 2
Neu Eine Amazon-Abrechnung wurde mit Verspätung generiert und fehlt jetzt in WAWI Amazon-Anbindung - Fehler und Bugs 3
Neu Salepix Techniktemplate mit Downloadfehler Templates für JTL-Shop 2
Bestand anderer Kinderartikel wird in Artikelstammdaten mit angezeigt – wie kann man das deaktivieren? JTL-Wawi 1.11 2
Monatsabschluss Amazon FBA UK / CH mit JTL2Datev WaWi 1.10 bei IDU Nutzung und Zwangs VCS für GB / Schweiz JTL-Wawi 1.10 0
Neu Habt ihr auch Probleme mit dem Google Merchant Center? Allgemeine Fragen zu JTL-Shop 6
Neu Mediendateien nicht mit Shopware synchronisiert Shopware-Connector 0
Neu Lieferantenbestellung mit Stückliste User helfen Usern - Fragen zu JTL-Wawi 3
Neu Zahlungsziel mit unterschiedlichen Valutas erstellen User helfen Usern - Fragen zu JTL-Wawi 6
In Diskussion Pos mit 1.11.4 nicht kompatibel Einrichtung / Updates von JTL-POS 9
Neu JTL-MeetUp mit eBay in Berlin Messen, Stammtische und interessante Events 0
Neu Barcodescanner - Artikel mit # wird nicht übergeben Allgemeine Fragen zu JTL-POS 1
Neu Staffelpreise wird mit Sternchen angezeigt - wie ändere ich das Allgemeine Fragen zu JTL-Shop 0
Neu 0,1% an der Kasse erstellte Kunden nicht synchronisiert mit JTL Wawi Allgemeine Fragen zu JTL-POS 0
Neu Probleme mit WMS-Inventur JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Neu GPSR Produktsicherheitsblatt mit Amazon Lister übergeben? Amazon-Lister - Fehler und Bugs 5
Neu Varianten Artikel erstellen mit Lister 2.0 nur für Amazon Amazon-Lister - Ideen, Lob und Kritik 0
Lagerbestände mit der Ameise korrigieren JTL-Wawi 1.6 3
Probleme mit dem Ebay-Abgleich JTL-Wawi 1.11 1
Aktuelle Erfahrungen mit 1.11 JTL-Wawi 1.11 2
Neu Zufällige Preisanpassungen beim Abgleich mit Woocommerce User helfen Usern - Fragen zu JTL-Wawi 9
Amazon-ASIN mit mehreren SKU für Chargenverfolgung JTL-Wawi 1.10 0
Neu Kundenkonto mit mehreren Shop-eMail-Adressen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Ist es korrekt, dass Belegdaten von Amazon (VCS) mit einer etwa 7-tägigen Verzögerung in WAWI landen? Amazon-Anbindung - Fehler und Bugs 8
Neu Ärger mit CountX: Verzögerung bei der Bearbeitung von VCS-Daten in WAWI führt zu unvollständigen Steuerdaten User helfen Usern - Fragen zu JTL-Wawi 0
Neu Rechnung als pdf. speichern mit Rechnungsnummer und Kundennummer im Namen klappt nicht User helfen Usern - Fragen zu JTL-Wawi 4
Neu Was passiert beim Shop Update mit den Mailvorlagen? Installation / Updates von JTL-Shop 2
Neu Platzhalter für GPSR werden mit angezeigt PrestaShop-Connector 1
Liste exportieren mit Kategorien und Anzahl der Artikel in der jeweiligen Kategorie JTL Ameise - Eigene Exporte 3
Neu Umlagerung mit mehreren Positionen JTL-Ameise - Fehler und Bugs 7
Bild auf Rechnung bewegt sich nicht mit den Positionen JTL-Wawi 1.11 8
Neu Utopische Lieferzeiten mit der Post User helfen Usern - Fragen zu JTL-Wawi 1
Am eigenen Lager Bestand = 0, bei FBA = 170, Probleme mit dem eigenen Shop und Otto.de JTL-Wawi 1.10 3
Fehler beim Verknüpfen von JTL-FFN mit Wawi – „Anmeldung nicht möglich“ JTL-Wawi 1.11 1
Neu Adressetiketten für Briefe mit Etikettendrucker erstellen / Formatierungsproblem Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 4
Neu JTL-Wawi Aufträge die mit JTL-POS bezahlt wurde tauchen im Tagenabschluss auf JTL-POS - Fehler und Bugs 7
Neu FBA-Artikel lässt sich nicht mit Stücklistenartikel verknüpfen – Workaround? Arbeitsabläufe in JTL-Wawi 0
Neu Kartenzahlung mit Zettle / Wo finde ich einen Transaktionscode in der Datenbank? Allgemeine Fragen zu JTL-POS 0
Neu Probleme mit Pixel-Code eines Drittanbieters in Templatedatei Betrieb / Pflege von JTL-Shop 1
Neu Wer hat 2025 mit Xentral Erfahrungen gesammelt? Wechsel von JTL‑Wawi in Sicht Smalltalk 17
Funktion mit welchem Konnektor? JTL-Wawi 1.11 0
Kann ich mit dieser SQL Version die neue WaWi 1.11.1 installieren? JTL-Wawi 1.11 2

Ähnliche Themen