JTL-Wawi Workflows - JTL

Werbung
JTL-Wawi
Workflows
Ein Workshop mit Dirk Lehmeier & Georg Jennessen
JTL-Wawi Workflows –Workshop
1.
Einfacher Workflow: Auftrag erstellt -> Benachrichtigung senden
-
Unter dem Ereignis Auftrag -> Erstellt, fügen wir einen neuen Workflow über den
Button „Hinzufügen“ ein.
Wir definieren keine Bedinungen
Über den Link „Neue Aktion“ wird die Aktion Email-senden hinzugefügt.
Über den Button „…“ können DotLiquid Variablen hinzugefügt werden.
o Bitte beachten: Fügt man DotLiquid Variablen direkt in das Textfeld ein,
werden diese nicht geparst!
1
JTL-Wawi Workflows –Workshop
2. Versandart bei internationalen Aufträgen ändern
-
Unter dem Ereignis „Auftrag erstellt“ erstellen wir einen neuen Workflow
„Versandart_Ändern_International“
Es werden 3 Bedingungen angelegt, die alle erfüllt sein müssen
Sind alle 3 Bedingungen erfüllt, wird durch die Aktion „Versandart ändern“ die
Versandart des Auftrags geändert.
2
JTL-Wawi Workflows –Workshop
3. Komplexe Bedingungen mit Regulären Ausdrücken
•
Match Deutschland: Deutschland oder ^Deutschland$
•
Nicht Deutschland: ^((?!(Deutschland)).) (negative lookahead)
•
Nicht Deutschland,Österreich oder Niederlande:
^((?!(Deutschland|Österreich|Niederlande)).)
Weitere Informationen zu regulären Ausdrücken in der MSDN:
https://msdn.microsoft.com/de-de/library/hs600312(v=vs.110).aspx
3
JTL-Wawi Workflows –Workshop
4. Beispiele für „Erweiterte Eigenschaften“ mit DotLiquid
Aufträge älter als 5 Tage
{% assign erstellt = Vorgang.Stammdaten.Erstelldatum | AddDays: 5 -%}
{% if Datum.Jetzt > erstellt -%} ja{% endif -%}
Auftrag zu 25% bezahlt
{% assign gesamtSummeAnzahlungen = 0.0 %}
{% for Zahlungen in Vorgang.Zahlungen.Zahlungen -%}
{%if Zahlungen.IstAnzahlung %}
{%assign betragAnzahlung = Zahlungen.Betrag | FormatNumber: 'N2', 'de-DE' | ToDouble %}
{% assign gesamtSummeAnzahlungen = gesamtSummeAnzahlungen | Plus: betragAnzahlung %}
{%endif%}
{% endfor -%}
{% assign auftragGesamtBrutto = Vorgang.Zahlungen.Gesamtbruttopreis | FormatNumber: 'N2', 'de-DE'
| ToDouble
%}
{% assign pw = 100.0 | DividedBy: auftragGesamtBrutto %}
{% assign prozentBezahlt = gesamtSummeAnzahlungen | Times:
{% if prozentBezahlt >= 25.0 %}
ja
{% endif %}
4
pw %}
JTL-Wawi Workflows –Workshop
5. SQL in „Erweiterten Eigenschaften“
Scalar Query
{% assign kArtikel = Vorgang.Allgemein.Stammdaten.InterneArtikelnummer
%}\
{% capture query -%}
SELECT cArtNr FROM tArtikel WHERE tArtikel.kArtikel = kArtikel
{% endcapture -%}
{% assign result = query | DirectQueryScalar %}
{{result}}
Query mit Resultset:
{% assign artNr = Vorgang.Allgemein.Stammdaten.Artikelnummer %}\
{% capture query -%}
SELECT * FROM tArtikel WHERE tArtikel.cArtNr LIKE '%{{artNr}}%'
{% endcapture -%}
{% assign Result = query | DirectQuery %}
{% for data in Result.Daten %}
{{data.cArtNr}}\
{% endfor %}\
5
JTL-Wawi Workflows –Workshop
Lager plus Zulauf kleiner Mindestbestand (für einen Auftrag)
{% assign warenlagerName = 'Außenlager' %}\
{% assign
bestandunterschritten = '' %}\
{% for Artikelbeschreibungen in Vorgang.AuftragsPositionen.Positionen -%}\
{% assign artikel = Artikelbeschreibungen.Artikel %}\
{% assign
auflager = 0.0 %}\
{% assign
zulauf = artikel.BestandBestellt %}\
{% assign
mindestbestand = artikel.Mindestbestand %}\
{% capture query -%}\
SELECT SUM(fBestand) as Menge FROM vLagerbestandproLager
JOIN tWarenlager on twarenlager.kWarenLager = vlagerbestandproLager.kwarenlager
WHERE twarenlager.cName = '{{ warenlagerName }}'
AND vLagerbestandproLager.kArtikel = {{ artikel.InterneArtikelnummer }}
{% endcapture -%}\
{% assign Anzahl = query | DirectQuery %}\
{% for anz in Anzahl.Daten %}\
{% assign
auflager = auflager |Plus: anz.Menge %}\
{% endfor %}\
{% assign lagerPlusZulauf = auflager | Plus: zulauf %}\
{%if lagerPlusZulauf
< mindestbestand %}\
Ja
{% endif %}\
{% endfor -%}
6
JTL-Wawi Workflows –Workshop
Lager plus Zulauf kleiner Mindestbestand (für einen Artikel)
{% assign warenlagerName = 'Standardlager' %}\
{% assign
bestandunterschritten = '' %}\
{% assign
auflager = 0.0 %}\
{% assign
zulauf = Vorgang.Bestandsübersicht.Zulauf %}\
{% assign
mindestbestand = Vorgang.Allgemein.Lager.Mindestbestand %}\
{% capture query -%}
SELECT SUM(fBestand) as Menge FROM vLagerbestandproLager
JOIN tWarenlager on twarenlager.kWarenLager = vlagerbestandproLager.kwarenlager
WHERE twarenlager.cName = '{{ warenlagerName }}'
AND vLagerbestandproLager.kArtikel = {{
Vorgang.Allgemein.Stammdaten.InterneArtikelnummer }}
{% endcapture -%}
{% assign Anzahl = query | DirectQuery %}
{% for anz in Anzahl.Daten %}
{% assign
auflager = auflager |Plus: anz.Menge %}
{% endfor %}
{% assign lagerPlusZulauf = auflager | Plus: zulauf %}
{% comment DEBUG
-%}
auflager: {{auflager}}
artikelid:{{ Vorgang.Allgemein.Stammdaten.InterneArtikelnummer}}
zulauf:{{ zulauf }}
lagerpluszulauf:{{ lagerPlusZulauf }}
mindestbestand: {{ mindestbestand }}
{% endcomment -%}
{%if lagerPlusZulauf
< mindestbestand %}
{% assign bestandunterschritten = 'Ja' %}
{% endif %}
{{bestandunterschritten}}
7
JTL-Wawi Workflows –Workshop
6. Ameise und JTL-Workflows


Zum Exportieren von Daten kann man sehr gut die Aktion „Ausgabe verwenden“
Wenn man danach direkt wieder Daten mit der Ameise importieren will, ist darauf zu
achten, das „Auf Aktion warten“ angehakt ist
Aufruf der Ameise über die Aktion „Ausführen“
Parameter:
-s SQL-Server Instanz
-d Datenbankname
-u Benutzername
-p Passwort
-t ID der Importvorlage
-i Dateiname der zu importierenden Datei
-o Dateiname für eine exportierende Datei
Beispiel:
-s PCName\SQLSERVERINSTANZ –d datenbankname –u sa –p sa04jT14 –t IMP3 –i C:\Temp\data.csv
8
JTL-Wawi Workflows –Workshop
7. Beispiel: Ftp-Upload
 Auftrag wurde erstellt
 Ist komplett Dropshipping Lieferbar
 Ausliefern
 Lieferantenerstellung wurde erstellt
 Export der Lieferantenbestellung
 Upload per Ftp
9
JTL-Wawi Workflows –Workshop
Beispiel Ftp-Upload Batch Datei (upload.bat)
c:
cd "c:\temp\connect\ftp\Dropshipper"
REM Set vars
set server=ftpserver.de
set user=username
set password=password
:TRYAGAIN
set csvCount=0
for %%f in (*.csv) do set csvCount=%csvCount%+1
echo %csvCount%
IF %csvCount%==0 GOTO NOTHINTODO
REM login
echo open %server%>> "c:\temp\connect\ftp\Dropshipper\temp.tmp"
echo %user%>> "c:\temp\connect\ftp\Dropshipper\temp.tmp"
echo %password%>> "c:\temp\connect\ftp\Dropshipper\temp.tmp"
del c:\temp\connect\ftp\Dropshipper\ausgabe.txt
REM execute stuff
echo cd Dropshipper>> "c:\temp\connect\ftp\Dropshipper\temp.tmp"
for %%f in (*.csv) do echo put "c:\temp\connect\ftp\Dropshipper\%%f">> "c:\temp\connect\ftp\Dropshipper\temp.tmp"
echo dir>>"c:\temp\connect\ftp\Dropshipper\temp.tmp"
echo bye>>"c:\temp\connect\ftp\Dropshipper\temp.tmp"
REM run the ftp script
ftp -s:"c:\temp\connect\ftp\Dropshipper\temp.tmp" >> "c:\temp\connect\ftp\Dropshipper\ausgabe.txt"
REM delete temp file
del "c:\temp\connect\ftp\Dropshipper\temp.tmp"
move "c:\temp\connect\ftp\Dropshipper\*.csv" "c:\temp\connect\ftp\Gesendet"
GOTO DONE
:NOTHINTODO
ping 192.0.0.0 -n 1 -w 1000
GOTO TRYAGAIN
:DONE
10
JTL-Wawi Workflows –Workshop
8. Nachdem Artikel geändert wurde, anderen Artikel aktualisieren
 Erstellen eines Eigenen Feldes „Export“
 Neuer Workflow unter „Artikel geändert“
 Aktion Wert setzen -> Export = 1
 Erstellen einer Exportvorlage in der Ameise mit einem Filter auf das
Eigene Feld „Export = 1“
 Aktion Ausführen mit dem Ameisen Export hinzufügen
 Aktion Ausführen mit einem Powershell Command um die
Artikelnummer der Exportdatei anzupassen
 Erstellen einer entsprechenden Importvorlage für die Ameise
 Aktion Ausführen mit einem Ameisen Import
 Aktion Wert setzen -> Export = 100
Beispielhaftes DotLiquid für einen Powershell Aufruf
{% capture query -%}
SELECT cArtNr FROM tArtikel WHERE cArtNr LIKE 'Dest%'
{% endcapture -%}\
{% assign result = query | DirectQueryScalar %}\
{% assign artnr=result | trim %}\
-Command "(gc c:\temp\artikel\artikel.csv) -replace '{{Vorgang.Allgemein.Stammdaten.ArtNrSku}}',
'{{artnr}}' | Out-File c:\temp\artikel\replaced.csv"
11
Herunterladen