Erweiterung EMail Order Confirmation: Lieferzeit pro Artikel, wesentliches Merkmale pro Artikel

Guten Morgen!

Ist es möglich das E-Mail-Template “Order Confirmation” (Bestellbestätigung) so zu erweitern, das bei jedem bestellten Artikel jeweils noch

* Lieferzeit

* die hinterlegten wesentlichen Merkmale des Artikels

ausgegeben werden? Wenn ja wie ist der zusätzliche Code für das Template?

MfG. Jörg Marckscheffel

Am besten schaust du mal in der Tabelle order_line_item nach, ob die Daten da vorhanden sind. Oftmals in der Spalte Payload, dann kannsrt du auch darauf zugreifen.

Guten Abend Moritz!

Deine Antwort hat weitergeholfen.

a.) Problem. Ausgabe von “wesentliche Merkmale” auf der Bestellbestätigung

In der Spalte “payload” gibt es “features” und dort finde ich auch die Eigenschaft “Auslieferung Band” mit der Ausprägung “ohne Dornschließe”. Was für einen Quellcode brauche ich um “Auslieferung Band” und “ohne Dornschließe” auszugeben? Sieht nach einer Schleife aus, um mehrfache Einträge auszulesen.

b.) Problem Ausgabe der “Lieferzeit” jedes Produktes auf der Bestellbestätigung

Wie man unten sieht, steht kein Eintrag dafür in der Spalte “payload”.

In jedem Artikeldetail und in der Warenkorbzusammenfassung sieht man die Lieferzeiten eines jeden Artikels.

Jeder Onlineshopbetreiber bekommt täglich Anrufe von Kunden, die nach der Lieferung Ihrer Ware fragen. Man verweist dann darauf, das man im Artikeldetail stehen hat z.B. 4 - 8 Tage und deshalb 2 Tage nach Bestellung nichts da sein. Schön wäre es, wenn man diese Information auf die Bestellbestätigung bringen könnte, in der Hoffnung das der Kunde diese Information liest und dadurch weniger Anrufe entstehen. Der Shopbetreiber könnte selbst entscheiden, ob er die Informationen in seinem Template einbaut oder nicht. Sind mehrere Artikel mit unterschiedlichen Lieferzeiten in der Bestellung hat der Kunde einen Hinweis das es eine gesplitte Lieferung geben kann oder die Lieferung erst komplett zum späteren Zeitpunkt kommt.

Ein Ticket eröffnen für die Ausgabe der Lieferzeit in order_line_item, Spalte payload?

Also du kannst die “Features” so ausgeben lassen:

{% if lineItem.payload.features is defined and lineItem.payload.features|length >= 1 %}
    {% for features in lineItem.payload.features %}
     {% if features.value is defined and features.value is iterable %}
        {{ features.label }}:
        {% for values in features.value %}
            {{ values.name }}
        {% endfor %}
     {% else %}
        {{ features.label }}: {{ features.value }}
     {% endif %}
        {% if lineItem.payload.features|last != features %}
            
        {% endif %}
    {% endfor %}
    
{% endif %}

Ich habe mir dazu beispielswiese eine eigene Spalte angelegt:

3 „Gefällt mir“

Wir haben aktuell nur die Lieferzeit pro Lieferung in der Datenbank, nicht pro Artikel. Entsprechend kannst du das aktuell nicht ausgeben lassen. Könntest ein Ticket aufmachen, dass man das pro Artikel mitspeichert.

Guten Abend Moritz! Danke für die Antwort. Wo steckt den die Lieferzeit pro Lieferung? In der Tabelle „order“ ist sie mir eigentlich nicht ins Auge gefallen. Wie wird den diese Lieferzeit errechnet - die längste Lieferzeit aller Positionen? Für die Lieferzeit pro Position werde ich ein Ticket aufmachen.

Mit freundlichen Grüßen Jörg Marckscheffel

Hallo zusammen, hatte sich das Problem erledigt? Würde das auch gern wissen… LG!

Würde mich auch interessieren. Wo steckt denn die Lieferzeit pro Lieferung?

Same here: Wurde das Problem mittlerweile gelöst?

Das Problem scheint mittlerweile gelöst:

{{ order.deliveries.first.shippingDateEarliest|format_datetime('short', 'none') }}

Es gibt auch noch shippingDateLatest, wenn man einen Zeitraum angeben möchte.

hallo, wenn ich das richtig sehe, ist das aber nicht die auf den artikel bezogene lieferzeit, oder? wir bräuchten die LZ pro artikel. da finde ich aktuell nichts, sonst wer? viele grüße!

@UhrenZietz Kannst du uns mal das entsprechende Ticket verlinken?

