Opencart 2.1 как добавить срок доставки заказа в письмо покупателю
- Подробности
- Категория: Opencart (OCstore)
- Обновлено 28.03.2019
Если у вас есть необходимость указать в автоматическом письме покупателю точный срок доставки заказа, как того требует служба качества Яндекс-Маркета, то это статья, возможно, поможет вам.
В этой статье описан способ добавления в письмо покупателю срока доставки Почтой России. На сайте установлены модуль Simple и модуль расчета стоимости и примерных сроков доставки Почтой России версии 3.12 Для модуля Почты версии выше 4 работа не проверялась.
Итак, если модуль Почты настроен, и на странице оформления заказа выводится информация о сроках доставки, то она есть в текущей сессии. Чтобы узнать, в каком виде хранится эта информация в сессии, добавим var_dump($this->session->data['shipping_method']) в конец файла /catalog/controller/checkout/simplecheckout_shipping.php
Чтобы изменения вступили в силу не забываем обновить модификаторы в админке.
Добавляем товар в корзину и переходим на страницу оформления заказа. Там мы увидим содержимое переменной
В этой переменной нас интересует индекс description и его значение.
Будем писать это значение в отдельное поле таблицы oc_order, назовем его shipping_srok и добавим.
Правим файл /catalog/controller/api/order.php
После строки 162
if (isset($this->session->data['shipping_method']['code'])) {
$order_data['shipping_code'] = $this->session->data['shipping_method']['code'];
} else {
$order_data['shipping_code'] = '';
}
добавим
if (isset($this->session->data['shipping_method']['description'])) {
$order_data['shipping_srok'] = $this->session->data['shipping_method']['description'];
} else {
$order_data['shipping_srok'] = '';
}
После строки 192 добавим
$order_data['shipping_srok'] = '';
После строки 543 добавим
if (isset($this->session->data['shipping_method']['description'])) {
$order_data['shipping_srok'] = $this->session->data['shipping_method']['description'];
} else {
$order_data['shipping_srok'] = '';
}
После строки 566 добавим
$order_data['shipping_srok'] = '';
Редактируем файл /catalog/model/checkout/order.php
В запросы функций public function addOrder($data) и public function editOrder($order_id, $data) добавим
', shipping_srok = '" . $this->db->escape($data['shipping_srok']) . "'
в строке 242 добавим
'shipping_srok' => $order_query->row['shipping_srok'],
в строке 573 и в строке 1255 добавим
if($order_info['shipping_srok']){
$srok = $order_info['shipping_srok'];
} else {
$srok ='Срок доставки 5 дней';
}
теперь переменную $srok можно использовать в тексте письма.
И редактируем последний файл /catalog/controller/checkout/simplecheckout.php
В строке 946 добавляем
if (isset($this->session->data['shipping_method']['description'])) {
$data['shipping_srok'] = $this->session->data['shipping_method']['description'];
} else {
$data['shipping_srok'] = '';
}
и в строке 967 добавляем
$data['shipping_srok'] = '';
Обновляем модификаторы и все должно работать.