Gelöst Tagesbericht per Workflow

LFU

Sehr aktives Mitglied
26. Januar 2017
188
28
Düsseldorf
Ich möchte gerne einen Tagesbericht der erfolgten Sendungen als Datei per Workflow ausgeben. Irgend wie bekomme ich die Bedingungen nicht so hin, dass ein Gesamtbericht vom aktuellen Tag Zeitgesteuert ausgegeben wird. Mich beschleicht der Gedanke, dass scheint so generell nicht zu gehen. Oder habe ich etwas übersehen und es gibt doch eine Chance?
 

maydo

Sehr aktives Mitglied
28. März 2011
2.135
86
DE-Fulda
Ich möchte gerne einen Tagesbericht der erfolgten Sendungen als Datei per Workflow ausgeben. Irgend wie bekomme ich die Bedingungen nicht so hin, dass ein Gesamtbericht vom aktuellen Tag Zeitgesteuert ausgegeben wird. Mich beschleicht der Gedanke, dass scheint so generell nicht zu gehen. Oder habe ich etwas übersehen und es gibt doch eine Chance?

einen generellen "cron" Trigger gibt es derzeit nicht.

Was nimmst du als auslösendes Ereignis ?

Eine Möglichkeit wäre, einen manuellen Workflow erstellen und diesen über wawi_extern.dll per cron antriggern.
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.295
407
Hi @LFU,

erst einmal hat @maydo Recht, was Du willst ist eine Art "cron" basierten, automatisch zu einer bestimmten Zeit aufrufbaren Trigger und den gibt es aktuell nicht. Grundsätzlich geht aber schon was, nur die automatische Auslösung musst Du Dir klemmen.

Den Vergleich, ob ein bestimmter Lieferschein z.B. Heute erstellt wurde, geht über eine "Erweiterte Eigenschaft" in den Workflows. Die findest Du ganz unten in der Liste der Bedingungs-Variablen, Du würdest Dir dort eine neue Erweiterte Eigenschaft anlegen, ihr einen "sprechenden" Namen geben und folgenden Code in das Fenster eingeben ...
Code:
{% assign DatumVersand = Vorgang.Erstelldatum | Date:'ddMMyyyy' -%}
{% assign DatumHeute = Datum.Jetzt | Date:'ddMMyyyy' -%}
{% if DatumVersand == DatumHeute -%}
1
{% else -%}
0
{% endif -%}

Nach Bestätigung mit OK, kannst Du dann im Bedingungs-Auswahlfenster unter dem Punkt "Erweiterte Eigenschaften" Deinen sprechenden Namen auswählen und den Rückgabewert dann mit dem Operator "Gleich" auf den Wert "1" prüfen und dann unten eine Aktion auslösen, weil dieser Lieferschein von Heute stammt.

Das ist aber ziemlich suboptimal, denn das musst Du für alle Lieferscheine von Hand oder nach Markieren aller Lieferschein für alle gemeinsam ausführen und der Workflow wird dann im Zweifel für ALLE Deine Versandaktivitäten bis zurück zum Sankt Nimmerleinstag separat ausgeführt. - Zeit für eine Kaffeepause ... :confused:

