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

Manuel Pietzsch

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.883
1.053
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.103
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.883
1.053
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.
 

frankell

Sehr aktives Mitglied
9. September 2019
2.123
610
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
Neu PayPal Checkout Plugin (iPhone), Probleme mit PayPal-App Plugins für JTL-Shop 0
Neu Probleme beim Abgleich mit dem WooCommerce-Connector WooCommerce-Connector 0
Neu Zahlungszuordnung Wawi Auftrag mit Barzahlung im Laden User helfen Usern - Fragen zu JTL-Wawi 0
Neu Download-Artikel mit dem Download-Modul anbieten JTL SHOP Plugins für JTL-Shop 5
Neu Magento2 mit Synesty in JTL-Wawi verbinden Allgemeines zu den JTL-Connectoren 9
Neu Bonuspunkte sammeln mit JTL-Pos Allgemeine Fragen zu JTL-POS 0
Neu Abgleich WooCommerce / JTL mit dem Connector – Fehlermeldung WooCommerce-Connector 0
QRCode mit eigenem Feld in Druckvorlage füttern. JTL-Wawi 1.9 1
Neu Kunden mit Kundenkonto bestellen als Gast und Aufträge sind dann nicht im Konto sichtbar Allgemeine Fragen zu JTL-Shop 4
Vorlage mit Bedingung JTL-Wawi 1.9 2
Neu Die folgenden Dateien sind nicht identisch mit den Dateien der aktuellen Version von JTL-Shop. Allgemeine Fragen zu JTL-Shop 0
Artikel mit zwei Positionen JTL-Wawi 1.10 1
Neu Shopify Verkaufskanal inaktiv nach Anbindung mit Shopify App Shopify-Connector 3
Wir haben Probleme beim Abgleich mit Amazon Amazon-Anbindung - Fehler und Bugs 41
Neu Kunden mit registrierten Konto im Shop exportieren User helfen Usern - Fragen zu JTL-Wawi 2
Neu Filter Kunde mit eigenem Feld Wert "größer als"? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Google Ads Conversion Tracking mit Consent Mode v2 Plugins für JTL-Shop 0
Neu Probleme mit der Email über jtl hosting (plesk) User helfen Usern 2
Neu Massenupdate Parentartikel mit AMZ Lister 2.0 Amazon-Lister - Ideen, Lob und Kritik 0
Konfigurationsartikel mit Stückliste versucht Gewinn JTL-Wawi 1.10 0
Neu Paypal Zahlung erfolgreich, Auftrag mit Status Neu im Shop und fehlt in WAWI JTL-Shop - Fehler und Bugs 4
Neu Teilweise Probleme mit Kindartikel anlegen User helfen Usern - Fragen zu JTL-Wawi 5
JTL Wawi: Kompatibel mit WPC Product Bundles for WooCommerce JTL-Wawi 1.9 0
Neu Mit Workflow verfügbaren Bestand aller Artikel in Datei schreiben User helfen Usern - Fragen zu JTL-Wawi 8
Beantwortet Einen 2. JTL-Shop5 mit dem gleichen PayPal-Account verbinden Einrichtung JTL-Shop5 7
Neu Gutschein verkaufen - Produkt mit Preiswahl durch Kunden? User helfen Usern - Fragen zu JTL-Wawi 6
Neu Probleme mit Etikettendrucker User helfen Usern - Fragen zu JTL-Wawi 0
Neu JTL mit Shopify für Etsy anstatt JTL mit Unicorn2 - hat das jemand gemacht? Anbindung, bestehende Artikel mappen? Multishop? Shopify-Connector 2
Neu Shopify Basic mit JTL? Wie einrichten? Ist der JTL Guide noch aktuelle wegen PII Einschränkung? Shopify-Connector 2
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 6
Zahlungsmodul in Kombination mit der Deutschen Bank funktioniert nicht JTL-Wawi 1.10 3
Neu Rhewa 32 Waage mit JTL-WMS / JTL-Packtisch+ verbinden JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 2
Neu Shopabgleich mit Varianten scheitert Shopify-Connector 18
In Bearbeitung 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 7
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

Ähnliche Themen