Jump to content
xt:Commerce Community Forum

Artikel und Bestellung und Status Mail einbinden


Recommended Posts

Hallo,

kann mir jemand helfen beim Einbinden von zusätzlichem Text in die

change_order_mail im Pfad admin\mail\german.

Aktuell habe ich in der Datei:

Sehr geehrte/r {$NAME},

Der Status Ihrer Bestellung wurde geändert:

Neuer Status: {$ORDER_STATUS}

{if $COMMENTS} Anmerkungen: {$COMMENTS}{/if}

möchte noch die Bestellnummer, Bestelldatum, den Artikel etc.

wie aus der Bestätigungsmail der Bestellung einbinden.

Das Kopieren der Parameter aus der Bestätigungsmail klapp nicht. Hat

jemand ein Idee?

Danke.

Gruß

Link to comment
Share on other sites

  • 4 months later...

Die Frage von Sascha996 würde mich auch interessieren!

Ich möchte in der Status-Mail die Bestllnummer und das Bestelldatum mit anzeigen lassen. Füge ich einfach die beiden Variablen {$oID} und {$DATE} passiert nichts!

Zudem würde ich gerne schon im Betreff der Statusmail die Bestellnummer und Datum anzeigen lassen, damit der Kunde sofort weiß, auf welche Bestellung sich die Mail bezieht. Welche Schritte sind hierfü nötig?

Vielen Dank!

Link to comment
Share on other sites

Hallo zusammen,

nach langem Suchen bin ich fündig geworden. Die hier aufgezeigte Lösung funktioniert bei mir einwandfrei. Ich bedanke mich an dieser Stelle bei Jens Langen, der die hier aufgezeigten Modifikationen freundlicherweise andernorts zur Verfügung gestellt hat.

1. Datei /admin/includes/classes/order.php

// suche:

QUELLTEXT

function order($order_id) {[/PHP]

// danach einfügen

QUELLTEXT

[PHP]global $xtPrice;[/PHP]

// suche

QUELLTEXT

[PHP] }
?>[/PHP]

// davor

QUELLTEXT

[PHP]function getOrderData($oID) {
global $xtPrice;

require_once(DIR_FS_INC . 'xtc_get_attributes_model.inc.php');

$order_query = "SELECT
products_id,
orders_products_id,
products_model,
products_name,
final_price,
products_shipping_time,
products_quantity
FROM ".TABLE_ORDERS_PRODUCTS."
WHERE orders_id='".(int) $oID."'";
$order_data = array ();
$order_query = xtc_db_query($order_query);
while ($order_data_values = xtc_db_fetch_array($order_query)) {
$attributes_query = "SELECT
products_options,
products_options_values,
price_prefix,
options_values_price
FROM ".TABLE_ORDERS_PRODUCTS_ATTRIBUTES."
WHERE orders_products_id='".$order_data_values['orders_products_id']."'";
$attributes_data = '';
$attributes_model = '';
$attributes_query = xtc_db_query($attributes_query);
while ($attributes_data_values = xtc_db_fetch_array($attributes_query)) {
$attributes_data .= '<br />'.$attributes_data_values['products_options'].':'.$attributes_data_values['products_options_values'];
$attributes_model .= '<br />'.xtc_get_attributes_model($order_data_values['products_id'], $attributes_data_values['products_options_values'],$attributes_data_values['products_options']);

}
$order_data[] = array ('PRODUCTS_MODEL' => $order_data_values['products_model'], 'PRODUCTS_NAME' => $order_data_values['products_name'],'PRODUCTS_SHIPPING_TIME' => $order_data_values['products_shipping_time'], 'PRODUCTS_ATTRIBUTES' => $attributes_data, 'PRODUCTS_ATTRIBUTES_MODEL' => $attributes_model, 'PRODUCTS_PRICE' => $xtPrice->xtcFormat($order_data_values['final_price'], true),'PRODUCTS_SINGLE_PRICE' => $xtPrice->xtcFormat($order_data_values['final_price']/$order_data_values['products_quantity'], true), 'PRODUCTS_QTY' => $order_data_values['products_quantity']);

}

return $order_data;

}