Eleganter wird es, wenn Du zwar wie oben eine "Erweiterte Eigenschaft" anlegst, aber statt dem Code von oben die Arbeit eine SQL Abfrage machen läßt, die direkt in der Datenbank aus der Versandliste diejenigen raussucht, die von Heute stammen und sie mitsamt ein paar nützlichen Infos in einer Tabelle zurückliefert. Dann muss man nur noch in einer Schleife über die Tabellenzeilen laufen und die Infos ausgeben. Das sähe dann so aus...
Code:
{% capture query -%}
SELECT t2.cLieferscheinNr AS 'LieferscheinNr', t4.cKundenNr AS 'KundenNr', t3.cBestellNr AS 'BestellNr',
        CASE WHEN t1.cIdentCode = '' THEN '<Kein IdentCode>' END AS 'IdentCode',
        CASE WHEN t1.cHinweis = '' THEN '<Kein Hinweis>' END AS 'Hinweis'
        FROM tVersand AS t1
    INNER JOIN tLieferschein AS t2 ON t2.kLieferschein=t1.kLieferschein
    INNER JOIN tBestellung AS t3 ON t3.kBestellung=t2.kBestellung
    INNER JOIN tkunde AS t4 ON t4.kKunde=t3.tKunde_kKunde
    WHERE CONVERT(DATE,t1.dVersendet)=CONVERT(DATE,GETDATE())
{% endcapture -%}
{% assign VersandListe = query | DirectQuery -%}
LieferscheinNr;KundenNr;BestellNr;IdentCode;Hinweis
{% for item in VersandListe.Daten -%}
{{ item.LieferscheinNr }};{{ item.KundenNr }};{{ item.BestellNr }};{{ item.IdentCode }};{{ item.Hinweis }}
{% endfor -%}

In der Summe bräuchtest Du also eine Workflow-Bedingung, die prüft, ob Heute zumindest ein Versand stattgefunden hat und eine Aktion, die dann und nur dann die Versanaktivitäten sammelt und übergibt/ausgibt, hier also Schritt für Schritt ...

1. Workflow Bedingung anlegen, neue "Erweiterte Eigenschaft" anlegen, "Anzahl Heute Versendet" nennen und folgenden Code reinkopieren ...
Code:
{% assign result = 'SELECT COUNT(dVersendet) FROM tVersand WHERE CONVERT(DATE,dVersendet)=CONVERT(DATE,GETDATE())' | DirectQueryScalar -%}
{{ result }}
2. Eine Ebene höher als Vergleichsoperator "Ungleich" und als Wert "0" setzen. Damit wird die Workflow-Aktion nur dann ausgelöst, wenn "nicht kein" Versand stattgefunden hat.
>> Diesen umständlichen Vergleich wähle ich, weil die Wawi aktuell noch keine echten "größer als" und "kleiner als" Zahlenvergleiche macht, sondern immer nur String-Vergleiche. Das ändert sich bald und dann testet man auf "Größer als" und "0".
3. Workflow Aktion anlegen, als Aktion z.B. Email schreiben, An, Betreff, etc. ist alles Deins, aber bei "Text" klickst Du auf den "..." Button und kommst wieder in eine Art "Erweiterte Eigenschaft".
4. Dort kopierst Du dann den längeren Code von oben rein.
5. Ok, ok klicken, fertsch!

Da es aber auch nach dieser Odysee ja immer noch keinen automatisch zeitgetriggerten Workflow gibt, löst Du diesen Versandaktivitäten Workflow aus, indem Du abends einmal in Deine Versandliste gehst, irgendeinen Lieferschein anklickst, damit die Box mit den manuellen Workflows rechts unter der Liste aktiv wird, wählst Deinen "Heute Versendet" Workflow aus und voilá "You have mail !" ... :)

Gruß,
Ingmar
 

Rico Giesler

Offizieller Servicepartner
SPBanner
10. Mai 2017
13.245
1.522
Hallo @LFU
Je nach dem was du genau ausgegeben haben möchtest könnte man es auch recht simpel lösen:

Du machst unter Lieferschein versendet einen zeitversetzten Workflow um 1 Minute der die von dir gewählten Daten in eine Datei schreibt.
Als Dateiname lässt du das heutige Datum setzen.
Zum Ende wählst du aus: "an vorhandene Datei anhängen"!!!

Was passiert dadurch?
- sobald der erste Lieferschein des Tages versendet wird, erstellt der Workflow eine Datei mit dem heutigen Datum und den von dir gewünschten Daten.
- nun kommt der nächste Lieferschein und der Workflow erkennt, dass es für heut schon eine Datei gibt.
- er erweitert nun die vorhandene Datei um die Daten von dem zweiten Lieferschein.
- dies passiert bis 23:59:59 Uhr - danach erkennt der Workflow dass es für das neue Datum noch keine Datei gibt und erstellt wieder eine und fängt von neuem an.

Somit hast du von jedem Tag die Infos gesammelt in einer Datei inkl. Datum des Tages als die Lieferscheine versendet wurden.
 
  • Gefällt mir
Reaktionen: maydo und gutberle

gutberle

Sehr aktives Mitglied
29. März 2011
1.295
407
Super Idee, Rico! - @LFU: Falls Du bestimmte Variablen nicht im Baum der verfügbaren Variablen findest, kannst Du immer noch auf eine SQL Abfrage ausweichen, um die nötigen Daten zusammenzubekommen. Ich habe jetzt beim Durchschauen des Baums zum Beispiel keinen IdentCode gefunden, kann aber auch sein, dass ich einfach nur blind bin.

Aber falls so etwas fehlt, kann man sich das ja leicht in der DB besorgen. Der für Rico's Vorschlag modifizierte SQL Code von oben sähe zum Beispiel so aus...
Code:
{% capture query -%}
SELECT t3.cBestellNr AS 'BestellNr', t2.cLieferscheinNr AS 'LieferscheinNr', t4.cKundenNr AS 'KundenNr',
        CASE WHEN t1.cIdentCode = '' THEN '<Kein IdentCode>' END AS 'IdentCode',
        CASE WHEN t1.cHinweis = '' THEN '<Kein Hinweis>' END AS 'Hinweis'
        FROM tVersand AS t1
    INNER JOIN tLieferschein AS t2 ON t2.kLieferschein=t1.kLieferschein
    INNER JOIN tBestellung AS t3 ON t3.kBestellung=t2.kBestellung
    INNER JOIN tkunde AS t4 ON t4.kKunde=t3.tKunde_kKunde
    WHERE t1.kLieferschein={{ Vorgang.InterneLieferscheinNummer }}
{% endcapture -%}
{% assign VersandListe = query | DirectQuery -%}
{% for item in VersandListe.Daten -%}
{{ item.LieferscheinNr }};{{ item.KundenNr }};{{ item.BestellNr }};{{ item.IdentCode }};{{ item.Hinweis }}
{% endfor -%}
... es werden also nicht mehr die Infos für alle heutigen Lieferungen, sondern nur die Infos für den an den Workflow übergebenen Liefervorgang geholt und als Text aufbereitet.
Die Formatierung ist dann natürlich Deine Sache, aber der Text würde dann nach Rico's Anleitung immer hinten an die bestehende Tagesdatei angehängt werden.
 

maydo

Sehr aktives Mitglied
28. März 2011
2.135
86
DE-Fulda
Hallo @LFU
Je nach dem was du genau ausgegeben haben möchtest könnte man es auch recht simpel lösen:

Du machst unter Lieferschein versendet einen zeitversetzten Workflow um 1 Minute der die von dir gewählten Daten in eine Datei schreibt.
Als Dateiname lässt du das heutige Datum setzen.
Zum Ende wählst du aus: "an vorhandene Datei anhängen"!!!

Was passiert dadurch?
- sobald der erste Lieferschein des Tages versendet wird, erstellt der Workflow eine Datei mit dem heutigen Datum und den von dir gewünschten Daten.
- nun kommt der nächste Lieferschein und der Workflow erkennt, dass es für heut schon eine Datei gibt.
- er erweitert nun die vorhandene Datei um die Daten von dem zweiten Lieferschein.
- dies passiert bis 23:59:59 Uhr - danach erkennt der Workflow dass es für das neue Datum noch keine Datei gibt und erstellt wieder eine und fängt von neuem an.

Somit hast du von jedem Tag die Infos gesammelt in einer Datei inkl. Datum des Tages als die Lieferscheine versendet wurden.


sehr gute Idee :)
 

LFU

Sehr aktives Mitglied
26. Januar 2017
188
28
Düsseldorf
Vielen Dank für die vielen guten Ideen. Ich habe das Problem jetzt über einen Workflow gelöst:
Versand > Lieferscheine Versendet
Bedingung > Versendet gleich true > Auftrag.Kunde.Kunde.Adrtesse.Nachnahme enthält "XXXX"
Aktion > Datei Schreiben > Dateiname Datum > an Vorhandene Datei anhängen

das funktioniert so super
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Werte erhöhen per Workflow User helfen Usern - Fragen zu JTL-Wawi 3
Amazon Rechnungslayout geändert, per IDU wird trotzdem die alte Vorlage hochgeladen JTL-Wawi 1.9 2
In Diskussion Ort mit OT per Workflow bereinigen JTL-Workflows - Ideen, Lob und Kritik 3
Neu Banner per OPC auf Artikelseite Allgemeine Fragen zu JTL-Shop 5
Gelöst Workflow - Seriennummer per Mail versenden JTL-Workflows - Fehler und Bugs 1
In Diskussion Warnung per Mail wenn Paket seit x Tagen in Filiale zu Abholung (DHL Sendungsverfolgung) Track&Trace JTL-Workflows - Ideen, Lob und Kritik 6
Rechnungsversand per eMail hin und wieder nicht erfolgreich JTL-Wawi 1.9 1
Dropshipping-Trackingnummer erzeugt keine Versandbenachrichtigung per E-Mail JTL-Wawi 1.8 5
Neu Amazon Angebotspreise per Stored Procedure/Function oder API setzen Amazon-Anbindung - Ideen, Lob und Kritik 0
Ebay Preise per Ameise Importieren JTL-Wawi 1.10 14
Neu Bestellung per Mail, Kunde registriert sich im Nachgang, Bestellung nicht im Kundenkonto User helfen Usern - Fragen zu JTL-Wawi 2
Neu Workflow mit UND / ODER - Bedingung erstellen JTL-Workflows - Ideen, Lob und Kritik 7
Using short screen recordings for JTL-Wawi workflow documentation – anyone doing this? JTL-Wawi 2.0 3
In Diskussion Workflow OpenAI JTL-Workflows - Ideen, Lob und Kritik 0
Workflow Trigger bei Angebot-Import über Ameise JTL-Wawi 1.9 0
Neu 2.0.0: Workflow Queue wird nicht abgearbeitet via API JTL-Wawi 2.0 1
Neu Verständnisfrage zum Mahnlauf Workflow User helfen Usern - Fragen zu JTL-Wawi 0
Neu Ausdruck Rechnung beim Workflow nicht korrekt formatiert User helfen Usern - Fragen zu JTL-Wawi 6
Worker versendet keine E-Mails mehr aus der Workflow Queue JTL-Wawi 2.0 6
Neu Workflow automatisch bei Warenausgang für Bestand und Puffer JTL-Wawi - Ideen, Lob und Kritik 12
workflow führt zu "keiner Rückmeldung" / Absturz JTL-Wawi 1.11 3
Artikelpuffer Email Workflow JTL-Wawi 1.11 4
Neu Workflow Ereignis "Position hinzufügen" bei Angebote User helfen Usern - Fragen zu JTL-Wawi 0
Neu Workflow - Bedingung Lieferstatus User helfen Usern - Fragen zu JTL-Wawi 4
Workflow: Artikel geändert -> bat-script ausführen JTL-Wawi 1.11 2
Neu Workflow funktioniert nicht so wie gewollt :) User helfen Usern - Fragen zu JTL-Wawi 1
In Diskussion Workflow Abweichung Preise > Emailreport JTL-Workflows - Ideen, Lob und Kritik 3
Neu Workflow Auslöser: Artikel gelöscht User helfen Usern - Fragen zu JTL-Wawi 0

Ähnliche Themen