Как в плагине поменять статус заказа 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);            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.