Wie bekomme ich Lieferzeitangaben in die E-Mail-Bestellbestätigung?

Ich möchte die Lieferzeitangaben (vor allem die vom Standard abweichenden 1-3 Werktage) gerne in der E-Mail-Bestätigung (also E-Mail-Vorlage sOrder) an den Kunden senden, damit er in der Bestätigungsmail sieht, wie lange die Lieferzeit ist, vor allem wenn ein Artikel eine längere Lieferzeit hat.

Ich habe es aber nicht geschafft, hier die Variablen so zu setzen, dass mir da auch tatsächlich etwas angezeigt wird. Hat jemand vielleicht einen Codeschnipsel, mit dem das funktioniert?

Ja, die originalen Shopware Mail-Vorlagen sind totaler Käse und für einen vernünftigen Endkundenshop nicht zu gebrauchen. Hier muss man vieles selber anpassen. Unter anderem auch die Angaben der Lieferzeiten. Im Prinzip werden alle Variablen angezeigt. Man muss nur eine Anfrage schaffen, damit das ganze halbwegs funktioniert.

Hier nur ein Beispiel (ausbauen müsst ihr auch das selber):

{if isset($details.active) && !$details.active}
Diese Auswahl steht nicht zur Verfügung!
{elseif $details.sReleaseDate && $details.sReleaseDate|date_format:"%Y%m%d" > $smarty.now|date_format:"%Y%m%d"}
Dieser Artikel erscheint am {$sArticle.sReleaseDate|date:‚date_long‘}
{elseif $details.esd}
Als Sofortdownload verfügbar (über Mein Konto > Meine Sofortdownloads)
{elseif $details.instock > 0}
Sofort versandfertig, Lieferzeit ca. 1-3 Werktage
{elseif $details.shippingtime}
Lieferzeit {$details.shippingtime} Werktage
{else}
Sofort versandfertig, Lieferzeit ca. 1-3 Werktage
{/if}

Will bei mir irgendwie nicht funktionieren. Kannst Du mir weitere Hilfestellung anbieten?

Was heißt denn das genau? Kommt ein Fehler? Wird etwas falsches angezeigt? Was hast du bisher unternommen?

Ehrlich gesagt habe ich keine Ahnung, an welcher Stelle dieser Code eingesetzt werden muss, um zu funktionieren. Ich habe es an verschiedenen Stellen versucht und bekomme jedesmal beim Testversand den Fehler "Die E-Mail konnte nicht versendet werden. Fehlermeldung: " Da steht aber keine Fehlermeldung.

Ich denke, ich bin total auf dem Holzweg, deshalb meine Bitte: Kannst Du mir genau sagen, wo der Code eingesetzt werden muss bzw. was ich ändern muss?

Aktuell reden wir ja noch von der E-Mail-Vorlage sOrder (für die Bestellungen).

Nun weiß ich nicht wie deine aktuelle Vorlage aussieht (jeder hat seine eigene) und deshalb kann ich nicht genau schreiben wo was bei dir rein muss. Ich kann max. die Stelle andeuten und du musst dich damit beschäftigen. Die komplette Mail-Vorlage kann ich hier nicht posten (ist zu groß).

Ich versuche es mal:

In der originalen Mail-Vorlage steht in Zeile 8:

{foreach item=details key=position from=$sOrderDetails}

und in Zeile 11:

{/foreach}

Der oben erwähnte Code muss in diese Schleife. Noch vor „{/foreach}“. Sowohl bei der TEXT- Version als auch HTML-Version.

Ja, in der sOrder Vorlage, den Code habe ich zwischen die foreach-tags platziert, es funktioniert aber nicht. Kann ich Dir meinen Code mal per PN schicken und wir klären dann alles weitere?

Über PN beantworte ich keine Fragen rund um Shopware. So weit wie es möglich ist nur hier im Forum.

Also wie gesagt, ich habe den Code 1:1 so in meine Vorlage rein kopiert, zwischen den besagten Tags.

Hier die Stelle:

{foreach item=details key=position from=$sOrderDetails}
<tr>
  <td rowspan="2" style="border-bottom:1px solid #cccccc;">{if $details.image.src.0 && $details.modus != 2}<img style="height: 57px;" height="57" src="{$details.image.src.0}" alt="{$details.articlename}" />{else} {/if}</td>
  <td>{$position+1|fill:4} </td>
  <td>{$details.ordernumber|fill:20}</td>
  <td>{$details.quantity|fill:6}</td>
  <td>{$details.price|padding:8}{$sCurrency}</td>
  <td>{$details.amount|padding:8} {$sCurrency}</td>
</tr>
<tr>
  <td colspan="5" style="border-bottom:1px solid #cccccc;">{$details.articlename|wordwrap:80|indent:4}</td>
</tr>
    {/foreach}

Die Mail-Adresse ist korrekt und die Mail-Einstellungen auch?

Ja, alles korrekt. Sobald ich Deinen Code wieder entferne, funktioniert alles.

Keine Idee, woran es liegen könnte?

Also ich habe diesen Code bei einigen anderen Shops im Einsatz und dort geht das alles wunderbar. Nicht das beim Kopieren sich irgendwelche fremde Zeichen mit eingeschlichen haben. Das kann ich leider nicht sehen. Ich wüsste jetzt nicht wo der Fehler sein sollte.

Es funktioniert nicht. Egal, wo ich den Code einfüge lässt sich die Testmail nicht mehr versenden. Bei Klick auf „Vorschau anzeigen“ kommt die Fehlermeldung „Invalid“.

Schau mal bitte in die Logs, da müsste hierzu ja ein Fehler stehen.

Im Backend-Log steht bei „Meldung“:
"Die E-Mail konnte nicht versendet werden.
Fehlermeldung: "

System-Log von heute exisitiert keins.

Ich verstehe nicht was da nicht gehen soll. Hier noch mal als Komplett Code.

{foreach item=details key=position from=$sOrderDetails}
<tr>
  <td rowspan="2" style="border-bottom:1px solid #cccccc;">
    {if $details.image.src.0 && $details.modus != 2}
    <img style="height: 57px;" height="57" src="{$details.image.src.0}" alt="{$details.articlename}" />
    {else} {/if}
    </td>
  <td>{$position+1|fill:4} </td>
  <td>{$details.ordernumber|fill:20}</td>
  <td>{$details.quantity|fill:6}</td>
  <td>{$details.price|padding:8}{$sCurrency}</td>
  <td>{$details.amount|padding:8} {$sCurrency}</td>
</tr>
<tr>
  <td colspan="5" style="border-bottom:1px solid #cccccc;">
  {$details.articlename|wordwrap:80|indent:4}

  {if isset($details.active) && !$details.active}
  Diese Auswahl steht nicht zur Verfügung!
  {elseif $details.sReleaseDate && $details.sReleaseDate|date_format:"%Y%m%d"> $smarty.now|date_format:"%Y%m%d"}
  Dieser Artikel erscheint am {$details.sReleaseDate|date:'date_long'}
  {elseif $details.esd}
  Als Sofortdownload verfügbar (über Mein Konto > Meine Sofortdownloads)
  {elseif $details.instock > 0}
  Sofort versandfertig, Lieferzeit ca. 1-3 Werktage
  {elseif $details.shippingtime}
  Lieferzeit {$details.shippingtime} Werktage
  {else}
  Sofort versandfertig, Lieferzeit ca. 1-3 Werktage
  {/if}

  </td>
</tr>
{/foreach}

Jetzt funktionierts. Danke! Bin mir nicht sicher, ob es an der Stelle lag, vor oder nach . Muss noch einiges anpassen, aber prinzipiell scheint es so zu funktionieren.

Vielen Dank für Deine Hilfe und Deine Geduld.

Ich vermute es lag an der Zeile:

Dieser Artikel erscheint am {$details.sReleaseDate|date:'date_long'}

Bei meinem ersten Beispiel hat das Forum die Anführunsgszeichen falsch dargestellt. Wenn man dann 1:1 kopiert kommt natürlich Käse raus :slight_smile:

1 Like