Neu Workflow erstellen - brauche Hilfe bei DotLiquid

René_FBA

Gut bekanntes Mitglied
6. Juli 2017
134
10
Hallo zusammen,
ich bin neu hier und hoffe, dass ich mich nicht allzu doof anstelle. ;)

Ich möchte einen Workflow erstellen, der folgende Situation beachtet und dann eine eMail an mich schickt:

- ich generiere einen Bestellvorschlag - im Hinweisfeld steht bei meinen Bestellvorschlägen immer " FBA"
- Bestellung wird (durch jemand anderes) bei diesem Hersteller ausgelöst, enthält auch POositionen ohne Hinweis "FBA"
- Wenn Ware nun physich im Lager eintrifft und durch jemanden in der WMS eingebucht wird, möchte ich irgendwie erreichen, dass ich eine eMail bekomme mit:

- eingebuchter Menge meiner bestellten Artikel (die mit Hinweisfeld: FBA), auch, wenn noch andere Positionen eingetroffen sind, die diesen Hinweis nicht haben. Mir reicht nur die Bestätigung der mit "FBA" gekennzeichneten Artikel

die eMail soll folgende Punkte enthalten:
- Artikelnummer(n), Kurzbeschreibung, Menge die eingebucht wurde

Leider habe ich keine Ahnung, wie genau ich das realisieren kann. Ich erreiche nur, dass wenn eine Bestellung ausgelöst wurde, mit einem Artikel mit Hinweis "FBA", ich eine eMail bekomme mit dem ersten Artikel, der aber u.U. gar nicht von mir bestellt wurde. Viel wichtiger wäre es für mich per eMail zu erfahren, wenn eben diese Artikel mit Hinweis "FBA" eingebucht wurden, das würde ja bedeuten, dass sie geliefert wurden. Und genau DAS muss ich wissen.

Könnt ihr mir folgen? ;)

LG, René
 

René_FBA

Gut bekanntes Mitglied
6. Juli 2017
134
10
Guten Morgen zusamen...

kann hier niemand helfen? Sorry wenn ich blöd frage, ich hab echt keine Ahnung wie viel Arbeit das wohl sein kann, da was passendes zu schreiben...

LG
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.787
313
Düsseldorf
Über die Bestellung kommst Du da nicht weiter, da es kein passendes Ereignis gibt. Schau Dir mal den Wareneingang eines Artikels (Plusbuchung) an. Da habe ich gerade so etwas wie "LieferantenBestellPos" mit vielen Eigenschaften (auch Hinweis) gefunden. Vielleicht kommst Du damit ja weiter?
 

René_FBA

Gut bekanntes Mitglied
6. Juli 2017
134
10
Hallo Xantiva,

Danke für die Antwort... ;)
Ja, da hab eich es auch schon versucht, komme aber leider da auch nicht weiter. Denn wenn in der WMS eine Bestellung bestätigt und eingebucht wird, werden dort die Hinweise (hier FBA) wohl nicht übernoommen, daher "sieht" die WaWi das nicht, wenn es eingebucht wird. Möglicherweise habe ich da aber auch einen Denkfehler, jedoch funzt das mit "LieferantenBestellPos" nicht, hatte ich versucht...

LG
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
Hallo René,

ich mache weder FBA noch WMS, habe also eigentlich perfekte Voraussetzungen, um Dir hier zu helfen, aber probieren kann man es ja mal ... ;)

Der SQL Teil der Abfrage ist eigentlich ganz einfach und ich kann zwar nicht wirklich sagen, ob das WMS die Hinweise schluckt, oder nicht, aber falls nicht, dann führt der Weg zu den relevanten Daten über die drei Tabellen tWarenLagerEingang, in der Deine Warenlagereingänge stehen und wo die Bestellpositionen aus tLieferantenBestellPos referenziert werden, wo wiederum die Nummer der Lieferantenbestellung aus tLieferantenBestellung zu finden ist. Vielleicht "siehst" Du die Hinweise also nur nicht mehr, sie sind aber noch erreichbar?

Probier mal folgenden Code...
Code:
{% capture query -%}
SELECT t1.cArtNr, t1.cName, t2.fAnzahl from tWarenLagerEingang as t2
    INNER JOIN tLieferantenBestellungPos as t1 ON t1.kLieferantenBestellungPos=t2.kLieferantenBestellungPos
    INNER JOIN tLieferantenBestellung as t3 ON t3.kLieferantenBestellung=t1.kLieferantenBestellung
    WHERE t1.cHinweis LIKE '%FBA%' AND t1.kLieferantenBestellung={{ Vorgang.InterneLieferantenbestellungsnummer }}
{% endcapture -%}
{% assign FBAEingang = query | DirectQuery -%}
{% for item in FBAEingang.Daten -%}
ArtNr: {{ item.cArtNr }}; Name: {{ item.cName }}; Menge: {{ item.fAnzahl  | FormatNumber: 'N2', 'de-DE' }}
{% endfor -%}

Hinweise zum "wieso so":

Diese SQL Query gibt ja zumindest potentiell mehrere Zeilen zurück und deshalb kann man die Rückgabe nicht einfach ausgeben, sondern muss sie zuerst in einer Variablen (oder eher einem Array) speichern und das dann auslesen. Diese Zuweisung der SQL Rückgabe in das Array wird per Assign Tag gemacht.

