Workflow: Das automatische durschuchen ALLER Positionen mit bestimmten Namen.

mowment

Mitglied
15. Dezember 2022
10
0
Mein Problem ist aktuell, dass ich unsere Kartonagen gerne in einem frisch erstellten Auftrag automatisch einfügen möchte (Kartonage als Artikel). Ich habe bisher einen Workflow angelegt, welcher auch soweit funktioniert (er sucht einen Artikel aus der Auftragsposition dessen Name mit 6x4 endet). Nun leider hört der Workflow automatisch danach auf, da er ja sein Ziel erreicht hat. Nun zu meiner Frage:

Wie kann ich den Workflow so einstellen, dass er nicht bei dem ersten Treffer sich beendet sondern solange den Workflow ausführt bis er alle im Auftrag sich befindende Artikel mit o.g. Voraussetzung gefunden hat + er soll die Kartonage auch so oft einfügen wie der gefundene Artikel hat (z.B: er findet einen Artikel mit 6x4 am Ende, welcher einen Mengenwert von 6 hat, trägt aber nur 1x die Kartonage ein, obwohl es 6x sein sollte)
Vielen lieben Dank wenn sich jemand dem annehmen kann !

MfG
Daniel
 

John

Sehr aktives Mitglied
3. März 2012
4.138
1.055
Berlin
Eigene Erweiterte Eigenschaft anlegen, Rückgabewert Zahl und in der Erweiterten Eigenschaft eine Schleife über alle Positionen laufen lassen und das Vorkommen von 6x4 zählen.
Dann das Ergebnis als Rückgabewert nutzen.
 

jtldudel

Sehr aktives Mitglied
4. Januar 2018
636
207
Im Workflow hast du bei der Aktion "Position hinzufügen" ja ein Feld für die Menge. Dort kannst du über die drei kleinen Punkte rechts daneben den Editor öffnen. Da fügst du das hier ein:

{% capture query -%}
select count(kartikel) from Verkauf.tAuftragPosition where kauftrag = {{ Vorgang.Stammdaten.InterneAuftragsnummer }}
and cArtNr like '%6x4'
{% endcapture -%}
{% assign Anzahl = query | DirectQueryScalar -%}
{{ Anzahl }}

Das zählt stumpf die Anzahl der Positionen (Achtung: Nicht die Menge!) im Auftrag, dessen SKU mit 6x4 endet und fügt dir die Zahl am Ende als die Anzahl ein, wie oft die Kartonage eingefügt werden soll.
Menge könnte man noch ähnlich berücksichtigen, weiß nicht ob du das brauchst.
 

mowment

Mitglied
15. Dezember 2022
10
0
@John Leider bin ich noch neu in der Wawi Materie und weiß aktuell nicht wie ich das schreibe / bzw. wie die Lokale dafür sind. Kannst du mir ein Beispiel nennen woran ich das lernen / sehen kann? Das wäre sehr nett von dir!
 

mowment

Mitglied
15. Dezember 2022
10
0
@jtldudel nachdem ich den Workflow simuliert habe, hat der Workflow sich wieder nach dem ersten zutreffenden Artikel (mit 6x4 im Namen) sich beendet und die Suche nicht weiter fortgeführt.
 

mowment

Mitglied
15. Dezember 2022
10
0
Ich hab den Workflow jetzt so weit bekommen, dass er die Anzahl der "6x4" über cName anstatt von cArtNr nimmt. Jetzt fehlt mir nur noch die Menge der einzelnen Auftragspositionen. Nur das integrieren der Mengenanzahl wirft mir immer einen Syntaxerror raus. Hier mal mein Code:


{% capture query -%}
select count(kartikel) from Verkauf.tAuftragPosition where kauftrag = {{ Vorgang.Stammdaten.InterneAuftragsnummer }}
and cName like '%6x4'

select count(kartikel) from Verkauf.tAuftragPosition.ArtikelPositionen.nAnzahl where nAnzahl = {{ Vorgang.AuftragsPositionen.ArtikelPositionen.Anzahl }}
and nAnzahl > 0

{% endcapture -%}
{% assign Anzahl = query | DirectQueryScalar -%}
{{ Anzahl }}

EDIT:

Wenn möglich würde ich wahrscheinlich auch später von cName zu den Artikelmerkmalen wechseln, da ich da bessere Zuweisungen tätigen kann. Nur kenn ich die SQL Lokale dafür nicht
 

mowment

Mitglied
15. Dezember 2022
10
0
@MirkoWK Da bekomm ich leider weiterhin eine Fehlermeldung: "
Fehler im Befehl: Server "Verkauf" konnte in "sys.servers" nicht gefunden werden. Stellen Sie sicher, dass der richtige Servername angegeben wurde. Führen Sie ggf. die gespeicherte Prozedur "sp_addlinkedserver" aus, um den Server in "sys.servers" hinzuzufügen."
"
 

MirkoWK

