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

Manuel Pietzsch

JTL-Wawi
Mitarbeiter
2. Januar 2012
2.462
702
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
1.512
191
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
38
6
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.462
702
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
394
40
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. ä.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Shopware & JTL-Wawi - Welche Aufgaben übernimmt wer? User helfen Usern - Fragen zu JTL-Wawi 3
Neu Verkauf von MHD-überschrittenen Lebensmitteln mit Bestandsführung & Rückverfolgbarkeit User helfen Usern - Fragen zu JTL-Wawi 0
Neu JTL POS Bon mit Retoure - Lagerbestand wird nicht erhöht Allgemeine Fragen zu JTL-POS 2
Neu Problem mit Update (Version 1.5.46.0) JTL-Wawi - Fehler und Bugs 2
E-Mail-Versand mit SSL/TLS geht nicht Einrichtung JTL-Shop5 0
Neu Mit Verkaufseinheiten flexible Rechnungen erstellen User helfen Usern - Fragen zu JTL-Wawi 8
In Diskussion Puffer regelmäßig mit Workflow ändern JTL-Workflows - Ideen, Lob und Kritik 3
Neu Übertragungsfehler zu Woocommerce mit Mix & Match Plug in WooCommerce-Connector 0
In Diskussion Picklisten erstellen mit einem Workflow JTL-Workflows - Fehler und Bugs 6
Neu Hilfe! WAWI abgleich mit Shopware 6 geht nicht. Shopware-Connector 1
Neu Unterschiedliche Variationsartikel mit selber Farbnummer User helfen Usern - Fragen zu JTL-Wawi 4
Neu Abgleich mit Woocommerce führt zu falschen Übertragungen JTL-Wawi - Fehler und Bugs 0
Neu Firewall+Security Plugin für WordPress kompaktibel mit JTL Connector? WooCommerce-Connector 0
In Diskussion TSE Cloud mit POS Verknüpfung fehlgeschlagen - Wie kann ich die IP ändern? Einrichtung / Updates von JTL-POS 4
Neu Keine automatische Rechnungserstellung bei Amazon FBA-Bestellungen mit mehreren Teillieferungen Arbeitsabläufe von eazyAuction 1
Neu Versand mit Europaket - Fehlermeldung 1101 - Die Angabe der Zeile ist nicht möglich JTL-ShippingLabels - Fehler und Bugs 0
Neu Neuer Mandant nur mit Stammdaten Installation von JTL-Wawi 3
Neu Dringend: ebay - Arikel über 18 mit VerifyMyAge JTL-Wawi - Ideen, Lob und Kritik 10
Neu JTL Shop5 Zahlung mit Paypal Differenz in Wawi JTL-Wawi - Fehler und Bugs 2
Beantwortet FBA Artikel zusätzlich auch mit Eigenversand anbieten Einrichtung und Installation von JTL-eazyAuction 2
Neu Email-Vorlage: DirectQuery mit '... WHERE = {{Irgendeine.Variable}}' in DotLiquid Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu LS POS - Kassenbericht Z-Bon mit MwSt. Übersicht Fragen rund um LS-POS 0
Neu Probleme mit Angebotsimport & Zuordnung eBay-Anbindung - Fehler und Bugs 0
Neu Shopify mit JTL Wawi Shopify-Connector 3
Neu Wawi mit Konfigurationsmodul an lokalen Shop anbinden Allgemeine Fragen zu JTL-Shop 0
Import von Weiterleitungen bricht mit Hinweis "ungültiger MIME-Type" ab Einrichtung JTL-Shop5 2
Neu Mit Ameise: "Anzahl der verkauften Artikel" möglich zu exportieren? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Shop 5 Slider nur mit Ken Burn Effekt JTL-Shop - Fehler und Bugs 1
Neu Onlineshop 4 auf Shop 5 upgraden mit neuem Template Upgrade JTL-Shop4 auf JTL-Shop5 0
Neu automatischer Abgleich mit dem Onlineshop Onlineshop-Anbindung 0
Neu [Störung] 31.5.21 Verbindungsprobleme beim Erstellen von Versandetiketten mit der Internetmarke JTL-ShippingLabels - Fehler und Bugs 0
Neu Subshop mit JTL Shop Hauptshop Shopify Umstieg auf JTL-Shop 0
Neu Wawi aufm Mac (mit Crossover) startet nicht User helfen Usern - Fragen zu JTL-Wawi 0
Neu Artikeldaten Export - Escape mit 4 """" Anführungszeichen JTL-Ameise - Fehler und Bugs 4
Neu Drucker Probleme mit HEX und Star mc-Print2 JTL-POS - Fehler und Bugs 0
Neu Varikombis - Problem mit Vaterartikel oder falsche Denkweise? User helfen Usern - Fragen zu JTL-Wawi 3
Neu JTL-Wawi - Abgleich mit Woocommerce Shop schlägt fehl WooCommerce-Connector 4
Neu Array mit allen Artikeln Plugins für JTL-Shop 2
Neu Anbindung DeepL über Workflow mit DotLiquid User helfen Usern - Fragen zu JTL-Wawi 3
Neu CSV-Export von Auftrag mit "Eigenen Felder" User helfen Usern - Fragen zu JTL-Wawi 2
Kunden schließen Bestellung nach Bezahlung mit PayPal Plus Plugin nicht ab Einrichtung JTL-Shop5 1
Neu Synchronisation mit Webshop nicht möglich - Class 'SQLite3' not found Shopware-Connector 6
Neu JTL Search mit anderen Shopsystemen, Entwicklung JTL-Search 0
Neu JTL Shop 5 - Versandkosten in Verbindung mit Versandklassen falsche Darstellung in der Warenkorbvorschau JTL-Shop - Fehler und Bugs 1
Gelöst Workflow gesucht, der das heutige Datum mit dem "Voraussichtlichem Lieferdatum" vergleicht JTL-Workflows - Fehler und Bugs 0
Neu Fehlermeldung (8567) beim verknüpfen eines Artikels mit einem bestehenden Amazon Angebots. Amazon-Anbindung - Fehler und Bugs 0
Neu [Störung] 25.5.21 Verbindungsprobleme beim Erstellen der Versandetiketten mit Amazon JTL-ShippingLabels - Fehler und Bugs 2
Neu erste Firma umbenennen? Zweite erstellen mit erstem Namen? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Link im Megamenü mit target_blank Allgemeine Fragen zu JTL-Shop 1
Neu VCS Lite mit JTL Wawi+EazyAuction lädt keine Rechnung hoch Amazon-Anbindung - Ideen, Lob und Kritik 1

Ähnliche Themen