[miniShop2 4.0.0-beta] - Разбор нововведений. Гибкая настройка статусов
В серии коротких заметок расскажу и детально покажу что нового мы сделали для Вас в новой версии miniShop2 Для MODX2
На очереди обновление связанное со статусами заказов.
После первоначального создания заказа — заказу принудительно присваивается статус Новый заказ — причем ID статуса вшит намертво в код.
Ровно та же ситуация с оплаченными заказами.
Все платежные системы после успешной оплаты выставляют ID = 2.
В miniShop2 3.0.0 появился новый статус Черновик. В некоторых случаях заказ создается с этим статусом — и тоже был вшитый в код намертво ID статуса.
В админке есть небольшая статистика по заказам. Данные выбираются по выполненным заказам. Как вы думаете был указан перечень статусов заказов, которые считаются выполненными? Конечно — тоже намертво вшитые ID
В общем подобная логика прослеживается везде по коду
В методе Order.submit()
Было
Стало
Рекомендуемое изменение для платежных модулей минишопа
Было
Рекомендуем
На очереди обновление связанное со статусами заказов.
Исходная проблема.
Если вы разработчик и достаточно плотно работали с miniShop2 — то должно быть замечали следующее:После первоначального создания заказа — заказу принудительно присваивается статус Новый заказ — причем ID статуса вшит намертво в код.
$this->ms2->changeOrderStatus($msOrder->get('id'), 1);
А если я создал новый статус, и хочу чтобы он был стартовым? А если я удалил статус с ID = 1Ровно та же ситуация с оплаченными заказами.
Все платежные системы после успешной оплаты выставляют ID = 2.
В miniShop2 3.0.0 появился новый статус Черновик. В некоторых случаях заказ создается с этим статусом — и тоже был вшитый в код намертво ID статуса.
В админке есть небольшая статистика по заказам. Данные выбираются по выполненным заказам. Как вы думаете был указан перечень статусов заказов, которые считаются выполненными? Конечно — тоже намертво вшитые ID
В общем подобная логика прослеживается везде по коду
Решение
Для решения проблемы — были созданы дополнительные системные настройки, которые позволяют более гибко управлять тем, какой статус выставлять в том, или ином случае, без необходимости лезть в код.- ms2_status_draft — ID статуса заказа Черновик, по умолчанию 5
- ms2_status_new — ID первоначального статуса заказа, по умолчанию 1
- ms2_status_paid — ID статуса оплаченного заказа, по умолчанию 2
- ms2_status_for_stat -ID статусов для статистики (через запятую), по умолчанию 2,3
В методе Order.submit()
Было
$this->ms2->changeOrderStatus($msOrder->get('id'), 1);
Стало
$status_new = $this->modx->getOption('ms2_status_new', null, 1);
$this->ms2->changeOrderStatus($msOrder->get('id'), $status_new);
Рекомендуемое изменение для платежных модулей минишопа
Было
$this->ms2->changeOrderStatus($order->get('id'), 2);
Рекомендуем
$status_paid = $this->modx->getOption('ms2_status_paid', null, 2);
$this->ms2->changeOrderStatus($order->get('id'), $status_paid );
Ну и так далее. Общая логика — ID статуса нужно забирать из системной настройки.
Поблагодарить автора
Отправить деньги