DotLiquid ist aber extrem schwach auf der Brust, was die Abarbeitung von Schachtelungen in Tags angeht und man kann (offensichtlich) in Assign nicht gleichzeitig einen String aus fixen und dynamischen Anteilen zusammenstöpseln und ihn dann auch gleich noch als SQL Query ausführen. Vielleicht geht das natürlich "irgendwie", aber dann habe ich das noch nicht herausgefunden. An mangelndem Einsatz hat es nicht gelegen ...

Ich musste die Abfrage oben also in zwei Teile teilen. Zuerst habe ich separat die SQL Query selbst im String "query" zusammengestellt und dann erst habe ich mit {% assign FBAEingang = query | DirectQuery -%} die SQL Query ausgelöst und das tabellarische Ergebnis nach FBAEingang geschrieben.

Der Rest, also das Auslesen der "items" aus dem Array ist dann ja trivial. Angesprochen werden die Variablen über die Namen aus der SQL Query und wie Du siehst, kannst Du in der Ausgabezeile alles mögliche einfach so um die Variablen herumschreiben und DotLiquid gibt das brav zurück.

Wenn/falls WMS also Deine "FBA" Hinweise nicht wirklich geschluckt hat, sollte das oben funktionieren... :)

Gruß,
Ingmar
 
  • Gefällt mir
Reaktionen: René_FBA

René_FBA

Gut bekanntes Mitglied
6. Juli 2017
134
10
Gaaaaaanz ganz lieben Dank, Ingmar!

ich werde das sofort testen und berichten. Ich muss nur noch auf einen echten Wareneingang warten mit entspr. Hinweis, da die Simulation hier Chaos auslösen würde. ;)
Denke aber, dass ich alsbald Rückmeldung geben kann.

Edith meint:// für doofe wie mich: Ich gehe in Workflows->Artikel->Warenlagereingang->Plusbuchung und lege dort den WF an, richtig soweit? Dann über erweiterte Eigenschaften und dort den Code rein? Wenn ja, dann im Dropdown auf "gleich" oder was? Und das Textfeld daneben will auch gefüllt werden?
Sorry, das überfordert mich gerade etwas als Anfänger. ;)

P.S.: gibt es seitens der Workflows Möglichkeiten, eine aussagekräftige Debug-Ausgabe oder sowas zu generieren? Denn WENN das nicht funktionieren SOLLTE, wo erkenne ich die Ursache?

LG, René
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
Hallo René,

wo Du das für WMS Buchungen am besten anlegst, kann ich leider nicht 100% sagen, aber die Möglichkeiten sind ja endlich. Ich habe das Ganze nicht unter "Artikel > Warenlagereingang > Plusbuchung" gemacht, sondern unter "Einkauf > Lieferantenbestellungen > Lieferantenbestellungsposition_reduziert".

Mein Gefühl sagt mir eigentlich, dass Letzteres richtiger wäre, denn unter "Artikel" schaust Du auf die Welt aus dem Blickwinkel EINES Artikels und das klingt mir nicht nach dem, was Du willst, denn Du willst doch dann, wenn eine Lieferantenbestellung mit potentiell mehreren Positionen reingekommen ist, alle Positionen, die eingebucht (reduziert) worden sind, abarbeiten und Dir eine Email schreiben, wenn bei einer oder mehreren Dein Warnhinweis auftaucht.

Wie gesagt, da ich weder WMS noch FBA mache, kann es sein, dass da noch ein bißchen finale Fingerhakelei nötig ist, um den richtigen Platz für Deine Query zu finden, aber falls die Query erst einmal *grundsätzlich* das tut, was Du willst, ist der Rest vermutlich ein Kinderspiel.

Eine Debug-Konsole oder ähnliches gibt es in DotLiquid leider nicht, da ist echt Blindflug angesagt. Der Weg führt wirklich nur darüber, sich im JTL Guide und in anderen Webresourcen, z.B. hier und hier das nötige (bißchen) Grundwissen darüber raufzuschaffen, was Tags und was Filter sind und wie man formatiert, verkettet, etc. - Das ist deutlich einfacher strukturiert und viel weniger komplex als in den meisten anderen Programmier- oder Skriptsprachen, aber ganz am Angang genauso frustrierend und das Fehlen einer Umgebung mit Debug-Konsole und Variablenbrowser usw. ist da nicht hilfreich. - Aber hinter dem Berg kommt das Tal, versprochen... :)

Nachtrag/Edit: Ich lege solche Workflows tatsächlich immer erst einmal im Bereich "Manuell" an, hier also "Einkauf > Lieferantenbestellungen-Manuell", weil man dann die Kontrolle über die Ausführung hat. Workflow anlegen und im Editor testen und dann in den Bereich Einkauf wechseln, eine Zielbestellung mit der Maus markieren und den Workflow dann manuell auslösen. Damit kannst Du schnell rausbekommen, ob der Workflow "im realen Leben" funktioniert und dann erst kopierst Du ihn in einen der automatisch ausgeführten Bereiche.

Gruß,
Ingmar
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: René_FBA

René_FBA

Gut bekanntes Mitglied
6. Juli 2017
134
10
Hey Ingmar,

Ok, das macht Sinn, was Du schreibst. Ich habe den WF jetzt in "Einkauf > Lieferantenbestellungen > Lieferantenbestellungsposition_reduziert" eingestellt, jedoch bin ich immernoch nicht im klaren darüber, was ich (nachdem ich den Code über erw. Eigenschaften gespeichert habe) im DropDown-Menu daneben auswählen soll. Ist gleich? Enthält? Und welche Eingabe daneben? Das will ja definiert werden, damit ich den WF überhaupt speichern kann.
Vielleicht kannst Du mir da noch den entscheidenden Tipp geben, damit ich es testen kann...

//EDIT: ich stelle fest, dass ich nichtmal sicher bin, ob ich den Code als Ausgabe in der eMail einsetzen muss, um die Daten angezeigt zu bekommen, oder ob sie als manuelles Ereignis angelegt werden müssen... :(
Sorry, es überfordert mich. Need Help...

LG, René
 
Zuletzt bearbeitet:

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
Hallo René,

ich war Gestern unterwegs, habe jetzt aber Zeit gehabt, den Faden einmal weiterzuspinnen...

1. Der Bereich "Einkauf" ist doch nicht geeignet, denn hier werden nur Aktionen auf Ereignisse hin ausgelöst, die etwas mit dem Status von Lieferantenbestellungen zu tun haben, aber nicht mit den zugehörigen Warenlagereingängen.Der Bereich "Lieferantenbestellungsposition_reduziert" reagiert also auch nicht auf Warenlagereingänge, sondern (wie der Name schon sagt) darauf, wenn man die Bestellung editiert und eine Positionsmenge reduziert.

2. Der Workflow muß also in den Bereich "Artikel" und dort in den Unterbereich "Warenlagereingang > Plusbuchung". Die einzige Änderung am Workflow ist aber die Referenzierung der Lieferantenbestellungsnummer am Ende der SQL Query, die dann nicht mehr {{ Vorgang.InterneLieferantenbestellungsnummer }} sondern {{ Vorgang.LieferantenBestellungPos.Lieferantenbestellung.InterneLieferantenbestellungsnummer }} lauten muss.

3. Workflow anlegen
- Du legst also in "Artikel > Warenlagereingang > Plusbuchung" einen Workflow an und gibst ihm gleich einen aussagekräftigen Namen.
- Im Dropdownfeld wählst Du den oder die Bereiche an, in denen der Workflow gelten soll, "Alle" würde gehen, vermutlich wird der WF bei Dir von WMS ausgelöst.
- Rechts daneben wählst Du sofort, um sofort nach einer solchen Plusbuchung informiert zu werden.

4. Bedingung festlegen
- Oben legst Du eine Bedingung an, wählst aus dem DropDown Menü "Erweiterte Eigenschaften verwalten" aus, legst eine neue an, gibst ihr einen Namen und kopierst den Code dort rein.
- Achtung: Änderung der Lieferantenbestellungsnummer wie oben unter 2. nicht vergessen.
- Diese Erweiterte Eigenschaft wählst Du dann für die Bedingung aus und wählst in der Mitte als Vergleichsoperator "Ist nicht leer", das Wertefeld rechts wird ausgeblendet.

5. Aktion festlegen
- Über den Code in der Bedingung hast Du ja eigentlich schon ein Array "FBAEingang" erzeugt und mit Werten gefüllt, Variablen aus der Bedingung haben aber in der Aktion (leider) keine Gültigkeit mehr. Du musst also in der Aktion die Abfrage über den Code noch einmal ausführen, um die Wareneingänge angezeigt zu bekommen.
- Aktionstyp: E-Mail senden, die Wawi muß natürlich in "Admin > Firmen-/Email-Einstellungen" für den Email-Versand eingerichtet sein.
- Empfänger: Entweder fest (D)eine Email oder über den "..." Button ganz rechts auch aus den Wawi Daten ableitbar, z.B. {{ Vorgang.Benutzer.EMail }}
- Betreff: Was Du willst, aber wie Du siehst, auch über den "..." Button aus den Wawi Daten ableitbar.
- Text: Hier generierst Du den Text der Email und zwar inklusive der SQL Abfrage und der Extraktion der Werte aus dem Array. Das könnte dann z.B. so aussehen ...
Code:
Hallo {{ Vorgang.Benutzer.Name }},

die von Dir erwarteteten Artikel sind am {{ Vorgang.Angelegt | Date:'dd.MM.yyyy' }} um {{ Vorgang.Angelegt | Date:'HH:mm' }} eingetroffen.

ArtNr.      Menge   Beschreibung
--------------------------------------------------------------
{% capture query -%}
SELECT t1.cArtNr, t1.cName, t2.fAnzahl from tWarenLagerEingang as t2
    INNER JOIN tLieferantenBestellungPos as t1 ON t1.kLieferantenBestellungPos=t2.kLieferantenBestellungPos
    INNER JOIN tLieferantenBestellung as t3 ON t3.kLieferantenBestellung=t1.kLieferantenBestellung
    WHERE t1.cHinweis LIKE '%FBA%'
        AND t2.dErstellt >= CONVERT(DATETIME,'{{ Vorgang.Angelegt | Date:'yyyyMMdd HH:mm:ss.000'}}')
        AND t1.kLieferantenBestellung={{ Vorgang.LieferantenBestellungPos.Lieferantenbestellung.InterneLieferantenbestellungsnummer }}
{% endcapture -%}
{% assign FBAEingang = query | DirectQuery -%}
{% for item in FBAEingang.Daten -%}
{{ item.cArtNr }}   {{ item.fAnzahl  | FormatNumber: 'N2', 'de-DE' }}    {{ item.cName }}
{% endfor -%}

