Использование несколько почтовых ящиков, в зависимости от города доставки. OpenCart

Несколько почтовых ящиков на Opencart

Если например магазин работает в нескольких городах и вы хотите распределить заказы по разным менеджерам, то можно добавить при оформлении заказа в корзине дополнительный пункт меню «Выбор Города», в зависимости от выбора, письма будут уходить в разные почтовые ящики:

Данное описание приведено на OpenCart Версии 1.5.6.4 с модулем доставки Simple v 4.5.16.

Порядок действий

В модуле доставки Simple создаем дополнительные поля для городов, выбираем вкладку «Поля«:

 

Создаем новое поле:

 

Вводим настройки:

 

Вторая закладка:

 

В адресе доставки добавляем созданные поля:

 

Выбираем в главном меню закладку «Страны«:

 

Выбираем «Изменить«:

 

Вводим значения для формирования писем-уведомлений:

 

В файле catalog/model/checkout/order.php после строк:

				$mail->port = $this->config->get('config_smtp_port');
$mail->timeout = $this->config->get('config_smtp_timeout');
$mail->setTo($order_info['email']);
$mail->setFrom($this->config->get('config_email'));
$mail->setSender($order_info['store_name']);
$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
$mail->setHtml($html);
$mail->setText(html_entity_decode($text, ENT_QUOTES, 'UTF-8'));
$mail->send();
}

 

Вставляем код для подгрузки значения города из базы:

// подгружаем из базы значение города, которое ввёл клиент. В данном случае магазин работает через модуль заказов Simple, поэтому названия столбцов баз могут отличаться.
$shipping_city = $this->db->query("SELECT shipping_city_1 FROM ". DB_PREFIX . "order_simple_fields WHERE order_id = '" . (int)$order_id ."'");

 

Названия переменных можно увидеть в базе данных:

 

Сразу на ним вставляем код для переключения почты в зависимости от города:

			switch ($shipping_city->row['shipping_city_1']) {
case 'Москва':
$sendToMail = 'pervaya_pochta@yandex.ru';
break;

case 'Санкт-Петербург':
$sendToMail= 'vtoraya_pochta@bk.ru';
break;

default:
$sendToMail = $this->config->get('config_email');
break;
}

 

Дальше в блоке:

$mail = new Mail(); 
$mail->protocol = $this->config->get('config_mail_protocol');
$mail->parameter = $this->config->get('config_mail_parameter');
$mail->hostname = $this->config->get('config_smtp_host');
$mail->username = $this->config->get('config_smtp_username');
$mail->password = $this->config->get('config_smtp_password');
$mail->port = $this->config->get('config_smtp_port');
$mail->timeout = $this->config->get('config_smtp_timeout');
$mail->setTo($this->config->get('config_email'));
$mail->setFrom($this->config->get('config_email'));
$mail->setSender($order_info['store_name']);
$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
$mail->setHtml($html);
$mail->setText(html_entity_decode($text, ENT_QUOTES, 'UTF-8'));
$mail->send();

Добавляем:


$mail->setTo($sendToMail); // устанавливаем нашу переменную
//$mail->setTo($this->config->get('config_email')); Этот старый код можно закомментить

 

Enjoy!

Поделись, если оказалось полезно :)
Нет комментариев

Написать