Перейти к содержанию
Форум поддержки пользователей VamShop

Разные письма клиентам и админу


Рекомендуемые сообщения

Есть необходимость отправлять разные письма клиентам и администратору. Например: добавить администратору информацию об IP-адресе заказчика или другие данные. При заказе в 1 клик, например, нет возможности отследить с какого региона клиент и какому менеджеру его обрабатывать.

Как сделать так, чтобы клиенту и администратору приходили разные письма с заказом?

Ссылка на сообщение
Поделиться на другие сайты

Сделайте в Админке - Настройки - Шаблоны писем новый шаблон письма, по аналогии с new-order, т.е. скопируйте его содержимое в новый шаблон, всевдоним например укажите new-order-admin

Затем в /app/Controller/OrdersController.php меняйте:

			// Send to admin
			if($config['SEND_EXTRA_EMAIL'] != '') {

				// Set up mail
				$this->Email->init();
				$this->Email->From = $config['NEW_ORDER_FROM_EMAIL'];
				$this->Email->FromName = __($config['NEW_ORDER_FROM_NAME'],true);
				$this->Email->AddAddress($config['SEND_EXTRA_EMAIL']);
				$this->Email->Subject = $subject;

				// Email Body
				$this->Email->Body = $body;
		
				// Sending mail
				$this->Email->send();

			}

на что-то вроде:

			// Send to admin
			if($config['SEND_EXTRA_EMAIL'] != '') {

			// Get email template
			$email_template = $this->EmailTemplate->findByAlias('new-order-admin');
			// Get current order status
			$current_order_status = $this->Order->OrderStatus->OrderStatusDescription->find('first', array('conditions' => array('OrderStatusDescription.order_status_id =' => $order['Order']['order_status_id'], 'OrderStatusDescription.language_id =' => $this->Session->read('Customer.language_id'))));

			// Email Subject
			$subject = $email_template['EmailTemplateDescription']['subject'];
			$subject = str_replace('{$order_number}',$order['Order']['id'], $subject);
			$subject = $config['SITE_NAME'] . ' - ' . $subject;

			$body = $email_template['EmailTemplateDescription']['content'];
			$body = str_replace('{$name}', $order['Order']['bill_name'], $body);
			$fio = explode(" ", $order['Order']['bill_name']);				
			$body = str_replace('{$firstname}', isset($fio[0]) ? $fio[0] : $order['Order']['bill_name'], $body);
			$body = str_replace('{$lastname}', isset($fio[1]) ? $fio[1] : $order['Order']['bill_name'], $body);
			$body = str_replace('{$order_number}', $order['Order']['id'], $body);
			$body = str_replace('{$order_status}', $current_order_status['OrderStatusDescription']['name'], $body);

			$body = str_replace('{$bill_name}', $order['Order']['bill_name'], $body);
			$body = str_replace('{$bill_line_1}', $order['Order']['bill_line_1'], $body);
			$body = str_replace('{$bill_line_2}', $order['Order']['bill_line_2'], $body);
			$body = str_replace('{$bill_city}', $order['Order']['bill_city'], $body);
			$body = str_replace('{$bill_state}', $order['BillState']['name'], $body);
			$body = str_replace('{$bill_country}', $order['BillCountry']['name'], $body);
			$body = str_replace('{$bill_zip}', $order['Order']['bill_zip'], $body);

			$body = str_replace('{$ship_name}', $order['Order']['ship_name'], $body);
			$body = str_replace('{$ship_line_1}', $order['Order']['ship_line_1'], $body);
			$body = str_replace('{$ship_line_2}', $order['Order']['ship_line_2'], $body);
			$body = str_replace('{$ship_city}', $order['Order']['ship_city'], $body);
			$body = str_replace('{$ship_state}', $order['ShipState']['name'], $body);
			$body = str_replace('{$ship_country}', $order['ShipCountry']['name'], $body);
			$body = str_replace('{$ship_zip}', $order['Order']['ship_zip'], $body);

			$order = $this->Order->find('all', array('conditions' => array('Order.id' => $order['Order']['id'])));

			$order = $order[0];

			$body = str_replace('{$shipping_method}', __($order['ShippingMethod']['name'], true), $body);
			$body = str_replace('{$payment_method}', __($order['PaymentMethod']['name'], true), $body);
			$body = str_replace('{$date}', $order['Order']['created'], $body);
			$body = str_replace('{$phone}', $order['Order']['phone'], $body);
			$body = str_replace('{$email}', $order['Order']['email'], $body);
			$body = str_replace('{$order_total}', $order['Order']['total'], $body);

			$order_comment = $this->Order->OrderComment->find('first', array('order'   => 'OrderComment.id DESC', 'conditions' => array('OrderComment.order_id' => $order['Order']['id'])));

			$comments = '';
			if (isset($order_comment['OrderComment']['comment']) && $order_comment['OrderComment']['comment'] != '')
			$comments = $order_comment['OrderComment']['comment'];

			$body = str_replace('{$comments}', $comments, $body);

			$order_products = '';
			foreach($order['OrderProduct'] AS $product) {
				$order_products .= $product['quantity'] . ' x ' . $product['name'] . ' = ' . $product['quantity']*$product['price'] . "\n";
				if ('' != $product['filename']) {
					$order_products .= __('Download link: ', true) . FULL_BASE_URL . BASE . '/download/' . $order['Order']['id'] . '/' . $product['id'] . '/' . $product['download_key'] . "\n";
				}
			}

			$order_products .= "\n" . __($order['ShippingMethod']['name'], true) . ': ' . $order['Order']['shipping'] . "\n";
			$order_products .= __('Order Total',true) . ': ' . $order['Order']['total'] . "\n";

			$body = str_replace('{$products}', $order_products, $body);


				// Set up mail
				$this->Email->init();
				$this->Email->From = $config['NEW_ORDER_FROM_EMAIL'];
				$this->Email->FromName = __($config['NEW_ORDER_FROM_NAME'],true);
				$this->Email->AddAddress($config['SEND_EXTRA_EMAIL']);
				$this->Email->Subject = $subject;

				// Email Body
				$this->Email->Body = $body;
		
				// Sending mail
				$this->Email->send();

			}

 