Viele Grüße,
JTL-WMS

... und der Teil von {% capture query -%} bis hinter {% endfor -%} ist exakt der Code, der oben unter 4. in der Erweiterten Eigenschaft der Bedingung eingefügt werden muss.

Was ist hier noch anders? - Wenn Du mal in die SQL Query schaust, siehst Du dort eine neue Zeile mit ...
Code:
AND t2.dErstellt >= CONVERT(DATETIME,'{{ Vorgang.Angelegt | Date:'yyyyMMdd HH:mm:ss.000'}}')

... und was die macht, ist sicherzustellen, dass Du nur den aktuellen Warenlagereingang per Email bekommst.

Wenn man diese Zeile wegläßt, würden Dir Heute nicht nur die Heute reingekommenen FBA Artikel gemailt werden, sondern auch die, die schon Gestern reingekommen sind, aber zur gleichen Bestellung gehören.

Da steckt ne Menge Potential drin, denn durch kleine Veränderungen an dieser Zeile kannst Du z.B. alle HEUTE oder alle in dieser STUNDE reingekommenen FBA Artikel anfordern und mit einer kleinen Änderung am SQL Befehl auch alle, die GESTERN reingekommen sind und wenn Du immer alle zu einer Bestellung gehörenden FBA Artikel gemeldet bekommen möchtest, kannst Du diese Zeile einfach ersatzlos streichen.

P.S. Die Formatierung mit Leerzeichen/Tabs oben im Email-Text kannst Du übrigens vergessen, denn die kommt nur rüber, wenn Dein Mail-Programm mit einem Font mit festen Schrittweiten arbeitet (z.B. Courier), aber es hält Dich ja z.B. auch niemand davon ab, daraus eine HTML Email-Variante zu stricken und hier als Erweiterung reinzustellen ... ;)

Gruß,
Ingmar
 
  • Gefällt mir
Reaktionen: Xantiva und René_FBA

René_FBA

Gut bekanntes Mitglied
6. Juli 2017
134
10
Hallo Ingmar!

Vielen vielen Dank für diese ausführliche Anleitung, das hat mir sehr geholfen. Bislang war das bei mir "try-and-error", kann mir aber so sehr viel zeit sparen. Danke nochmals!

Ich habe Deine Anleitung befolgt, jeden Schritt eingehalten und den Workflow erst simuliert ohne eMail, dann, nachdem das zu funktionieren schien, mit eMail-Versand. Was soll ich sagen...... :D

---- funktioniert ---- !!!

Ich muss das jetzt natürlich noch "live" abwarten und unserem Wareneingang sagen, dass in Zukunft immer Bestellungen bestätigt werden, nicht freier Wareneingang benutzt wird, sollte dann problemlos klappen, denn sonst wäre der Vermerk FBA nicht drin. Wenn das alles live funktioniert, dann werde ich das noch verfeinern, daraus dann eine HTML-eMail machen, die grafisch ansprechend ist und bei der auch im Code Beschreibungs-Markierungen sind für diejenigen, die am Inhalt etwas verändern wollen. Das wird dann mein Beitrag, was für die Community zu tun.

Ingmar,
Du hast Dir am WE ein Bierchen verdient. ;)

Danke und sonniges Wochenende,
René
 

René_FBA

Gut bekanntes Mitglied
6. Juli 2017
134
10
Hey Ingmar,

habe heute einen kleinen "Bug" im Script gefunden.
- Wenn in der WMS eine Bestellung bestätigt wird, bekomme ich eine korrekte Ausgabe in der eMail.
- Wenn jedoch ein Artikel dabei ist, der "Kinder" hat, so bucht unser Wareneingang diese Artikel über den "freien Wareneingang", die eMail wird mir zwar dann zugestellt (!), aber ohne Auflistung der Artikel - nur das Einbuchungsdatum/-Uhrzeit wird dargestellt.

der Abschnitt ab "ArtNr." funktioniert da nicht mehr, die eMail bleibt ab da leer, keine Auswertung erfolgt.

Das Script "sieht" aber, DASS die Ware gekommen ist, listet mir aber die Anzahl, Artikelnummer etc nicht auf, weil es über den freien Wareneingang den Hinweis " FBA" nicht gibt, vermutlich.

Müssen dann die Daten für so einen Fall woanders abgegriffen werden? Es ist ja dann nicht mehr der Vorgang, der bestätigt wird und die korrekte Kette auslöst, sondern ein freier Wareneingang, wenn es auch den gleichen Artikel betrifft.
Ich vermute, dass das jetzt als "Feintuning" gilt - aber dann wäre der Weg des Wareneingangs in Zukunft egal, ich bekäme immer eine Bestätigung, sobald meine Ware eingebucht wurde.

Geht das?

LG, René
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
Hi René,

nee, ein Bug ist das nicht, sondern "by Design" ... ;)

Die grundsätzliche Idee ist ja, dass Du eine Email bekommen willst, wenn ein Artikel eingebucht wird UND im Hinweistext " FBA" steht und das ist,wie Du ja schon selbst oben in #10 schreibst, bei freien Wareneingängen nicht der Fall.