function getTotalData($oID) {
global $xtPrice,$db;

// get order_total data
$oder_total_query = "SELECT
title,
text,
class,
value,
sort_order
FROM ".TABLE_ORDERS_TOTAL."
WHERE orders_id='".(int) $oID."'
ORDER BY sort_order ASC";

$order_total = array ();
$oder_total_query = xtc_db_query($oder_total_query);
while ($oder_total_values = xtc_db_fetch_array($oder_total_query)) {


$order_total[] = array ('TITLE' => $oder_total_values['title'], 'CLASS' => $oder_total_values['class'], 'VALUE' => $oder_total_values['value'], 'TEXT' => $oder_total_values['text']);
if ($oder_total_values['class'] = 'ot_total')
$total = $oder_total_values['value'];

}

return array('data'=>$order_total,'total'=>$total);

}[/PHP]

// Datei /admin/orders.php

// suche:

QUELLTEXT

[PHP]$smarty->config_dir = DIR_FS_CATALOG.'lang';[/PHP]

// danach einfügen:

QUELLTEXT

[PHP] /// CHANGES
$smarty->assign('address_label_customer', xtc_address_format($order->customer['format_id'], $order->customer, 1, '', '<br />'));
$smarty->assign('address_label_shipping', xtc_address_format($order->delivery['format_id'], $order->delivery, 1, '', '<br />'));
if ($_SESSION['credit_covers'] != '1') {
$smarty->assign('address_label_payment', xtc_address_format($order->billing['format_id'], $order->billing, 1, '', '<br />'));
}
$smarty->assign('csID', $order->customer['csID']);



require(DIR_FS_CATALOG.DIR_WS_CLASSES . 'xtcPrice.php');
$xtPrice = new xtcPrice($_SESSION['currency'],'');

$order_total = $order->getTotalData($oID);
$smarty->assign('order_data', $order->getOrderData($oID));
$smarty->assign('order_total', $order_total['data']);

// assign language to template for caching
$smarty->assign('language', $_SESSION['language']);
$smarty->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');
$smarty->assign('logo_path', HTTP_SERVER.DIR_WS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/img/');
$smarty->assign('oID', $insert_id);
$smarty->assign('DATE', xtc_date_long($order->info['date_purchased']));

$smarty->assign('NAME', $order->customer['name']);
$smarty->assign('COMMENTS', $order->info['comments']);
$smarty->assign('EMAIL', $order->customer['email_address']);
$smarty->assign('PHONE',$order->customer['telephone']);

// PAYMENT MODUL TEXTS
// EU Bank Transfer
if ($order->info['payment_method'] == 'eustandardtransfer') {
$smarty->assign('PAYMENT_INFO_HTML', MODULE_PAYMENT_EUTRANSFER_TEXT_DESCRIPTION);
$smarty->assign('PAYMENT_INFO_TXT', str_replace("<br />", "\n", MODULE_PAYMENT_EUTRANSFER_TEXT_DESCRIPTION));
}

// MONEYORDER
if ($order->info['payment_method'] == 'moneyorder') {
$smarty->assign('PAYMENT_INFO_HTML', MODULE_PAYMENT_MONEYORDER_TEXT_DESCRIPTION);
$smarty->assign('PAYMENT_INFO_TXT', str_replace("<br />", "\n", MODULE_PAYMENT_MONEYORDER_TEXT_DESCRIPTION));
}

// dont allow cache
$smarty->caching = false;


///CHANGES[/PHP]

Das wars. Jetzt kann man den Quelltext der

/templates/DEINTEMPLATE/mail/DEINESPRACHE/order_mail.html

als Quelltext für die

/templates/DEINTEMPLATE/admin/mail/DEINESPRACHE/change_order_mail.html

nutzen und man erhält eine detailierte Mail zur Statusänderung.

Link to comment
Share on other sites

  • 2 weeks later...

Klappt bei mir wunderbar, aber ausgerechnet die Order ID wird nicht übermittelt!!!! :confused:

Außerdem wäre es gut, wenn auch die Order ID (u. evtl. das Datum) schon im E-Mail Betreff mit angegeben werden würde. In der Bestellbestätigungsmail geht das über {$nr} / {$date}

Komischerweise funktioniert das nicht mit der Order Change Datei!

Wer weiß zu helfen?

Danke!

Link to comment
Share on other sites

  • 2 weeks later...
  • 4 weeks later...

Gute Anleitung "buddi". Irgendwie habe ich es aber nicht hinbekommen die Zahlungsweise mit auszugeben, daher habe ich in der Datei

.../shop/admin/orders.php

vor der Zeile

// PAYMENT MODUL TEXTS

noch folgendes eingefügt:

	if ($order->info['payment_method']!='' && $order->info['payment_method']!='no_payment') {

	include(DIR_FS_CATALOG.'lang/'.$_SESSION['language'].'/modules/payment/'.$order->info['payment_method'].'.php');

 	$payment_method=constant(strtoupper('MODULE_PAYMENT_'.$order->info['payment_method'].'_TEXT_TITLE'));

  	$smarty->assign('PAYMENT_METHOD',$payment_method);

    }

Da ich mir auch noch die Bankdaten ausgeben lassen wollte habe ich dann noch vor der Zeile // dont allow cache folgendes eingefügt:
	$query_bank = xtc_db_query("SELECT banktransfer_owner, banktransfer_number, banktransfer_bankname, banktransfer_blz FROM banktransfer WHERE orders_id='".$_GET['oID']."'");

	$bank = xtc_db_fetch_array($query_bank); 

	$smarty->assign('banktransfer_owner',$bank['banktransfer_owner']); 

	$smarty->assign('banktransfer_blz',$bank['banktransfer_blz']); 

	$smarty->assign('banktransfer_number',$bank['banktransfer_number']); 

	$smarty->assign('banktransfer_bankname',$bank['banktransfer_bankname']);

In der Datei: .../shop/templates/<mein Template>/admin/mail/german/change_order_mail.html ganz am Anfang folgende Zeile eingefügt:
{config_load file="$language/lang_$language.conf" section="print_order"}[/code]

Dann natürlich die change_order_mail.html noch entsprechend angepasst, so dass ich jetzt meine Versandbestätigungen und Zahlungserinnerungen über diese Statusmail machen kann.

Link to comment
Share on other sites

Ich verschicke jetzt auch "Zahlungserinnerungen" über die Statusmail

Hier ein Ausschnitt aus meiner change_order_mail.html

<b>Hallo {$NAME}</b> <br>

{if $ORDER_STATUS =='Zahlungserinnerung'}<br>

vielen Dank für Ihre Bestellung Nr. {$oID}, vom {$DATE}.<br>

<br>

Sicherlich haben Sie es nur vergessen. Bisher ist Ihre Zahlung noch nicht eingegangen.<br>

Bitte begleichen Sie den Rechnungsbetrag (Rechnungskopie s.u.) auf unser Konto.<br>

<br>

<table border="0" cellspacing="2" cellpadding="1">

	<tr>

		<td width="40"></td>

		<td width="150">Kontoinhaber</td>

		<td>Herr Mustermann</td>

	</tr>

	<tr>

		<td width="40"></td>

		<td width="150">Bank</td>

		<td>Lehman Brother</td>

	</tr>

	<tr>

		<td width="40"></td>

		<td width="150">BLZ</td>

		<td>500 309 00</td>

	</tr>

	<tr>

		<td width="40"></td>

		<td width="150">Konto</td>

		<td>012 345 678</td>

	</tr>

	<tr height="16">

		<td width="40" height="16"></td>

		<td width="150" height="16"></td>

		<td height="16"></td>

	</tr>

	<tr>

		<td width="40"></td>

		<td width="150">IBAN</td>

		<td>36 5003 0900 0012 3456 00</td>

	</tr>

	<tr>

		<td width="40"></td>

		<td width="150">BIC</td>

		<td>SLBSDEFPXXX</td>

	</tr>

</table>

<br>

Sollten Sie bereits überwiesen haben, .....

{/if}{if $ORDER_STATUS =='Lastschrift'}<br>

<b>Rechnungsbetrag nicht überweisen!</b><br>

Der Betrag wird innerhalb der nächsten 7 Werktage von Ihrem Konto:<br>

<table border="0" cellspacing="2" cellpadding="1">

	<tr>

		<td width="150">{#text_bank_nummer#}</td>

		<td>{$banktransfer_number}</td>

	</tr>

	<tr>

		<td width="150">{#text_bank_blz#}</td>

		<td>{$banktransfer_blz}</td>

	</tr>

	<tr>

		<td width="150">{#text_bank_name#}</td>

		<td>{$banktransfer_bankname}</td>

	</tr>

</table>

per <b>Lastschrift</b> eingezogen.<br>

{/if}


...


{if $NOTIFY_COMMENTS}<br>

  <table style="border-top:1px solid; border-bottom:1px solid;" width="100%" border="0">

	<tr bgcolor="#f1f1f1">

	  <td><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Anmerkung zu Ihrer Bestellung</font></strong></td>

	</tr>

	<tr>

	  <td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">{$NOTIFY_COMMENTS}</font></td>

	</tr>

</table>

{/if}<br>

...

Ansonsten kann man natürlich jeden beliebigen Text einfügen. Je nachdem mit welchem Status ich die Mail verschicke, ändert sich der Text. Darüber hinaus werte ich noch die Zahlungsart ($PAYMENT_METHOD) aus.

{if $PAYMENT_METHOD =='Rechnung'}<br/>

<b>Betrag zahlbar innerhalb von 7 Tagen ohne Abzüge.</b> <br>

Bitte geben Sie bei der Überweisung die Bestell-/Rechnungsnummer an.<br />

{/if}{if $PAYMENT_METHOD =='Lastschriftverfahren'}<br/>

<b>Nicht überweisen!  </b>Der Betrag wird innerhalb der nächsten 7 Werktage von Ihrem {#text_bank_nummer#} {$banktransfer_number}, {#text_bank_blz#} {$banktransfer_blz} bei dem {#text_bank_name#} {$banktransfer_bankname} abgebucht.<br />

{/if}{if $PAYMENT_METHOD =='Scheck/Vorkasse' && $ORDER_STATUS =='Versendet'}<br/>

<b>Betrag bezahlt. Vielen Dank!</b><br />

{/if}

Hat denn keiner eine Idee wie man den Betreff der Mail mit Order_ID und Datum anpassen kann? In der Bestellmail geht das doch auch.

Am Ende hänge ich noch einmal die Rechnung aus print_order.html dran.

Link to comment
Share on other sites

  • 5 months later...

Nachdem ich eine Möglichkeit gesucht habe die Bestellnummer bzw. das Bestelldatum im Betreff der Statusmails einzufügen bin ich des öfteren wieder über diesen Beitrag gestolpert.

Mittlerweile habe ich eine bzw. zwei Lösungen dafür gefunden.

Die eine funktioniert als Standalone und die zweite in Verbindung mit einer Erweiterung in der man verschiedene Email Betreff`s angeben kann.

Hier zumindest mal die standalone Version.

in admin/orders.php

xtc_php_mail(EMAIL_BILLING_ADDRESS, EMAIL_BILLING_NAME, $check_status['customers_email_address'], $check_status['customers_name'], '', EMAIL_BILLING_REPLY_ADDRESS, EMAIL_BILLING_REPLY_ADDRESS_NAME, '', '', EMAIL_BILLING_SUBJECT, $html_mail, $txt_mail);
ersetzen mit
// Bestellnummer + Bestelldatum im Betreff change_order_mail 

/*xtc_php_mail(EMAIL_BILLING_ADDRESS, EMAIL_BILLING_NAME, $check_status['customers_email_address'], $check_status['customers_name'], '', EMAIL_BILLING_REPLY_ADDRESS, EMAIL_BILLING_REPLY_ADDRESS_NAME, '', '', EMAIL_BILLING_SUBJECT, $html_mail, $txt_mail); */

xtc_php_mail(EMAIL_BILLING_ADDRESS, EMAIL_BILLING_NAME, $check_status['customers_email_address'], $check_status['customers_name'], '', EMAIL_BILLING_REPLY_ADDRESS, EMAIL_BILLING_REPLY_ADDRESS_NAME, '', '', EMAIL_BILLING_SUBJECT .' '.$oID.' '. '/ vom ' . xtc_date_long($check_status['date_purchased']), $html_mail, $txt_mail);

// Ende[/code]

Nun wird IMMER die Bestellnummer und das Bestelldatum im Betreff mitgesendet, die Alternative wäre die Erweiterung email_betreff_editieren dann kann man im Admin auch die Variablen {$oID} oder {$date} benutzen.

Ist zwar nicht unbedingt die schönste Lösung aber sie funktioniert

Vielleicht kann ja noch jemand was damit anfangen. ;)

Gruß MarcB

P.S. Wer im Bestelldatum den Tag nicht mit drin haben möchte einfach das xtc_date_long gegen xtc_date_short tauschen ;)

Link to comment
Share on other sites

Hallo Zusammen!

Ich bin recht neu in der gesamten XTC-Thematik und habe da noch so eine kleine Frage. Vielleicht wurde sie auch schon in den ganzen Threats über mir beantwortet, aber dann habe ich es wohl nicht verstanden. :(

Was muss ich tun, wenn ein Artikel momentan nicht lieferbar ist.. und ich gerne dem Kunden dann eine "Status-Mail" zu senden will, dass der gewünschte Artikel verfügbar ist. Status-Mail habe ich in den vorigen Threats öfters lesen können, nur habe ich noch nicht wirklich verstanden wie eine solche Status-Mail funktioniert. :(

Könnte mir vielleicht jemand kurz sagen.. wie ich diese tätige? Schon mal vielen Dank im Voraus!

p.s.: Wie kann ich es umgehen, dass wenn ein Kunde bestellt.. und die Ware nicht lieferbar ist die Meldung "Die mit ***markierten..." nicht erfolgt, sondern der Kunde die möglichkeit hat seine Email Adresse zu hinterlegen.. um eine Statusmail zu bekommen..wenn der Artikel wieder lieferbar ist.

quik.

Link to comment
Share on other sites

Hallo quik

Wie Du die Statusmails für diesen Zweck verwenden kannst weiß ich leider nicht, aber es gibt ein Zusatzmodul für diesen Zweck z.B. http://www.xt-base.de/Module-fuer-xtCommerce/Kundenbindung-Pflege/Kundenerinnerung-bei-erneutem-Eintreffen-von-Artikeln--73.html

Soll jetzt aber keine Empfehlung sein da ich den Anbieter nicht kenne, aber vielleicht gibt es was ähnliches auch kostenfrei im Netz.

Ansonsten kann ich Dir, da Du schreibst du bist neu in xtc auch das xtc-supportforum.de empfehlen ;)

Gruß Marc

P.S. Du hast eine PN ;)

Link to comment
Share on other sites

  • 6 months later...
  • 5 months later...
  • 5 months later...

Klappt bei mir wunderbar, aber ausgerechnet die Order ID wird nicht übermittelt!!!! :confused:

Außerdem wäre es gut, wenn auch die Order ID (u. evtl. das Datum) schon im E-Mail Betreff mit angegeben werden würde. In der Bestellbestätigungsmail geht das über {$nr} / {$date}

Komischerweise funktioniert das nicht mit der Order Change Datei!

Wer weiß zu helfen?

Danke!

Die OrderID wird nicht übermittelt weil in folgender Zeile noch ein kleiner Fehler steckt:

$smarty->assign('oID', $insert_id);

Das $insert_id muss durch $oID ersetzt werden:

$smarty->assign('oID', $oID);

Jetzt funktioniert es wunderbar!

Link to comment
Share on other sites

  • 7 months later...

/templates/DEINTEMPLATE/mail/DEINESPRACHE/order_mail.html

als Quelltext für die

/templates/DEINTEMPLATE/admin/mail/DEINESPRACHE/change_order_mail.html

nutzen und man erhält eine detailierte Mail zur Statusänderung.

Funzt, super sache. danke

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...