Sehr aktives Mitglied
14. März 2022
830
304
das klingt seltsam - hast du wie in deinem Post oben 1 Select oder beide drin? auf diese Weise geht auf jeden Fall nur 1.

Falls du das im MS Server Management Studio testest, dann musst du noch die richtige DB aussuchen.

So sollte es aber funktionieren:
SQL:
{% capture query -%}
select sum(fAnzahl) from Verkauf.tAuftragPosition where kauftrag = {{ Vorgang.Stammdaten.InterneAuftragsnummer }}
and cName like '%6x4'
{% endcapture -%}
{% assign Anzahl = query | DirectQueryScalar -%}
{{ Anzahl }}
 

mowment

Mitglied
15. Dezember 2022
10
0
das klingt seltsam - hast du wie in deinem Post oben 1 Select oder beide drin? auf diese Weise geht auf jeden Fall nur 1.

Falls du das im MS Server Management Studio testest, dann musst du noch die richtige DB aussuchen.

So sollte es aber funktionieren:
SQL:
{% capture query -%}
select sum(fAnzahl) from Verkauf.tAuftragPosition where kauftrag = {{ Vorgang.Stammdaten.InterneAuftragsnummer }}
and cName like '%6x4'
{% endcapture -%}
{% assign Anzahl = query | DirectQueryScalar -%}
{{ Anzahl }}
Also ich teste das direkt in der Wawi und habe den oben genannten code genutzt. Sofern ich das zweite select entferne (mit dem verweiß auf die Menge) funktioniert es ja ohne Fehler. Also ich nutze 2 Selects. Aber das scheint ja wie von dir beschrieben nicht zu funktionieren. Hier zur Erklärung der Code der Fehlerhaft ist:


{% capture query -%}
select count(kartikel) from Verkauf.tAuftragPosition where kauftrag = {{ Vorgang.Stammdaten.InterneAuftragsnummer }}
and cName like '%6x4'

select sum(fAnzahl) from Verkauf.tAuftragPosition.ArtikelPositionen.nAnzahl where nAnzahl = {{ Vorgang.AuftragsPositionen.ArtikelPositionen.Anzahl }}
and nAnzahl > 0


{% endcapture -%}
{% assign Anzahl = query | DirectQueryScalar -%}
{{ Anzahl }}
 

mowment

Mitglied
15. Dezember 2022
10
0
So... Jetzt hab ich etwas mehr geschaft. Mit dem folgenden Code habe ich jetzt die Artikelanzahl und die gesamtmenge an Artikel gefunden.:

