Как в плагине поменять статус заказа minishop2?
Собственно вопрос в заголовке
Комментарии: 9
Собственно, ответ в документации.
Честно, в документации не нашел. В модулях оплаты нашел следующее:
$miniShop2 = $this->modx->getService('miniShop2');
$miniShop2->changeOrderStatus($order->get('id'), 2);
переделал под свои нужды в:$miniShop2 = $modx->getService('miniShop2');
$miniShop2->changeOrderStatus($id, 3);
Вставил код в плагин, в итоге статус не меняется, но письмо о смене статуса юзеру отправляется. Буду рад любой помощи)
попробуйте так
$miniShop2->changeOrderStatus($order->get('id'), 2);
echo $modx->toJSON(array(
'success' => true
'message' => '',
'data' => array(),
));
exit;
Работает! Спасибо огромное!
Круто, реально работает, а может подскажешь какой-то другой подход, так как я меняю статус при создании заказа и скрипт по сути дальше не работает после изменения статуса, получается что пользователь остается на странице заказа, а заказ уже создан и статус у него изменился…
Читал доку но через массив $order изменить не удалось в событии «msOnCreateOrder»
Пробовал таким образом:
Этот код не работает.
Пробовал таким образом:
Этот код не работает.
<?php
switch ($modx->event->name) {
case 'msOnCreateOrder':
$order = $modx->getOption('msOrder', $scriptProperties);
if (!is_object($order)) { return; }
$order->set("status",5);
$order->save();
break;
}
Этот код работает, но пользователь остается на странице оформления заказа, при этом заказ создается, статус меняется. Естественно это из-аз exit(), но если его убрать, то статус уже не меняется, вот такие пироги. <?php
switch ($modx->event->name) {
case 'msOnCreateOrder':
$order = $modx->getOption('msOrder', $scriptProperties);
if (!is_object($order)) { return; }
$order_id = $order->get('id');
$modx->log(modX::LOG_LEVEL_ERROR, $msOrder->get('id'));
$miniShop2 = $modx->getService('miniShop2');
$miniShop2->changeOrderStatus($order_id, 5);
echo $modx->toJSON(array(
'success' => true,
'message' => '',
'data' => array(),
));
exit(true);
break;
}
В общем и целом решение нашел, странно что в документации написано объект $order, меня честно говоря это ввело в заблуждение.
Оставлю это тут, вдруг кому-то пригодится!
Как оказалось достаточно такой конструкции:
Оставлю это тут, вдруг кому-то пригодится!
Как оказалось достаточно такой конструкции:
<?php
switch ($modx->event->name) {
case 'msOnCreateOrder':
if($newStatus == true)
{
$msOrder->set("status","5");
$msOrder->save();
}
break;
}
Делаю так же, но в админке все равно заказ создается со статусом «Новый» со всеми вытекающими последствиями, в виде отправляющихся писем. Мне же нужно принудительно установить статус, при котором письма не будут отправляться.
попробуйте убрать
exit(true);
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.