24 Янв Использование несколько почтовых ящиков, в зависимости от города доставки. 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!
Нет комментариев