{% capture query -%}
{% assign Gesamtmenge = 0 -%}
select count(kartikel) and from Verkauf.tAuftragPosition where kauftrag = {{ Vorgang.Stammdaten.InterneAuftragsnummer }}
and cName like '%6x4'
{% for Artikelbeschreibungen in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
{% assign Gesamtmenge = Gesamtmenge | Plus: Artikelbeschreibungen.Menge -%}
{% endfor -%}
{% endcapture -%}
{% assign Anzahl = query | DirectQueryScalar -%}
{{ Anzahl }}
{{ Gesamtmenge | Floor }}


Jetzt würde ich gerne nur noch die zwei Module miteinander verknüpfen, sodass er mir bei der "select" suche direkt die Artikel UND die Menge raussucht (also quasi die Artikelsuche rausnehmen sondern direkt nach Menge suchen von Positionen mit dem vermerk, dass diese "6x4" im Namen haben müssen.)

Kann mir da jemand bei dem vermischen der Codes helfen? Hab da jetzt mehrere Stunden probiert und nur Syntax-errors bekommen.

MfG
Daniel
 

mowment

Mitglied
15. Dezember 2022
10
0
Ich fühl mich so als ob ich mit mir selbst ein Gespräch hier führe, ABER ich habe es geschafft! Der folgende Code geht den Auftrag durch und findet alle gesuchten Artikel und ihre Menge (Berücksichtigt nur die Menge um keine doppelten Einträge zu haben). :


{% capture query -%}
{% assign Gesamtmenge = 0 -%}
select sum(fAnzahl) from Verkauf.tAuftragPosition where kauftrag = {{ Vorgang.Stammdaten.InterneAuftragsnummer }}
and cName like '%NAME DES ARTIKELS DEN MAN SUCHT' --> das "%" kann sowohl vor- als auch nach dem Namen eingefügt werden und besagt, dass das Schlagwort Vor-oder nach dem "%" kommt (also z.B: %Ball --> "Bunter Ball" oder Ball% --> Ball Groß. Oder %Ball% --> Bunter Ball Groß) (nur als Hilfe für Leute die dasselbe Problem und dieselben Fragen wie ich habe haha)

{% endcapture -%}
{% assign Anzahl2 = query | DirectQueryScalar -%}
{{ Anzahl2 }}
 

jtldudel

Sehr aktives Mitglied
4. Januar 2018
636
207
Ich fühl mich so als ob ich mit mir selbst ein Gespräch hier führe, ABER ich habe es geschafft! Der folgende Code geht den Auftrag durch und findet alle gesuchten Artikel und ihre Menge (Berücksichtigt nur die Menge um keine doppelten Einträge zu haben). :


{% capture query -%}
{% assign Gesamtmenge = 0 -%}
select sum(fAnzahl) from Verkauf.tAuftragPosition where kauftrag = {{ Vorgang.Stammdaten.InterneAuftragsnummer }}
and cName like '%NAME DES ARTIKELS DEN MAN SUCHT' --> das "%" kann sowohl vor- als auch nach dem Namen eingefügt werden und besagt, dass das Schlagwort Vor-oder nach dem "%" kommt (also z.B: %Ball --> "Bunter Ball" oder Ball% --> Ball Groß. Oder %Ball% --> Bunter Ball Groß) (nur als Hilfe für Leute die dasselbe Problem und dieselben Fragen wie ich habe haha)

{% endcapture -%}
{% assign Anzahl2 = query | DirectQueryScalar -%}
{{ Anzahl2 }}
Das ist btw die gleiche Lösung die MirkoWK weiter oben schon gepostet hatte :D
 

John

Sehr aktives Mitglied
3. März 2012
4.138
1.055
Berlin
Die Lösung hier ist stressig, weil SQL und das bei Updates seitenes der Datenstruktur der Wawi evtl. angepasst werden muß.

Nimm das hier:

Code:
{% assign AnzahlGesamt = 0 -%}
{% for Position in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
{% if Position.Bezeichnung | Matches: '6x4' -%}
{% assign AnzahlGesamt = AnzahlGesamt | Plus: Position.Menge -%}
{% endif -%}
{% endfor -%}
{{ AnzahlGesamt }}

Das nimmst Du als Wert für die Anzahl deiner hinzuzufügenden Positionen.
Und mit dem gleichen Code machst Du Dir in den Workflow Bedingungen eine Eigene Erweiterte Eigenschaft mit Rückgabewert ZAHL. Die Erweiterte Eigenschaft prüfst Du dann auf > 0 als Deine Workflow Bedingung

In dem Code wird generell auf Vorkommen von 6x4 geprüft. Nicht auf endet mit. Das könnte man aber per RegEx anpassen.
 
  • Gefällt mir
Reaktionen: jtldudel
Ähnliche Themen
Titel Forum Antworten Datum
In Diskussion Workflow bei fehlerhaften Bankabgleich JTL-Workflows - Ideen, Lob und Kritik 4
In Diskussion Workflow für Erinnerungen an bevorstehende Lieferungen JTL-Workflows - Ideen, Lob und Kritik 0
Neu Lagerkommentar 1 per Workflow füllen User helfen Usern - Fragen zu JTL-Wawi 6
Neu Suche Workflow: Erstbestellung Shop auf Rechnung -> Auftrag Zurückhalten JTL-Wawi - Ideen, Lob und Kritik 1
1.11.7 Workflow versendet soll Rechnung 1x drucken, druckt aber 2x JTL-Wawi 1.11 1
Neu Auftrag - Lieferstatus mit Workflow exportieren Arbeitsabläufe in JTL-Wawi 3
In Diskussion 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
Neu Werte erhöhen per Workflow User helfen Usern - Fragen zu JTL-Wawi 4
In Diskussion Workflow OpenAI JTL-Workflows - Ideen, Lob und Kritik 1
Workflow Trigger bei Angebot-Import über Ameise JTL-Wawi 1.9 1
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 1
In Diskussion Ort mit OT per Workflow bereinigen JTL-Workflows - Ideen, Lob und Kritik 3
Neu Ausdruck Rechnung beim Workflow nicht korrekt formatiert User helfen Usern - Fragen zu JTL-Wawi 6
Neu Wie ändere ich das vorausgewählte Lager bei Bestellungen? User helfen Usern - Fragen zu JTL-Wawi 1
Ameise (1.11.11.0) Export auf Clients nicht möglich - Das Dezimaltrennzeichen kann nicht die leere Zeichenfolge sein JTL-Wawi 1.11 5
Lohnt sich das Update von 1.11.6 auf 2.0.4 aktuell? JTL-Wawi 2.0 2
Neu Der Inhalt / Text ist verschwunden – ist das ein Fehler JTL-Shop - Fehler und Bugs 0
Plattformabgleich Shop löschen - Wo ist das in der MySQL DB? JTL-Wawi 2.0 4
Neu Widerrufsbutton: Jeder, der den Button betätigt, kann das Widerrufsformular ausfüllen und absenden - auch ohne Bestellung? Allgemeine Fragen zu JTL-Shop 94
Automatische Pickliste geht nicht mehr seit Update JTL-Wawi 2.0 0
Neu Automatische Datenblatterstellung Allgemeine Fragen zu JTL-Shop 1
Neu Automatische Umstellung auf Pro-Tarif ohne Zustimmung? User helfen Usern - Fragen zu JTL-Wawi 2

Ähnliche Themen