Wenn Du Dir den Code oben anschaust, dann siehst Du dort gleich zwei INNER JOINS der Warenlagereingänge mit Tabellen aus dem LieferantenBestellungs-Bereicht. INNER JOIN heißt aber, dass die Schnittmenge der beiden Tabellen über die angegebene Bedingung gebildet wird und wenn - wie beim freien Wareneingang - keine Lieferantenbestellung angesprochen wird, dann steht im Warenlagereingang auch keine Referenz auf eine solche Bestellung ... und die Schnittmenge ist leer!

Eigentlich ist es also ein Wunder, dass Du dafür überhaupt eine Email bekommst und ehrlich gesagt kann das nur bedeuten, dass Du bei der Einrichtung des Workflows einen Fehler gemacht hast, denn die Idee war ja, den gleichen Code auch in der Workflow Bedingung einzusetzen und dort nach "ist nicht leer" zu prüfen. Wenn die Schnittmenge bei dieser ersten Prüfung in "Bedingung" leer ist, dann ist auch die Rückgabe vom Code leer und die Workflow Aktion würde nicht ausgeführt werden, also keine Email versandt werden.

So, genug darüber geschrieben, warum ICH Recht habe :) jetzt zu Dir: Ich weiß nicht wirklich, wie ich Dir hier helfen kann, denn natürlich ist es trivial, einen SQL Code und Workflow zu bauen, der bei Deinen freien Warenlagereingängen greift, aber der greift dann bei ALLEN Warenlagereingängen und das Ganze hat dann auch nichts mehr mit "FBA" Anlieferungen zu tun. - Lass mal hören, wie Du Dir den Prozess vorstellst, vileleicht fällt mir ja was ein.

Gruß,
Ingmar
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
Hi René,

aaahhh, mir deucht was: Kann es sein, dass Du den GESAMTEN Code, also mitsamt dem "Hallo {{ Vorgang.Benutzer.Name }}" Teil und so weiter in die Erweiterte Eigenschaft bei der Workflow Bedingung kopiert hast? Das würde die Emails erklären, denn dann kann die Schnittmenge zwischen Warenlagereingang und Lieferantenbestellung noch so leer sein, der Code würde immer zumindest "Hallo René..." usw. zurückgeben und damit nie leer sein!

In die Erweiterte Eigenschaft in der Workflow Bedingung muß nur der reine SQL Abfrageteil, also ...
Code:
{% capture query -%}
SELECT t1.cArtNr, t1.cName, t2.fAnzahl from tWarenLagerEingang as t2
    INNER JOIN tLieferantenBestellungPos as t1 ON t1.kLieferantenBestellungPos=t2.kLieferantenBestellungPos
    INNER JOIN tLieferantenBestellung as t3 ON t3.kLieferantenBestellung=t1.kLieferantenBestellung
    WHERE t1.cHinweis LIKE '%FBA%'
        AND t2.dErstellt >= CONVERT(DATETIME,'{{ Vorgang.Angelegt | Date:'yyyyMMdd HH:mm:ss.000'}}')
        AND t1.kLieferantenBestellung={{ Vorgang.LieferantenBestellungPos.Lieferantenbestellung.InterneLieferantenbestellungsnummer }}
{% endcapture -%}
{% assign FBAEingang = query | DirectQuery -%}
{% for item in FBAEingang.Daten -%}
{{ item.cArtNr }}   {{ item.fAnzahl  | FormatNumber: 'N2', 'de-DE' }}    {{ item.cName }}
{% endfor -%}

Gruß,
Ingmar
 

René_FBA

Gut bekanntes Mitglied
6. Juli 2017
134
10
Guten Morgen Ingmar!

nee, in den erw. Eigenschaften habe ich natürlich NUR den Code kopiert. ;)
Bei "Aktionen" habe ich im eMail Text dann:

Code:
Hallo,

die folgenden FBA Artikel sind am {{ Vorgang.Angelegt | Date:'dd.MM.yyyy' }} um {{ Vorgang.Angelegt | Date:'HH:mm' }} eingebucht worden.

ArtNr.      Menge   Beschreibung
--------------------------------------------------------------
{% capture query -%}
SELECT t1.cArtNr, t1.cName, t2.fAnzahl from tWarenLagerEingang as t2
    INNER JOIN tLieferantenBestellungPos as t1 ON t1.kLieferantenBestellungPos=t2.kLieferantenBestellungPos
    INNER JOIN tLieferantenBestellung as t3 ON t3.kLieferantenBestellung=t1.kLieferantenBestellung
    WHERE t1.cHinweis LIKE '%FBA%'
        AND t1.kLieferantenBestellung={{ Vorgang.LieferantenBestellungPos.Lieferantenbestellung.InterneLieferantenbestellungsnummer }}
        AND t2.dErstellt >= CONVERT(DATETIME,'{{ Vorgang.Angelegt | Date:'yyyyMMdd HH:mm:ss.000'}}')
{% endcapture -%}
{% assign FBAEingang = query | DirectQuery -%}
{% for item in FBAEingang.Daten -%}
{{ item.cArtNr }}   {{ item.fAnzahl  | FormatNumber: 'N2', 'de-DE' }}    {{ item.cName }}
{% endfor -%}

Gruss,
René :)

Die Tatsache, dass ich bei der freien Einbuchung ohne Hinweis " FBA" DOCH eine eMail bekomme, allerdings nur mit dem Text Inhalt, ohne die SQL-Daten, zeigt, dass da noch mehr drin steckt...
Das bedeutet doch also, dass er anhand der Bedingung ( {% capture query -%} bis {% endfor -%} ) etwas entdeckt, auch, wenn es dort auf "ist nicht leer" steht. Ich vermute, dass es daran liegt, dass der Bestellvorschlag zu diesem Artikel ja erstmals den hinweis "FBA" enthielt und sich das durch den ganzen Prozess der Bestellung ja auch nicht verliert. Erst der Wareneingang, der über "freien Wareneingang" nun diesen Artikel einbucht, "löscht" diesen Eintrag raus, bzw. trägt diesen bei der freien Buchung nirgends ein. Aber der Eintrag ist ja in der SQL vorhanden, bei diesem Artikel/dieser Bestellung. Liegt es daran, dass der eine eMail schickt?

Kannst Du mir folgen? ;)

René
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
Hi René,

ehrlich gesagt, kann ich Dir nicht folgen, will es aber gerne versuchen, denn ich denke, dass ich erst probieren kann, wenn ich die Reihenfolge und Logik Eurer Handgriffe kenne und/oder begreife.

Möglich wäre ja z.B., dass ihr im Wareneingang zuerst eine Lieferantenbestellung auswählt oder eben den Wareneingang aus der LF Bestell-Liste direkt aufruft, egal, und dann - ohne den WE Bereich zu verlassen - manche Artikel zusätzlich über den Buton "freier Wareneingang" dazu bucht? Ich würde zwar im Moment nicht verstehen, wann und warum das notwendig ist, aber genau das ist vermutlich der Knackpunkt.

Lange Rede, kurzer Sinn, wenn Du mir hilfst, zu verstehen, was genau ihr da treibt, schaue ich mir gerne an, warum der Workflow da was sieht, dann aber irgendwie doch nicht...

Gruß,
Ingmar
 

René_FBA

Gut bekanntes Mitglied
6. Juli 2017
134
10
Hey Ingmar,

na klar versuche ich Dir das zu erklären.... ;)

folgende Situation:
Wenn Ware von einem bestimmten Hersteller/Lieferanten kommt, wird anhand des Lieferscheins in der WMS geprüft, welche Bestellung dort dazu "passt". Dann wird die Bestellung dort in der WMS aufgerufen, jede Position mit der eingetroffenen Menge "bestätigt"/eingebucht, fertig. Bei dieser Vorgehensweise bekomme ich eine korrekte eMail, mit befüllten Daten/Details, da der Eintrag FBA ja nicht "verloren" geht.

andere Situation:
Wenn Ware von einem bestimmten Hersteller/Lieferanten kommt, wird anhand des Lieferscheins in der WMS geprüft, welche Bestellung dort dazu "passt". Dann wird die Bestellung dort in der WMS aufgerufen, jede Position mit der eingetroffenen Menge "bestätigt"/eingebucht, fertig. Aaaaaaber: manchmal ist ein Artikel dabei, der "kinder" hat, dann, in diesen Fällen, kann man in der WMS scheinbar diese Position nicht bestätigen/einbuchen, sondern muss die Einbuchung über den freien Wareneingang, dann aber konkretisiert (welches "Kind") vornehmen. Bei dieser Art gibt es keinen Eintrag FBA, nachvollziehbar.

Aber dennoch bekomme ich bei diesen Artikeln eine eMail - wenn auch ohne konkrete Daten aus der SQL.

war das etwas verständlicher?

LG, René
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
Hallo René,

eigentlich meinte ich das genaue "wie" für den Schritt mit dem Übergang von WMS zu freiem Wareneingang... :) - Aber egal, ich habe eh kein WMS und das Testen wäre nicht wirklich möglich gewesen, oder zumindest sehr aufwändig für mich, weil ich mich dann erst in WMS einarbeiten müsste. Die Zeit habe ich leider nicht.

Was Du aber selbst noch machen kannst, um der Sache auf den Grund zu gehen ist folgendes:

1. Die Workflow-Aktion würde ja nicht ausgelöst werden, wenn der SQL Code in der Bedingung nicht etwas anderes als "" zurückliefert.
2. Du gehst also in den Workflow und dort in den Erweiterten Eigenschaften für die Bedingung für den FBA Workflow
3. Du klickst unten rechts auf "Vorschau-Wareneingang wählen", gibst im neuen Fenster oben die Artikelnummer des per "freien Wareneingangs" eingebuchten Artikels ein.
4. Dann sortierst absteigend nach "Eingebucht am" und doppel-klickst auf den korrekten Wareneingang, der die komische Reaktion auslöst.
5. Zurück im Code-Fenster klickst Du unten auf "Vorschau (Text)" und schaust, was da ausgegeben wird.

Auch wenn der Bildschirm leer aussieht können hier noch Leerzeilen stehen...

6. Dann gehst Du unten auf "Rohdaten" und schaust, ob die letzte links angezeigte Zeilennummer die der letzten Zeile des Codes ist, sonst haben wir den Bösewicht schon gefunden. Leerzeilen müssen weg.
7. Dann (falls es nicht Leerzeilen waren) tippst Du DIREKT vor den ersten Buchstaben und DIREKT hinter den letzten Buchstaben des Codes jeweils ein "#" ein.
8. Dann wieder in "Vorschau (Text)" gehen und jetzt sollten nur zwei "#" nebeneinander stehen, sonst nichts.

Falls dort außer den "#" noch etwas anderes steht, oder aber in Schritt 5 sofort klar war, dass da was ausgegeben wird, dann melde mir doch bitte mal zurück, was da ausgegeben wird.

Gruß,
Ingmar
 
Zuletzt bearbeitet:

René_FBA

Gut bekanntes Mitglied
6. Juli 2017
134
10
Guten Morgen Ingmar,

ich habe den Test, wie von Dir beschrieben, durchgeführt.

zu Punkt 5): das Vorschaufenster ist leer, GANZ leer, ich habs mit den Rauten getestet. Im Code gibt es keine Leerzeilen.

Ich hab 4 eMail bekommen, eine davon mit korrekt gefüllten Daten (Bestellung bestätigt, FBA Eintrag "weiter gegeben"), 3 eMails mit folgendem Inhalt (weil freier Wareneingang gebucht, aber 3 von mir bestellte Positionen):

Code:
Hallo,

die folgenden FBA Artikel sind am 20.07.2017 um 11:05 eingebucht worden.

ArtNr. Menge Beschreibung
--------------------------------------------------------------

Gruss,
René :)

...seltsam.

LG, René
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.292
395
Hallo René,

da ist gerade noch ein anderer Thread, in dem ich jemandem bei einer Sache mit Preisen und UVP geholfen habe und da taucht etwas ähnlich wirres/unglaubliches auf, was bei mir den Verdacht nährt, dass wir es vielleicht gar nicht mit etwas WMS spezifischem hier und mit Rundungsproblemen dort zu tun haben könnten, sondern dass vielleicht auch die Auslösung von Aktionen in Workflows durch die TESTS der Bedingungsresultate fehlschlagen könnte, ergo das Ganze vielleicht auch ein Bug in den Workflows selber sein könnte.

Wenn ich mir den Code oben, den Du in der Aktion stehen hast und den Output direkt hier drüber anschaue, dann sieht das so aus, als würde auch der Code in der Aktion schlicht NICHTS zurückliefern, was ebenfalls auf einen Fehler in der Evaluation der Bedingungsresultate hinauslaufen könnte, denn die Aktion weiß nichts von "zeig nur wenn was da ist", die führt stumpf aus.

Um das jetzt noch einmal (!) genau zu untersuchen, möchte ich Dich noch um einen weiteren Test bitten und zwar ganz analog zu oben, dass Du wieder DIREKT vor den ersten Buchstaben des tatsächlichen Codes, also direkt vor das "{" der capture Zeile und DIREKT hinter das letzte Zeichen des Codes, also hinter das "}" der endfor Zeile ein "#" setzt und dann wieder schaust, was der Workflow Dir mailed.

>>> Wenn dann wieder nur zwei "#" nebeneinander stehen, direkt darüber die "---" Zeile, darunter die eine (1!) geplante Leerzele und dann "Gruss,", dann gibt der Code auch hier tatsächlich NICHTS zurück und dann wird es Zeit sich an JTL zu wenden, dass die da mal draufschauen, denn dann liefert auch die Bedingung wirklich nichts/niente/nüschte zurück und die Workflow-Aktion dürfte NICHT ausgeführt werden.

P.S. Dass das bei Dir offenbar nur bei bestimmten Artikeln und im freien Wareneingang auftritt, kann aber muss nichts bedeuten. An der Stelle hilft mir vielleicht das Problem im anderen Thread weiter...

Gruß,
Ingmar
 

René_FBA

Gut bekanntes Mitglied
6. Juli 2017
134
10
Guten Morgen Ingmar...

erst einmal vielen Dank für Deine selbstlose Hilfe, das kann ich gar nicht wieder gut machen. ;)

Ich habe den test nochmals ausgeführt und diesmal mit den Rauten vor und hinter dem ersten und letzten Zeichen - es findet eine Ausgabe in der Vorschau statt, allerdings einen anderen Artikel dieser Bestellung betreffend. Die Ausgabe zeigt
Code:
"#ArtNr: xxxx; Name: xxxx, Menge: 15,00#"
Wie gesagt, ist das aber nicht der Artikel, den ich für den Test ausgewählt habe, sondern scheinbar der erste Artikel der Bestellung als solches.

Hilft Dir das?

LG, René
 