Ich sehe bei der order.deliveries.first.shippingDateEarliest und order.deliveries.first.shippingDateLatest das Problem, dass keine Wochenenden/Feiertage/Betriebsferien oder ähnliches beachtet werden. Das Shopware System behandelt jeden Tag als Arbeitstag. Das kann, je nach Lieferzeit und Bestellzeitpunkt, zu mehreren Tagen Versatz zum tatsächlichen Lieferzeitfenster führen.
Fazit: Nicht zu gebrauchen!
Mögliche Lösung für unseren Shop:
Die Lieferzeitangaben wie auf der Artikeldetailseite (Ampel). Diese sind allerdings im Checkout Finish nicht verfügbar. Sie müssten zu jeder Position einer Bestellung gespeichert werden, dann können diese Daten auch in Mailings verwendet werden und man umgeht die Angabe eines konkreten Lieferdatums, dass aktuell noch nicht richtig berechnet werden kann.

1 „Gefällt mir“

@UhrenZietz habs gefunden
https://issues.shopware.com/issues/NEXT-11108

Noch wichtig bei dem ganzen Thema:
https://issues.shopware.com/issues/NEXT-25350
Aktuell werden Liefertermine auf Mo-So berechnet, es können keine Tage ausgeschlossen werden.
Gerne mal mit Voten, dass sich das hoffentlich bald ändert. Das würde einige Probleme auch in diesem Thema beseitigen.

@Moritz_Naczenski

Das funktioniert so in der aktuellen Version nicht. Nach dem Einfügen wird die E-Mail wird nicht mehr versendet. Gab’s da vielleicht einige Änderungen am Code?

Hier der Original-Code, bei dem ja nur der Grundpreis angezeigt wird:

{% if nestedItem.payload.features is defined and nestedItem.payload.features|length >= 1 %}
                        {% set referencePriceFeatures = nestedItem.payload.features|filter(feature => feature.type == 'referencePrice') %}
                        {% if referencePriceFeatures|length >= 1 %}
                            {% set referencePriceFeature = referencePriceFeatures|first %}
                            <div>
                                {{ referencePriceFeature.value.purchaseUnit }} {{ referencePriceFeature.value.unitName }}
                                ({{ referencePriceFeature.value.price|currency(currencyIsoCode) }}* / {{ referencePriceFeature.value.referenceUnit }} {{ referencePriceFeature.value.unitName }})
                            </div>
                        {% endif %}
                        
                    {% endif %}

Grüße, Achim

Sehe ich das Richtig, dass nach 3 Jahren immer noch nicht die Lieferzeit pro Artikel ausgegeben wird?

Bitte mal um Feedback.

Hallo zusammen,

wir stecken gerade in den letzten Zügen des Wechsels von SW5 zu SW6 und ich bin, um es gelinde auszudrücken, entsetzt. Eine so elementare und meiner Meinung nach selbstverständliche Funktion wie die Anzeige der Lieferzeiten in der Bestellbestätigung des Kunden scheint in SW6 weder enthalten zu sein, noch einfach zu implementieren.

In der heutigen Zeit, wo Transparenz und Kundenzufriedenheit an erster Stelle stehen, halte ich das für ein absolutes Muss. Die Anzeige war in der alten SW5 problemlos möglich. Warum ist das in der „supermega tollen“ (Ironie) SW6 nicht machbar?

Oder gibt es mittlerweile eine Lösung, die ich übersehen habe? Jede Hilfe oder Einsicht wäre enorm geschätzt, da diese Funktion für unser Geschäft unerlässlich ist.

Vielen Dank im Voraus für eure Unterstützung und teilt gerne eure Gedanken und Erfahrungen mit mir!

Beste Grüße,
Mirko

Gibts hier inzwischen News oder ist das klar, dass es nicht umgesetzt wird? @Moritz_Naczenski

Same here, letzte Handgriffe an den Mails. Hast Du inzwischen eine Lösung für die Lieferzeiten pro Artikel?

ich habe dazu eine kleine Erweiterung geschrieben die mir die DeliveryTime, AvailableStock und MinPurchase ins Payload das lineItem der order packt, so dass ich an diesen die Lieferzeit nach Regeln ausgeben kann.

Habe mich dazu per eigenem Subscriber an das BeforeLineItemAddedEvent angekoppelt und dort die benötigten Daten aus dem Produkt, bzw. wenn am Produkt nicht gestezt, aus dem Vater, geholt und ins Payload gepackt. Damit stehen die Daten dann auch in der Bestell-Mail zur Verfügung.

Wenn jemand dabei Unterstützung braucht, gerne schreiben.

Hier gibt es auch was „fertiges“ was man sich dann ggf. anpassen kann um die Daten die man benötigt GitHub - AndreasMueck/WakExtendDataForMailTemplate: WakExtendDataForMailTemplate

Hey @web-grips,

ich habe mir dein Plugin angesehen. Wie kann ich auf die Lieferzeit zugreifen?

Den Code habe ich wie folgt erweitert, bekomme aber keine Ausgabe.

            if ($product->getDeliveryTime() !== null) {
                $productDeliveryTime = $product->getDeliveryTime();
                $lineItem->setPayloadValue("deliveryTime", $productDeliveryTime);
            } else {
                $lineItem->setPayloadValue("deliveryTime", "");
            }

Im E-Mail Template habe ich {{ nestedItem.payload.deliveryTime }} eingebaut.

Was mache ich falsch?

Gruß
Marco