Neu Picklistenpositionen als CSV/TXT exportieren

  • Wenn Ihr uns das erste Mal besucht, lest euch bitte zuerst die Foren-Regeln durch.

schraubenking

Gut bekanntes Mitglied
4. Februar 2011
230
1
#1
Hallo Zusammen,

Bin nun seit Tagen am lesen und probieren.... aber leider noch keinen Schritt weiter .-(
Daher möchte ich mein Workflow Problem hier schildern und bitte um Unterstützung der Workflow bzw. DotLiquid Heros.

Mein Vorhaben:
Ich möchte einen Workflow erstellen, der beim Anlagen einer Pickliste (meist über mehrere Einzelaufträge) die Artikelnummern eines betroffenen Lagerorts (Kommentar_1) exportiert.

Beispiel:
Pickliste wird übers WAWI erstellt und enthält folgende Artikel:
Art.1 mit Lagerort_Kommentar1 = A
Art.2 mit mit Lagerort_Kommentar1 = B
Art.3 mit Lagerort_Kommentar1 = A
Art.4 mit mit Lagerort_Kommentar1 = B

Wenn nun diese Pickliste erstellt wird, soll der Workflow die Artikelnummern, welche den Lagerort_Kommentar1 = B in einen CSV File exportieren.

Ergebnis soll also sein:
Art.2
Art.4


Ziel ist es diesen CSV File später einzulesen und diese Artikel (in dem Beispiel Lagerort_Kommentar1 = B) parallel vorzukommissionieren, da diese Artikel
besonderes Augenmerk benötigen (z.B. feinere Zählwaagen, Vorkonvektionierung von Seilen,...)

Ich bitte um Prüfung, ob dies machbar wäre und würde mich über hilfreich Rückmeldung freuen.

Danke,
Markus
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.200
172
Düsseldorf
#2
Ohne nachzusehen würde ich eine Exportvorlage dafür anlegen, die dann beim Ereignis Pickliste erstellt von einem Workflow ausgegeben wird - ABER ich musste gerade feststellen, dass es bei den Picklisten nur "Drucken" und "Speichern", aber kein "Exportieren" gibt :oops:

Aber ein Workflow sollte auch funktionieren: Datei speichern und dann als Inhalt so etwas:
Code:
{% for position in Vorgang.Positionen -%}
{% if position.Lagerkommentar_2 != 'B' %}{{ position.Artikel.Artikelnummer }}
{% endif %}{% endfor -%}
 

schraubenking

Gut bekanntes Mitglied
4. Februar 2011
230
1
#3
Danke ... die 3 Zeilen haben mir sehr geholfen ;)

Für alle die diesen Code auch nutzen wollen und in DotLiquid ähnlich begabt sind wie ich ;) noch eine kleine Anpassung, sodass der Code nach meiner Problembeschreibung funktioniert:

{% for position in Vorgang.Positionen -%}
{% if position.Lagerkommentar_2 == 'B' %}{{ position.Artikel.Artikelnummer }}
{% endif %}{% endfor -%}

lt. meinem erlesen Wissen über DotLiguid wäre der ursprüngliche Eintrag "!=" ein Ungleich und das "==" ein Gleich.

Nachdem ich das "==" eingebaut hab, war alles WUNDERBAR.

Herzlichen Dank an Xantiva und das Forum,
Markus
 

schraubenking

Gut bekanntes Mitglied
4. Februar 2011
230
1
#5
Hallo,

Hab gestern ein wenig mit dem Ergebnis probiert und eine Sortierung der Artikelnummern nach Lagerkommentar_1 wäre noch sehr hilfreich.... dann müsste man nicht "kreuz und quer" laufen, sondern könnte die Lagerorte in einer sinnvollen Abfolge anlaufen.

Konkret:
Art.1 mit Lagerort_Kommentar1 = A
Art.2 mit mit Lagerort_Kommentar1 = B1
Art.3 mit Lagerort_Kommentar1 = B3
Art.4 mit mit Lagerort_Kommentar1 = B2

Ergebnis soll also sein:
Art.2... weil auf B1
Art.4
... weil auf B2
Art.3... weil auf B3

Am besten wäre es werden alle die mit "B" beginnen und zu nehmen und nach "Lagerkommentar 1" zu sortieren. Wenn ein Artikel auf der Pickliste doppelt vorkommt, so sollte dieser auch 2 x angetragen sein.

Wäre dies noch machbar bzw. wie würde der Code aussehen ?

Ich bedanke mich im Vorraus und hoffe auf Rückmeldungen,
Markus
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.200
172
Düsseldorf
#6
Wenn ich im Netz nach der Syntax suche, dann müsste das eigentlich so sein, aber leider wird meine Ausgabe nicht sortiert :(

Code:
{% assign sortiertePositionen = (Vorgang.Positionen | sort: 'Lagerkommentar_1') -%}
{% for position in sortiertePositionen -%}
{% if position.Lagerkommentar_2 == 'B' %}{{ position.Artikel.Artikelnummer }}
{% endif %}{% endfor -%}
Vielleicht schaut da noch mal jemand von JTL drauf? @Rico Giesler ;)

Öhm, gerade noch gefunden: https://guide.jtl-software.de/jtl-wawi/vorlagen/filter-in-dotliquid/#zeichen-sortieren-sort
Demnach sortiert "sort" nur die Zeichen eines Strings und gib ein IEnumerable zurück? Wir bräuchten eine Funktion, die ein Array sortiert und keinen string.

Allerdings stimmt das Beispiel auch nicht. Der Rückgabe Wert ist wieder ein string, oder?
Code:
{{ 'foo' | Sort }} --> foo
Oder darüber das Beispiel für den Join ist auch unvollständig:
Code:
{{ PLZ | Join }} -->