Ähnliche Themen
Titel Forum Antworten Datum
Workflow für Amazon Zahlart erstellen JTL-Wawi 1.7 0
Gelöst Servicedesk Workflow Datei erstellen um einen Auftrag zu ändern Gelöste Themen in diesem Bereich 1
Neu Workflow: Alle Besteller über neues Erscheinungsdatum informieren JTL-Workflows - Ideen, Lob und Kritik 0
Neu Fehlermeldungen ausgeben in Workflow Mail? User helfen Usern - Fragen zu JTL-Wawi 0
Verwiesen an Servicepartner Workflow für Einkaufsliste User helfen Usern - Fragen zu JTL-Wawi 2
Neu JTL-Shop oder Workflow: Artikel mit Menge > 1 sollen trotzdem als separate Einzelartikel im Auftrag aufgeführt werden User helfen Usern - Fragen zu JTL-Wawi 0
Neu Workflow - Stücklisten im Auftrag abfragen und korrekt in einer Mail auflisten User helfen Usern - Fragen zu JTL-Wawi 1
Workflow = Gewinn unter 30 % vom netto = per Mail informiert JTL-Wawi 1.6 10
Verwiesen an Support BUG: Mahnlauf über Workflow ignoriert Zahlungsziel JTL-Workflows - Fehler und Bugs 3
Neu Wie gebrauchte Waren bei Ebay einstellen? Workflow User helfen Usern - Fragen zu JTL-Wawi 0
Neu Workflow - Mobile App Neukunden identifizieren User helfen Usern - Fragen zu JTL-Wawi 4
Neu Workflow - Stücklistenartikel abfragen User helfen Usern - Fragen zu JTL-Wawi 2
Neu Workflow - Positionen an Dropshipping-Lieferant mailen. Warum funktioniert dieser Code nicht? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Workflow bei Login in WMS / WAWI starten User helfen Usern - Fragen zu JTL-Wawi 10
Neu Workflow - als Bedingung Standard-Dropshipping-Lieferantenname prüfen Gelöste Themen in diesem Bereich 5
Nach Aufruf von Stored Procedure 'Kunde.spKundeUpdate' schwere Fehler in JTL (z.B. Kundenliste, Workflow-Editor) JTL-Wawi 1.8 2
Neu Feldname für Workflow herausfinden User helfen Usern - Fragen zu JTL-Wawi 4
Workflow - internationaler Auftrag -> Artikelname aus Stammdaten JTL-Wawi 1.7 1
JTL Mahnwesen Workflow- Email nach 30 Tagen noch nicht bezahlt. JTL-Wawi 1.8 2
Neu Workflow der bei Stücklisten: Überverkäufe de-/aktivieren User helfen Usern - Fragen zu JTL-Wawi 11
Neu Workflow Aktion E-Mail senden kann nicht Plain und HTML Email zusammen versenden Arbeitsabläufe in JTL-Wawi 6
Workflow Manuell HTML Request wie Server Antwort verarbeiten JTL-Wawi 1.7 0
Workflow Marktplätze - Otto, Kaufland, etc. JTL-Wawi 1.6 0
Workflow Artikel + Anzahl in Einkaufsliste aktualisieren JTL-Wawi 1.8 0
Neu Workflow Web-Request Post für mollie Arbeitsabläufe in JTL-Wawi 6
Workflow MwSt.-Sätze ersetzen 0% -> 19% ändert netto in Positionen aber nicht in der Auftragssumme JTL-Wawi 1.7 2
Neu API Integration via Workflow Arbeitsabläufe in JTL-Wawi 10
In Diskussion Automatische Zuweisung der Kategorien für Artikel durch Workflow JTL-Workflows - Ideen, Lob und Kritik 3
In Bearbeitung Workflow offene Aufträge zusammenfassen bei ausgelieferten JTL-Workflows - Ideen, Lob und Kritik 1
Neu Workflow-Auswahl ... mit ins Kontext-Menü aufnehmen (rechten Maustaste) JTL-Wawi - Ideen, Lob und Kritik 2
Neu Benachrichtigung per Workflow bei Wareneingang User helfen Usern - Fragen zu JTL-Wawi 24
Workflow für Artikel versandklassen JTL-Wawi 1.7 1
Gelöst Per Workflow im Servicedesk eine Mail versenden. Gelöste Themen in diesem Bereich 4
Workflow für Versandart Wenn/Und JTL-Wawi 1.7 0
In Diskussion Workflow von Stornobelege Rechnung JTL-Workflows - Ideen, Lob und Kritik 1
Workflow Auftraqspositionen per Email an Kunden senden JTL-Wawi 1.7 3
Neu Workflow mit Freipositionen in Email Gelöste Themen in diesem Bereich 3
Neu Workflow > Rechnungen > Label Setzen ? (1.8.11) User helfen Usern - Fragen zu JTL-Wawi 6
Neu Workflow Ereignis auslösen wenn alle Bedingungen erfüllt sind. Sonst anderes Ereignis auslösen. JTL-Wawi - Ideen, Lob und Kritik 0
Beantwortet Kunde von Firma per Workflow setzen JTL-Workflows - Ideen, Lob und Kritik 1
Neu Workflow für Rechnung gesucht Arbeitsabläufe in JTL-Wawi 1
Workflow - Debitorennummer JTL-Wawi 1.8 4
In Diskussion Workflow - Artikelmerkmale setzen? JTL-Workflows - Ideen, Lob und Kritik 2
Workflow: Mahnungen - Fehler JTL-Wawi 1.8 5
Neu Workflow Lieferantenartikel-Nummer vor Artikelname setzen JTL-Wawi 1.7 1
In Diskussion Workflow wenn offene Rechnungen, dann weitere offene Aufträge sperren und im Kundensatz Sperrung setzten. JTL-Workflows - Ideen, Lob und Kritik 0
Workflow für Kaufland greift nicht mehr 1.8.11.0 kaufland.de - Anbindung (SCX) 5
[JTL-WAWI API] - Trigger Sales Order Workflow Event JTL-Wawi 1.8 3
Mandanten erstellen JTL-Wawi 1.8 6
Neu Wie kann ich mit der Wawi Ebay Rechnungen erstellen und nach ebay hochladen? eBay-Anbindung - Fehler und Bugs 3

Ähnliche Themen