Du verwendest einen veralteten Browser. Dieser kann eventuell diese oder andere Webseiten nicht richtig darstellen. Du solltest deinen Browser aktualisieren oder einen alternativen Browser verwenden.
Hallo,
und zwar habe ich bei uns einen Workflow der eine Warnungsmail schreibt mit folgenden Text wenn der Bestand unter 60 fällt.
HTML clipboard Der Artikel {{ Vorgang.Artikel.Allgemein.Stammdaten.Name }} mit der Artikelnummer {{ Vorgang.Artikel.Allgemein.Stammdaten.ArtNrSku }} muss geprüft werden ggf. nachgebucht werden.
Jetzt möchte ich das die Stücklistenartikel und die Bestände dazu mit in der Mail vorkommen.
Finde nur leider die Reiter nicht im Vorgang, kann mir da jemand evtl. helfen?
Hallo,
und zwar habe ich bei uns einen Workflow der eine Warnungsmail schreibt mit folgenden Text wenn der Bestand unter 60 fällt.
HTML clipboard Der Artikel {{ Vorgang.Artikel.Allgemein.Stammdaten.Name }} mit der Artikelnummer {{ Vorgang.Artikel.Allgemein.Stammdaten.ArtNrSku }} muss geprüft werden ggf. nachgebucht werden.
Jetzt möchte ich das die Stücklistenartikel und die Bestände dazu mit in der Mail vorkommen.
Finde nur leider die Reiter nicht im Vorgang, kann mir da jemand evtl. helfen?
wo hast Du den Workflow angelegt? Unter "Artikel - Warenlagerausgang - Minusbuchung"? Je nachdem, wann die Meldung notwendig ist (also wenn bspw. "Bestand < 60" eher "verfügbarer Bestand < 60" meint), kommen auch andere Plazierungen in Frage.
Und Du meinst wahrscheinlich die Stücklistenkinder inklusive deren Beständen. Das geht bei einem Artikel-Workflow nur über eine SQL-Abfrage.
wo hast Du den Workflow angelegt? Unter "Artikel - Warenlagerausgang - Minusbuchung"? Je nachdem, wann die Meldung notwendig ist (also wenn bspw. "Bestand < 60" eher "verfügbarer Bestand < 60" meint), kommen auch andere Plazierungen in Frage.
Und Du meinst wahrscheinlich die Stücklistenkinder inklusive deren Beständen. Das geht bei einem Artikel-Workflow nur über eine SQL-Abfrage.
Hier wäre das: Wenn der Artikel eine Stückliste ist (bzw. ein Stücklistenvater), liste mir alle Stücklistenkinder mit deren Verfügbarkeiten auf. Dafür sind alle notwendigen Felder da.
Hier wäre das: Wenn der Artikel eine Stückliste ist (bzw. ein Stücklistenvater), liste mir alle Stücklistenkinder mit deren Verfügbarkeiten auf. Dafür sind alle notwendigen Felder da.
Mit der direkten SQL Abfrage bzw. mit der Wawi Datenbank, hab ich mit der Kodierung direkt noch nicht zu tuen gehabt, aber da bin ich gern gewillt die schritte anzugehen.
Oder gibt es da für mich eine einfache Art?
Hallo,
und zwar habe ich bei uns einen Workflow der eine Warnungsmail schreibt mit folgenden Text wenn der Bestand unter 60 fällt.
HTML clipboard Der Artikel {{ Vorgang.Artikel.Allgemein.Stammdaten.Name }} mit der Artikelnummer {{ Vorgang.Artikel.Allgemein.Stammdaten.ArtNrSku }} muss geprüft werden ggf. nachgebucht werden.
Jetzt möchte ich das die Stücklistenartikel und die Bestände dazu mit in der Mail vorkommen.
Finde nur leider die Reiter nicht im Vorgang, kann mir da jemand evtl. helfen?
wo hast Du den Workflow angelegt? Unter "Artikel - Warenlagerausgang - Minusbuchung"? Je nachdem, wann die Meldung notwendig ist (also wenn bspw. "Bestand < 60" eher "verfügbarer Bestand < 60" meint), kommen auch andere Plazierungen in Frage.
Und Du meinst wahrscheinlich die Stücklistenkinder inklusive deren Beständen. Das geht bei einem Artikel-Workflow nur über eine SQL-Abfrage.
Das ist leider zutreffend. Sollte hier aber kein Hinderungsgrund sein, einen weiteren unter Versand - Lieferscheine - Erstellt anzulegen. Auch wenn man dem anderen Thread entnehmen kann, wie sehr mir das gegen den Strich geht.
Mit der direkten SQL Abfrage bzw. mit der Wawi Datenbank, hab ich mit der Kodierung direkt noch nicht zu tuen gehabt, aber da bin ich gern gewillt die schritte anzugehen.
Oder gibt es da für mich eine einfache Art?
Puh, eine einfache Art ... Ich weiß nicht, ob es so etwas überhaupt gibt.
Die Basics von SQL sollte man sich schon aneignen sowie die Basics von DotLiquid (anhand der Beispiele im JTL-Guide), und dann probieren, probieren, probieren. Innerhalb der Wawi kannst Du keine schreibenden Queries verwenden. Da kannst Du beim Testen also nichts kaputt machen, wenn Du bspw. einen Testworkflow anlegst, der keine Bedingung hat oder eine, die nie zutreffen wird und nur eine Mail an Dich selbst schickt. Dann kannst Du im Textfeld herumtesten, bis der Arzt kommt. Du musst ihn theoretisch noch nicht einmal wirklich ausführen. Das Ergebnis kannst Du Dir in der Vorschau immer ausgeben lassen, ohne den Workflow ausgegeben zu haben.
Hier im Forum findest Du eine Vielzahl an Codes für DotLiquid und auch reines SQL (solange da nicht CREATE, UPDATE, INSERT, DELETE vorkommen), die Du einfach dazu nutzen kannst, sie zu verstehen. Das fällt am Anfang natürlich schwer, aber nach und nach wird's besser, auch mit Herumspielen, also Änderungen des Codes, um zu schauen, wie das Verhalten nach der Änderung ist. Das Schöne an all den Codes hier im Forum ist, dass es keine rein theoretischen Beispiele sind, sondern echte aus der Praxis.
Aber da das viel Zeit in Anspruch nimmt, kannst Du vielleicht erst einmal mit diesem Code was für die Auflistung der Stücklistenkomponenten anfangen, wenn es sich um eine Stückliste handelt. Sonst der normale Text:
HTML:
{% if Vorgang.Artikel.Sonstiges.IstStückliste -%}
<p>Die Stückliste unter dem Artikel {{ Vorgang.Artikel.Allgemein.Stammdaten.Name }} mit der Artikelnummer {{ Vorgang.Artikel.Allgemein.Stammdaten.ArtNrSku }} muss geprüft werden ggf. nachgebucht werden.</p>
<p>Stücklistenkomponenten:</p>
{% capture query -%}
SELECT
ART.cArtNr,
ART.cName,
CAST(SL.fAnzahl AS INT) AS fAnzahl,
CAST(LB.fVerfuegbar AS INT) AS fVerfuegbar
FROM
tStueckliste AS SL
JOIN
vStandardArtikel AS ART ON SL.kArtikel = ART.kArtikel
JOIN
tlagerbestand AS LB ON SL.kArtikel = LB.kArtikel
WHERE
SL.kVaterArtikel = {{ Vorgang.Artikel.Allgemein.Stammdaten.InterneArtikelnummer }}
ORDER BY
SL.nSort ASC
{% endcapture -%}
{% assign result = query | DirectQuery -%}
<style>
td {
text-align: left;
padding-right: 15px;
border-bottom: 1px solid #ddd;
}
.bold {
font-weight: bold;
}
</style>
<table>
<tr class="bold">
<td>cArtNr</td>
<td>cName</td>
<td>fAnzahl</td>
<td>fVerfuegbar</td>
</tr>
{% for item in result.Daten -%}
<tr>
<td>{{ item.cArtNr }}</td>
<td>{{ item.fAnzahl }}</td>
<td>{{ item.cName }}</td>
<td>{{ item.fVerfuegbar }}</td>
</tr>
{% endfor -%}
</table>
{% else -%}Der Artikel {{ Vorgang.Artikel.Allgemein.Stammdaten.Name }} mit der Artikelnummer {{ Vorgang.Artikel.Allgemein.Stammdaten.ArtNrSku }} muss geprüft werden ggf. nachgebucht werden.
{% endif -%}
Das Ganze gibt die Stücklistenkomponenten als HTML-Tabelle aus, die ein bisschen formatiert ist.
Die verwendeten Variablen funktionieren so nur dort, wo der Workflow im Moment sitzt. Wenn noch einer wie vorgeschlagen unter Versand - Lieferscheine - Erstellt angelegt wird, braucht es eine Bedingung und eine zweite Schleife (für alle Auftragspositionen, die unter 60 Stück gefallen sind), in der die Prüfung auf Stückliste und die dann notwendige weitere Schleife für die Stücklistenkomponenten befindet.
Puh, eine einfache Art ... Ich weiß nicht, ob es so etwas überhaupt gibt.
Die Basics von SQL sollte man sich schon aneignen sowie die Basics von DotLiquid (anhand der Beispiele im JTL-Guide), und dann probieren, probieren, probieren. Innerhalb der Wawi kannst Du keine schreibenden Queries verwenden. Da kannst Du beim Testen also nichts kaputt machen, wenn Du bspw. einen Testworkflow anlegst, der keine Bedingung hat oder eine, die nie zutreffen wird und nur eine Mail an Dich selbst schickt. Dann kannst Du im Textfeld herumtesten, bis der Arzt kommt. Du musst ihn theoretisch noch nicht einmal wirklich ausführen. Das Ergebnis kannst Du Dir in der Vorschau immer ausgeben lassen, ohne den Workflow ausgegeben zu haben.
Hier im Forum findest Du eine Vielzahl an Codes für DotLiquid und auch reines SQL (solange da nicht CREATE, UPDATE, INSERT, DELETE vorkommen), die Du einfach dazu nutzen kannst, sie zu verstehen. Das fällt am Anfang natürlich schwer, aber nach und nach wird's besser, auch mit Herumspielen, also Änderungen des Codes, um zu schauen, wie das Verhalten nach der Änderung ist. Das Schöne an all den Codes hier im Forum ist, dass es keine rein theoretischen Beispiele sind, sondern echte aus der Praxis.
Aber da das viel Zeit in Anspruch nimmt, kannst Du vielleicht erst einmal mit diesem Code was für die Auflistung der Stücklistenkomponenten anfangen, wenn es sich um eine Stückliste handelt. Sonst der normale Text:
HTML:
{% if Vorgang.Artikel.Sonstiges.IstStückliste -%}
<p>Die Stückliste unter dem Artikel {{ Vorgang.Artikel.Allgemein.Stammdaten.Name }} mit der Artikelnummer {{ Vorgang.Artikel.Allgemein.Stammdaten.ArtNrSku }} muss geprüft werden ggf. nachgebucht werden.</p>
<p>Stücklistenkomponenten:</p>
{% capture query -%}
SELECT
ART.cArtNr,
ART.cName,
CAST(SL.fAnzahl AS INT) AS fAnzahl,
CAST(LB.fVerfuegbar AS INT) AS fVerfuegbar
FROM
tStueckliste AS SL
JOIN
vStandardArtikel AS ART ON SL.kArtikel = ART.kArtikel
JOIN
tlagerbestand AS LB ON SL.kArtikel = LB.kArtikel
WHERE
SL.kVaterArtikel = {{ Vorgang.Artikel.Allgemein.Stammdaten.InterneArtikelnummer }}
ORDER BY
SL.nSort ASC
{% endcapture -%}
{% assign result = query | DirectQuery -%}
<style>
td {
text-align: left;
padding-right: 15px;
border-bottom: 1px solid #ddd;
}
.bold {
font-weight: bold;
}
</style>
<table>
<tr class="bold">
<td>cArtNr</td>
<td>cName</td>
<td>fAnzahl</td>
<td>fVerfuegbar</td>
</tr>
{% for item in result.Daten -%}
<tr>
<td>{{ item.cArtNr }}</td>
<td>{{ item.fAnzahl }}</td>
<td>{{ item.cName }}</td>
<td>{{ item.fVerfuegbar }}</td>
</tr>
{% endfor -%}
</table>
{% else -%}Der Artikel {{ Vorgang.Artikel.Allgemein.Stammdaten.Name }} mit der Artikelnummer {{ Vorgang.Artikel.Allgemein.Stammdaten.ArtNrSku }} muss geprüft werden ggf. nachgebucht werden.
{% endif -%}
Das Ganze gibt die Stücklistenkomponenten als HTML-Tabelle aus, die ein bisschen formatiert ist.
Die verwendeten Variablen funktionieren so nur dort, wo der Workflow im Moment sitzt. Wenn noch einer wie vorgeschlagen unter Versand - Lieferscheine - Erstellt angelegt wird, braucht es eine Bedingung und eine zweite Schleife (für alle Auftragspositionen, die unter 60 Stück gefallen sind), in der die Prüfung auf Stückliste und die dann notwendige weitere Schleife für die Stücklistenkomponenten befindet.
Ist das geil hab es noch etwas Angepasst, da die die html Kodierungen wenn ich diese in den Workflow eingefügt hab mit gesendet wurden
sah dann zu erst so aus:
Der Artikel Aopen DE35-HD 240 GB SSD ohne win 10 mit der Artikelnummer 202206291690eB-240 GB SSD-ohne muss geprüft werden ggf nachgebucht werden.
<p>Die Stückliste unter dem Artikel Aopen DE35-HD 240 GB SSD ohne win 10 mit der Artikelnummer 202206291690eB-240 GB SSD-ohne muss geprüft werden ggf. nachgebucht werden.</p>
Stücklistenkomponenten:
<style>
td {
text-align: left;
padding-right: 15px;
border-bottom: 1px solid #ddd;
}
.bold {
font-weight: bold;
}
</style>
<table>
<tr class="bold">
<td>cArtNr</td>
<td>cName</td>
<td>fAnzahl</td>
<td>fVerfuegbar</td>
</tr>
<tr>
<td>202209261731eB</td>
<td>1</td>
<td>[Barebone] Aopen DE35-HD</td>
<td>443</td>
</tr>
<tr>
<td>202205121670eB-1</td>
<td>2</td>
<td>Apacer 2GB SOD PC3-10600 CL9 SO-DIMM [1x2GB]</td>
<td>465</td>
</tr>
<tr>
<td>202212121803eB</td>
<td>1</td>
<td>[Netzteil] [Out: 19V 3,42 A] Für Aopen DE35 HD oder DE3100</td>
<td>0</td>
</tr>
<tr>
<td>202212121804eB</td>
<td>1</td>
<td>[ 0-2m ]-[ geb ]-[ Mickey Mouse ] Kaltgeräte Kabel</td>
<td>709</td>
</tr>
<tr>
<td>202201021030eB</td>
<td>1</td>
<td>2,5 Zoll SSD Flash Drive Notebook 240 GB</td>
<td>54</td>
</tr>
</table>
hab es dann angepasst und kam dann so raus:
Der Artikel Aopen DE35-HD 240 GB SSD ohne win 10 mit der Artikelnummer 202206291690eB-240 GB SSD-ohne muss geprüft werden ggf nachgebucht werden.
Die Stückliste unter dem Artikel Aopen DE35-HD 240 GB SSD ohne win 10 mit der Artikelnummer 202206291690eB-240 GB SSD-ohne muss geprüft werden ggf. nachgebucht werden.
Stücklistenkomponenten: