Opencart 2.1 как добавить срок доставки заказа в письмо покупателю

Если у вас есть необходимость указать в автоматическом письме покупателю точный срок доставки заказа, как того требует служба качества Яндекс-Маркета, то это статья, возможно, поможет вам.

В этой статье описан способ добавления в письмо покупателю срока доставки Почтой России. На сайте установлены модуль 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'] = '';

 

Обновляем модификаторы и все должно работать.