Neu Ich gebe fast alles, wenn .........

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.871
539
Folgendes habe ich in einem Workflow unter Erweiterten Eigenschaften:
Code:
{% for Item in Vorgang.AuftragsPositionen.ArtikelPositionen %}\
{% if Vorgang.AuftragsPositionen.Anzahl == 1 and Vorgang.AuftragsPositionen.Positionen.ErstesObjekt.Menge >= 1 %}
    {% else Vorgang.AuftragsPositionen.Anzahl > 2 %}
    {% assign pos = true %}
{% endif %}\
{% assign preis=Vorgang.Zahlungen.GesamtbruttopreisOhneVersandart %}\
{% assign waren=Item.Artikel.Warengruppe.InterneWarengruppennummer %}\
{% if waren == "1" %}DHL
    {% elsif waren == "2" %}DHL
    {% elsif waren == "3" and pos == "true"%}GB
        {% elsif waren == "3" and pos != "true"%}DHL
    {% elsif waren == "4" and pos == "true"%}GB
        {% elsif waren == "4" and pos != "true"%}DHL
    {% elsif waren == "5" and pos == "true"%}MB
        {% elsif waren == "5" and pos != "true"%}DHL
    {% elsif waren == "6" and pos == "true"%}MB
        {% elsif waren == "6" and pos != "true"%}DHL
    {% elsif waren == "7" and pos == "true"%}MB
        {% elsif waren == "7" and pos != "true"%}DHL
    {% elsif waren == "8" %}DHL
    {% elsif waren == "9" %}DHL
    {% elsif waren == "13" %}DHL
{% endif %}
{% endfor %}
Mit dieser Anweisung kann ich aus dem Artikelstamm mir die Warengruppe ziehen:
Code:
{% for Item in Vorgang.AuftragsPositionen.ArtikelPositionen %}\
{% assign waren=Item.Artikel.Warengruppe.InterneWarengruppennummer %}\
{% if waren == "1" %}DHL
{% endif %}
{% endfor %}

1. Was ich nicht hinbekomme ist die Versandklasse aus dem Artikelstamm zu holen.
2. Was mir nicht klar ist wie es ist wenn mehrere Artikel in einem Auftrag sind, welche Warengruppe z.B. nimmt er dann?

Auch ein Ziel ist es wenn es im Auftrag eine Versandklasse (Artikelstamm) gibt die z.B. DHL heißt dann soll er die Versandart auf DHL Paket setzen.
Ich tüftle an diesem Prob seit geraumer Zeit rum wäre echt klasse wenn mir da jemand helfen kann.
 

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.871
539
Hiermit würde ich ja weiterkommen, wenn ich die Versandklasse abrufen könnte:
Code:
{% comment %}Prüft jede Artikelposition auf ihre Maße, sortiert sie (Höhe immer höchster Wert, dann Breite, Länge kleinster Wert). Gibt TRUE aus, wenn keine Position die Maximalwerte übersteigt{% endcomment %}
{% for Artikelbeschreibungen in Vorgang.AuftragsPositionen.Positionen -%}
{% assign Artikel = Artikelbeschreibungen.Artikel %}
{% assign Maße = Artikel.Höhe | Concat: Artikel.Breite | Concat: Artikel.Länge | Sort  %}
{% if Maße[2] > 35.1 or Maße[1] > 24 or Maße[0] > 4.9 %}
{% assign ZuGross = true %}
{% endif %}
{% endfor %}
{% if ZuGross == true %}
FALSE
{% else %}
TRUE
{% endif %}

Wenn ich das richtig verstehe geht das ja als Schleife über alle Artikel des Auftrags und holt dazu Werte aus dem Artikelstamm.
 

mvh

Sehr aktives Mitglied
26. Oktober 2011
1.001
361
Hiermit würde ich ja weiterkommen, wenn ich die Versandklasse abrufen könnte:
Code:
{% comment %}Prüft jede Artikelposition auf ihre Maße, sortiert sie (Höhe immer höchster Wert, dann Breite, Länge kleinster Wert). Gibt TRUE aus, wenn keine Position die Maximalwerte übersteigt{% endcomment %}
{% for Artikelbeschreibungen in Vorgang.AuftragsPositionen.Positionen -%}
{% assign Artikel = Artikelbeschreibungen.Artikel %}
{% assign Maße = Artikel.Höhe | Concat: Artikel.Breite | Concat: Artikel.Länge | Sort  %}
{% if Maße[2] > 35.1 or Maße[1] > 24 or Maße[0] > 4.9 %}
{% assign ZuGross = true %}
{% endif %}
{% endfor %}
{% if ZuGross == true %}
FALSE
{% else %}
TRUE
{% endif %}

Wenn ich das richtig verstehe geht das ja als Schleife über alle Artikel des Auftrags und holt dazu Werte aus dem Artikelstamm.
Code:
{% for ArtikelPos in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
Versandklasename={{ArtikelPos.Artikel.VersandklasseName }}
{% endfor -%}
 

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.871
539
Juhuu es klappt. Hiermit kann ich jetzt die Versandklasse auslesen als Schleife über alle Positionen des Auftrags
Code:
{% for ArtikelPos in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
{% assign Versand={{ArtikelPos.Artikel.VersandklasseName }} %}
{% if Versand contains 'DHL' %}Paket{% endif %}
{% endfor -%}
@mvh Tausend Dank!!! Was kann ich dir gutes tun?

P.S. Was wir noch ein Rätsel ist woher du weißt wie das Kürzel heißt (ArtikelPos.Artikel.VersandklasseName) ich habe da so viele Schreibweisen ausprobiert, nix hat geklappt.
 

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.871
539
Falls es jemanden interessiert, da ist bis jetzt draus geworden:

Code:
{% for ArtikelPos in Vorgang.AuftragsPositionen.ArtikelPositionen -%}
{% if ArtikelPos.Artikel.VersandklasseName contains 'DHL' %}{% assign klasse = true %}{% endif %}\
{% if ArtikelPos.Artikel.Warengruppe.InterneWarengruppennummer | Matches: '^(3|4)' %}{% assign versandGB = true %}{% endif %}\
{% if ArtikelPos.Artikel.Warengruppe.InterneWarengruppennummer | Matches: '^(5|6|7)' %}{% assign versandMB = true %}{% endif %}\
{% assign menge=ArtikelPos.Menge %}\
{% endfor -%}
{% if klasse == "true" %}Paket
    {% elsif versandGB == "true" and menge < 2 %}GB
        {% elsif versandGB == "true" and menge > 2 %}Paket
    {% elsif versandMB == "true" and menge < 2 %}MB
        {% elsif versandMB == "true" and menge > 2 %}Paket
{% endif %}

1. Als erstes weise ich "klasse" zu die schaut ob ein Artikel im Auftrag die Versandgruppe DHL hat.
2. Ich matche die Warengruppen ID`s. Also alle Warengruppen die z.B. GB (Großbrief) haben.
3. Ich weise "menge" den Artikelmengen zu.

Meine erste Abfrage schaut ob in irgendeinen Artikel des Auftrags DHL steht und gibt dann "Paket" aus.
Dann frage ich die Warengruppe per ID ab und gebe der GB (Großbrief) wenn die Menge kleiner 2 ist.
Als nächstes weise ich zu wenn die Menge der Warengruppe GB (Großbrief) größer 2 ist dann Paket.
 
Ähnliche Themen

Ähnliche Themen