Ссылка на сообщение
Поделиться на другие сайты

Либо можно попробовать поменять:

$email_template = $this->EmailTemplate->findByAlias('new-order');

на:

$email_template = $this->EmailTemplate->findByAlias('new-order-admin');

Что б проверить, отправляется письмо с новым шаблоном new-order-admin или нет.

Ссылка на сообщение
Поделиться на другие сайты

Если в исходном коде поменять только это, то письмо с новым шаблоном отправляется и админу и клиенту.

Ссылка на сообщение
Поделиться на другие сайты

Так а админ получает тоже письмо, что и клиент?!

или админ вообще письмо не получает, даже с оригинальным кодом?!

А то бывают хостинги с ограничениями на моментальную отправку писем.

Ссылка на сообщение
Поделиться на другие сайты

А точно меняли?!

Покажите файл с изменённым кодом, вроде всё выглядит правильно, код в смысле.

Ссылка на сообщение
Поделиться на другие сайты

Значит не судьба, видимо.

Хотя может включить debug и посмотреть, может там ошибка какая - http://forum.vamshop.ru/topic/12579-как-включить-отображение-php-ошибок-предупреждений/

Ссылка на сообщение
Поделиться на другие сайты

Для меня это серьезная проблема, так как несколько менеджеров из разных регионов, и при поступлении заказа возникает вопрос кому его обрабатывать. Если бы были данные хотя бы об IP-адресе клиента, это бы решало проблему (по IP-адресу можно определить регион).

Данная информация нужна для всех заказов (через корзину, заказ в 1 клик, задать вопрос о товаре).

Какова стоимость решения вопроса?

Ссылка на сообщение
Поделиться на другие сайты

По умолчанию в базе данных заказа нет колонки для записи ip

Не понятно, какой смысл?! Если в информации о заказе есть и регион, и город, и адрес.

Да и ведь IP адрес может не давать реального города, региона покупателя.

Это не надёжная информация.

По-моему, это неправильный путь решения, нужно по-другому решать.

Может брать информацию из заказа и какие-то уже затем действия на основе этой ниформации выполнять.

Ссылка на сообщение
Поделиться на другие сайты

Заказы через корзину имеют у нас самый минимальный процент. В основном - заказ в 1 клик, Заказ звонка (переделанный модуль Задать вопрос о товаре). Т.е., как правило, в большинстве случаев, мы не знаем из какого региона клиент.

Тем не менее, регионы распределены между менеджерами и иногда получается, что одному клиенту звонит один менеджер, затем оказывается что клиент не из его региона и приходится звонить опять клиенту уже другому менеджеру. Это не очень хорошо. И лишние беспокойства клиента и лишняя работа менеджеров и лишние затраты на связь.

А если в комментарий или куда-то типа этого эту информацию вносить, какой-то же должен быть вариант решения вопроса?

Ссылка на сообщение
Поделиться на другие сайты

Не всегда! У нас один офис в Казани, другой в Самаре. МТС и там и там 8917..., мегафон 8927... соответственно

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...