Pascha Опубликовано 13 октября, 2022 Поделиться Опубликовано 13 октября, 2022 В базовом наборе в системе OpenCart есть некоторый набор статусов заказа. В зависимости от конкретного этапа выполнения заказа, он может принимать один из этих статусов. Просмотреть и настроить статусы заказов вы можете в администраторской части сайта. Просмотреть статусы заказов можно по такому пути: System > Localisation > Order Statuses Система > Локализация > Статусы заказа В моём примере используется OpenCart версии 2.3, в других версиях пути могут отличаться, поэтому это стоит так же учитывать. У самих товаров статусы так же выставляются в администраторской части сайта, при просмотре и редактировании полей заказа. Не всегда бывает удобно менять статусы заказов в ручном режиме. Часто бывает необходимость смены статуса заказа программно, по какому-либо событию. В данной заметке мы рассмотрим простой пример смены статуса заказа из контроллера. class ControllerCheckoutPayengine extends Controller { public function index() { // подключаем модель checkout/order $this->load->model('checkout/order'); // меняем статус заказа на Processing (т.е. статус с ID == 2) $this->model_checkout_order->addOrderHistory($order_id, 2); } } Название метода, и самого класса контролера в вашем случае может отличаться, всё что нужно знать для смены статуса, это ID заказа, а также ID нужного статуса. Предварительно следует подключить класс модели checkout/order, после чего посредством метода класса addOrderHistory() задать новый статус заказа. Метод addOrderHistory() в нашем примере принимает два основных параметра $order_id – номер заказа и $order_status_id – ID статуса заказа. Скрипт класса расположен по такому пути: \catalog\model\checkout\order.php Рассмотрев содержимое файла, можно заметить, что есть дополнительные параметры при обращении к методу addOrderHistory(). Полный список аргументов выглядит таким образом: addOrderHistory($order_id, $order_status_id, $comment = '', $notify = false, $override = false) Значение этих параметров: $oder_id – ID заказа; $order_status_id – ID статуса заказа; $comment – текст почтового сообщения; $notify – по умолчанию false, позволяет отправлять пользователю уведомления о смене статуса; $override – по ум. false, флаг защиты от переопределения статуса (насколько я правильно понял). Таким образом используя данный метод в контролерах и моделях можно задавать нужные статусы для заказов. Довольно часто это бывает необходимо при реализации интеграции с платёжными системами. В тот момент, когда клиент производит оплату заказа онлайн, и сервис возвращает данные об успешной транзакции. Кстати в сети была найдена интересная особенность доработки параметра $comment метода addOrderHistory(). По умолчанию данные из этой переменной принимаются и отправляются в виде plain-text. Если мы захотим отправить письмо в виде HTML текст, то соответственно письмо уйдет как листинг HTML. Однако преобразовав спец символы в HTML-сущности, мы можем реализовать отправку письма в виде HTML. Для этого достаточно в самом начале метода добавить строку: $comment = html_entity_decode($comment); После этого в самом письме мы можем наблюдать отображение письма в HTML. Этот момент не совсем относится к теме данного поста, но всё же я решил его затронуть, т.к. речь идет об использовании параметров метода addOrderHistory(). 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.