Adilan 0 Опубликовано 17 сентября, 2015 Жалоба Share Опубликовано 17 сентября, 2015 Есть необходимость отправлять разные письма клиентам и администратору. Например: добавить администратору информацию об IP-адресе заказчика или другие данные. При заказе в 1 клик, например, нет возможности отследить с какого региона клиент и какому менеджеру его обрабатывать. Как сделать так, чтобы клиенту и администратору приходили разные письма с заказом? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 17 сентября, 2015 Жалоба Share Опубликовано 17 сентября, 2015 Сделайте в Админке - Настройки - Шаблоны писем новый шаблон письма, по аналогии с 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(); } Ссылка на сообщение Поделиться на другие сайты
Adilan 0 Опубликовано 18 сентября, 2015 Автор Жалоба Share Опубликовано 18 сентября, 2015 Что-то не работает. Письмо клиенту уходит, администратору нет. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 18 сентября, 2015 Жалоба Share Опубликовано 18 сентября, 2015 А email для отправки копий указан? Клиент письмо получает? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 18 сентября, 2015 Жалоба Share Опубликовано 18 сентября, 2015 Либо можно попробовать поменять: $email_template = $this->EmailTemplate->findByAlias('new-order'); на: $email_template = $this->EmailTemplate->findByAlias('new-order-admin'); Что б проверить, отправляется письмо с новым шаблоном new-order-admin или нет. Ссылка на сообщение Поделиться на другие сайты
Adilan 0 Опубликовано 19 сентября, 2015 Автор Жалоба Share Опубликовано 19 сентября, 2015 Если в исходном коде поменять только это, то письмо с новым шаблоном отправляется и админу и клиенту. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 19 сентября, 2015 Жалоба Share Опубликовано 19 сентября, 2015 Так а админ получает тоже письмо, что и клиент?! или админ вообще письмо не получает, даже с оригинальным кодом?! А то бывают хостинги с ограничениями на моментальную отправку писем. Ссылка на сообщение Поделиться на другие сайты
Adilan 0 Опубликовано 19 сентября, 2015 Автор Жалоба Share Опубликовано 19 сентября, 2015 Да, аналогичные письма получает и админ и клиент. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 19 сентября, 2015 Жалоба Share Опубликовано 19 сентября, 2015 А точно меняли?! Покажите файл с изменённым кодом, вроде всё выглядит правильно, код в смысле. Ссылка на сообщение Поделиться на другие сайты
Adilan 0 Опубликовано 19 сентября, 2015 Автор Жалоба Share Опубликовано 19 сентября, 2015 Во вложении. OrdersController.php Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 19 сентября, 2015 Жалоба Share Опубликовано 19 сентября, 2015 А если так. Приходит какое-то письмо? OrdersController.php Ссылка на сообщение Поделиться на другие сайты
Adilan 0 Опубликовано 19 сентября, 2015 Автор Жалоба Share Опубликовано 19 сентября, 2015 Да, приходит. И админу и клиенту. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 20 сентября, 2015 Жалоба Share Опубликовано 20 сентября, 2015 Странно. Тогда и вот этот файл, по идее, должен работать. OrdersController.php Ссылка на сообщение Поделиться на другие сайты
Adilan 0 Опубликовано 20 сентября, 2015 Автор Жалоба Share Опубликовано 20 сентября, 2015 Опять письмо приходит только клиенту, админу не приходит Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 20 сентября, 2015 Жалоба Share Опубликовано 20 сентября, 2015 Значит не судьба, видимо. Хотя может включить debug и посмотреть, может там ошибка какая - http://forum.vamshop.ru/topic/12579-как-включить-отображение-php-ошибок-предупреждений/ Ссылка на сообщение Поделиться на другие сайты
Adilan 0 Опубликовано 25 сентября, 2015 Автор Жалоба Share Опубликовано 25 сентября, 2015 Для меня это серьезная проблема, так как несколько менеджеров из разных регионов, и при поступлении заказа возникает вопрос кому его обрабатывать. Если бы были данные хотя бы об IP-адресе клиента, это бы решало проблему (по IP-адресу можно определить регион). Данная информация нужна для всех заказов (через корзину, заказ в 1 клик, задать вопрос о товаре). Какова стоимость решения вопроса? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 25 сентября, 2015 Жалоба Share Опубликовано 25 сентября, 2015 По умолчанию в базе данных заказа нет колонки для записи ip Не понятно, какой смысл?! Если в информации о заказе есть и регион, и город, и адрес. Да и ведь IP адрес может не давать реального города, региона покупателя. Это не надёжная информация. По-моему, это неправильный путь решения, нужно по-другому решать. Может брать информацию из заказа и какие-то уже затем действия на основе этой ниформации выполнять. Ссылка на сообщение Поделиться на другие сайты
Adilan 0 Опубликовано 25 сентября, 2015 Автор Жалоба Share Опубликовано 25 сентября, 2015 Заказы через корзину имеют у нас самый минимальный процент. В основном - заказ в 1 клик, Заказ звонка (переделанный модуль Задать вопрос о товаре). Т.е., как правило, в большинстве случаев, мы не знаем из какого региона клиент. Тем не менее, регионы распределены между менеджерами и иногда получается, что одному клиенту звонит один менеджер, затем оказывается что клиент не из его региона и приходится звонить опять клиенту уже другому менеджеру. Это не очень хорошо. И лишние беспокойства клиента и лишняя работа менеджеров и лишние затраты на связь. А если в комментарий или куда-то типа этого эту информацию вносить, какой-то же должен быть вариант решения вопроса? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 25 сентября, 2015 Жалоба Share Опубликовано 25 сентября, 2015 Так если есть телефон - можно по коду в телефонном номере определять регион. Ссылка на сообщение Поделиться на другие сайты
Adilan 0 Опубликовано 25 сентября, 2015 Автор Жалоба Share Опубликовано 25 сентября, 2015 Не всегда! У нас один офис в Казани, другой в Самаре. МТС и там и там 8917..., мегафон 8927... соответственно Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 25 сентября, 2015 Жалоба Share Опубликовано 25 сентября, 2015 Так тоже самое и с IP адресами, особенно с мобильным интернетом. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения