Ошибка при смене статуса заказа
        Появляется ошибка ms2_err_status_fixed «Установлен фиксирующий статус. Вы не можете сменить его на более ранний.»
При повторном клике — Невозможно оформить пустой заказ.
Но статус заказа меняется.
Плагин на событие msOnCreateOrder — создание заказа
Версия minishop 4.1.5-pl
В файле /core/components/minishop2/model/minishop2/minishop2.class.php
Впечатление, что после смены статуса на Оплачен, заказ получает статус Новый.
Смена события на msOnSaveOrder — сохранение заказа — приводит к такому же результату.
     
    
    
                                                                                
            При повторном клике — Невозможно оформить пустой заказ.
Плагин на событие msOnCreateOrder — создание заказа
<?php
switch ($modx->event->name) {
    case 'msOnCreateOrder':
	    if($msOrder->get('payment') == 1) {
	        $miniShop2 = $modx->getService('miniShop2');
	        //смена статуса на Оплачен
	        $status_paid = $modx->getOption('ms2_status_paid', null, 2);
	        $miniShop2->changeOrderStatus($msOrder->get('id'), $status_paid);
            }
	break;
}В файле msmyorderhandler.class.php обработчике смена статуса заказа тоже висит на событии msOnCreateOrder.Версия minishop 4.1.5-pl
В файле /core/components/minishop2/model/minishop2/minishop2.class.php
if ($old_status->get('fixed')) {
                if ($status->get('rank') <= $old_status->get('rank')) {
                    $error = 'ms2_err_status_fixed';
                    return $this->modx->lexicon($error);
                }
            }Если снимаю статус фиксирующего заказа у Оплачен, то приходит просто Новый.Впечатление, что после смены статуса на Оплачен, заказ получает статус Новый.
Смена события на msOnSaveOrder — сохранение заказа — приводит к такому же результату.
Комментарии: 7
                В какой момент появляется ошибка?            
                    
                Обе ошибки — при нажатии на Submit. Сначала «Установлен фиксирующий статус. Вы не можете сменить его на более ранний.», затем Невозможно оформить пустой заказ.            
                    
                'msOnCreateOrder' это событие срабатывает, когда заказ сохранён в базе, потом вы ему ставите статус Оплачен, а потом обработчик заказа пытается установить ему статус Новый, а по умолчанию этого сделать нельзя, вот вы и получаете ошибку. Рекомендую рассказать, какую задачу вы пытаетесь решить путём создание своего класса-обработчика и плагина.            
                    
                Заказы с нулевой ценой (бесплатные) должны получать статус Оплачено.
Еще по идее есть задача не подключать к таким заказам платежную систему.
Это пока решено в виде способа оплаты «Без оплаты». Может, есть более изящный вариант?
                    Еще по идее есть задача не подключать к таким заказам платежную систему.
Это пока решено в виде способа оплаты «Без оплаты». Может, есть более изящный вариант?
                Для смены статуса используйте событие msOnChangeOrderStatus. 
А для заказов с нулевой ценой лучше написать плагин на событие msOnCreateOrder, в котором вы будете проверять стоимость заказа и, если она равна 0, то устанавливать способ оплаты «Без оплаты», чтобы избавить пользователя от этой задачи.
                    А для заказов с нулевой ценой лучше написать плагин на событие msOnCreateOrder, в котором вы будете проверять стоимость заказа и, если она равна 0, то устанавливать способ оплаты «Без оплаты», чтобы избавить пользователя от этой задачи.
                Спасибо. А в плагине можно поставить способ оплаты «Без оплаты»? Или это через js callback делать надо?            
                    
                А вы внимательно предыдущее сообщение перечитайте.            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.