Userorders не редактирует и не отменяется заказ



  • shopkeeper3 3.2.4-pl
    userorders 1.0-pl

    Вывожу сниппет так:

                [[!getPage?
                &elementClass=`modSnippet`
                &element=`userOrders`
                &usergroup=`Розничный покупатель`
                &limit=`15`
                &statusCanceled=`5`
                &pageFirstTpl=` <li class="control"> <a [[+classes]] href="[[+href]]">Первая</a> </li> `
                &pageLastTpl=` <li class="control"> <a [[+classes]] href="[[+href]]">Последняя</a> </li> `
                ]]
    

    Форма с подробным заказом (orderOuterTpl):

    <!--noindex-->
    <nav>
            <ul class="pager no-margin-top">
                <li class="previous">
                    <a href="[[~[[*id]]]]">
                        <span class="glyphicon glyphicon-chevron-left"></span>
                        Назад
                    </a>
                </li>
               [[+action:ne=`edit`:then=`
                <li class="next">
                    <a href="[[~[[*id]]]]?ord_id=[[+order_id]]&amp;action=edit#contacts">
                        <span class="glyphicon glyphicon-pencil"></span>
                        Редактировать контактные данные
                    </a>
                </li>
                `:else=``]]
            </ul>
        </nav>
    <div class="pull-right text-right">
        <p>
            Статус:
            <span class="badge">[[+status_name]]</span>
        </p>
        <form action="[[~[[*id]]]]?ord_id=[[+order_id]]" method="post" onsubmit="return confirm('Вы уверены?');">
            <input type="hidden" name="ord_id" value="[[+order_id]]" />
            <input type="hidden" name="action" value="cancel" />
            [[+status:ne=`[[+statusCanceled]]`:then=`
            <button type="submit" class="btn btn-xs btn-danger">
                <span class="glyphicon glyphicon-remove"></span>
                Отменить заказ
            </button>
            `:else=``]]
        </form>
    </div>
    
    <p>Номер заказа: <b>[[+order_id]]</b></p>
    
    <p>Дата: <b>[[+date]]</b></p>
    
    <div class="panel panel-default">
        <div class="panel-heading">
            Состав заказа
        </div>
        <table class="table table-bordered table-hover">
            <thead>
                <tr class="active">
                    <th>Код</th>
                    <th>Наименование</th>
                    <th>Параметры</th>
                    <th>Кол-во, шт.</th>
                    <th>Цена, [[+currency]]</th>
                </tr>
            </thead>
            <tbody>
                [[+purchases]]
            </tbody>
        <tfoot>
            <tr class="cart-order">
                <td colspan="4" style="text-align: right;">
                    [[+delivery]]&nbsp;&nbsp;
                </td>
                <td>
                    <b>[[+delivery_price:num_format]]</b>
                </td>
            </tr>
            <tr class="cart-order">
                <td colspan="4" style="text-align: right;">
                    <b>Итого:</b>
                </td>
                <td>
                    <b>[[+price:num_format]] [[+currency]]</b>
                </td>
            </tr>
        </tfoot>
    </table>
    </div>
    
    
    <a name="contacts"></a>
    <form action="[[~[[*id]]]]?ord_id=[[+order_id]]" method="post" >
        <input type="hidden" name="ord_id" value="[[+order_id]]" />
        <input type="hidden" name="action" value="update" />
        
        <div class="panel panel-default">
            <div class="panel-heading">
                Контактные данные
            </div>
            <table class="table table-bordered table-hover">
                <colgroup>
                    <col width="50%" span="2">
                </colgroup>
                <tbody>
                    [[+contacts]]
                </tbody>
            </table>
        </div>
        [[+action:is=`edit`:then=`
        <div class="pull-right">
            <button type="submit" class="btn btn-primary rounded">
                <span class="glyphicon glyphicon-ok"></span>
                Сохранить
            </button>
            <button type="button" class="btn btn-default rounded" onclick="window.location.href='[[~[[*id]]]]?ord_id=[[+order_id]]'">Отмена</button>
        </div>
        `:else=``]]
        
        
        
    </form>
    
    <!--/noindex-->
    

    Редактирование данных открывается, но не сохраняет новые данные.

    По поводу отмены: statusCanceled 5 строка (когда с админки отменяешь - исчезает);

    Куда рыть подскажите пожалуйста, голова уже не робит ((


  • Администраторы

    Редактирование данных открывается, но не сохраняет новые данные.

    У меня идей нет. Надо смотреть. http://forum.modx-shopkeeper.ru/topic/15/рекомендации-по-оформлению-темы-с-вопросом/2 На таких условиях могу посмотреть.

    По поводу отмены: statusCanceled 5 строка (когда с админки отменяешь - исчезает);

    Не понял в чём конкретно проблема.



  • @Andchir

    Получается не работает кнопка "Отмена заказа" в кабинете пользователя (в подробном описании заказа):

    <form action="[[~[[*id]]]]?ord_id=[[+order_id]]" method="post" onsubmit="return confirm('Вы уверены?');">
            <input type="hidden" name="ord_id" value="[[+order_id]]" />
            <input type="hidden" name="action" value="cancel" />
            [[+status:ne=`[[+statusCanceled]]`:then=`
            <button type="submit" class="btn btn-xs btn-danger">
                <span class="glyphicon glyphicon-remove"></span>
                Отменить заказ
            </button>
            `:else=``]]
    </form>-->
    

    При нажатии на кнопку просто обновляется страница, может что упустил.. (


  • Администраторы

    При нажатии на кнопку просто обновляется страница

    Документацию читали? Параметр "statusCanceled" сниппета правильно указали?

    </form>-->
    

    Зачем этот хвост в конце?



  • @Andchir не отменяет заказ, поэтому комментирую вызов)) случайно не удалил

    ранее писал, statusCanceled стоит 5, как при вызове, так и в сниппете. Проверил в базе, id стоит 5 - все по идее верно. Поэтому и думаю, может я в вызову опечатку какую сделал.
    alt text



  • @Andchir причем когда заходишь в заказ со статусо ОТМЕНЕН - кнопка пропадает. Значит вызов правильный. А почему не отменяет с другими статусами не знаю.


  • Администраторы

    Причин может быть очень много. Может у вас получается форма внутри другой формы и т.п. Покажите полный шаблон страницы.



  • @Andchir

    Личный кабинет пользователя:

    <section>
    	<div class="container">
    		<div class="row">
    			<div class="col-sm-12 padding-right" style="min-height:400px">
    			    
                    [[!Profile? &prefix=`usr.`]]
                    
                    <div class="panel panel-primary">
                        <div class="panel-heading" style="height: 40px;">
                            <div class="col-xs-6" style="margin-bottom:8px;">
                                <i class="glyphicon glyphicon-edit"></i> Личный кабинет пользователя <b>[[+usr.email]]</b> 
                            </div>
                            <div class="col-xs-3" style="margin-bottom:8px;">
                                <i class="glyphicon glyphicon-cog"></i> <a style="color: #fff;" href="[[~18406]]" title="Редактирование данных">Редактирование данных</a>
                            </div>
                            <div class="col-xs-3" style="margin-bottom:8px;">
                                <i class="glyphicon glyphicon-pencil"></i> <a style="color: #fff;" href="[[~18405]]" title="Изменение пароля">Изменение пароля</a>
                            </div>
                        </div>
                    
                        <div class="panel-body col-sm-6">
                            <p>Имя: [[+usr.fullname]]</p>
                            <p>Телефон: [[+usr.phone]]</p>
                            <p>Адрес: [[+usr.address]]</p>
                            <p>[[!giftCards?&tpl=`giftCards_form_mini_reg_lk`]]</p>
                            <table style="text-align: center;    margin-top: -21px;">
                                <tbody>
                                    <tr>
                                        <td style="border-bottom: none;" >
                    				        <div class="mainmenu pull-left config1" style="padding: 0;">
                    						    <ul class="nav navbar-nav collapse navbar-collapse">
                    							    <li class="dropdown">
                    								    <a href="[[~20113]]"><img src="images/home/vopross.png" style="position: absolute; margin: -19px 0 0 -37px;"/></a>
                        								<ul role="menu" class="sub-menu" style="position: absolute; margin: -71px 0px 0px 2px; width: 400px;">
                        									<li style="color:#fff">Постоянная скидка напрямую зависит от суммы заказов за прошедший месяц. Загляни в скидочную политику предприятия<br><b>раздел «Скидки»</b></li>
                        								</ul>
                    							    </li>
                    						    </ul>
                    					    </div>
                    				    </td>
                                    </tr>   
                                </tbody>
                            </table>
                        </div>
                        <div style="position: relative; float: right;">
                            <div class="heading">
                                <h3>Подарочный сертификат</h3>
                                <table>
                                    <tbody>
                                        <tr>
                                            <td>
                                               <div class="mainmenu pull-left config1" style="padding: 0;">
                            						<ul class="nav navbar-nav collapse navbar-collapse">
                            							<li class="dropdown">
                            								<a href="https://vk.com/sinlin66" onclick="yaCounter28980395.reachGoal('vk'); return true;"><img src="images/home/vopross.png" style="position: absolute; margin: -38px 0 0 -37px;"/></a>
                                                            <ul role="menu" class="sub-menu" style="position: absolute; margin: -78px 0px 0px -390px; width: 348px;">
                            									<li style="color:#fff">Коды сертификатов постоянно обновляются в группе «VK», а так же могут быть подарены при получении заказа.</li>
                            								</ul>
                            							</li>
                            						</ul>
                            					</div>
                            				</td>
                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                    		<div class="total_area">
                    			<table cellpadding="3">
                                    <tr>
                                        <td>
                                            [[!giftCards?
                                            &tpl=`giftCards_form`
                                            &max_attempts=`10`
                                            ]]
                                        </td>
                                    </tr>
                                </table>
                    		</div>
                        </div>
                        <div class="col-sm-12">
                            [[!getPage?
                            &elementClass=`modSnippet`
                            &element=`userOrders`
                            &usergroup=`Розничный покупатель`
                            &limit=`15`
                            &statusCanceled=`5`
                            &pageFirstTpl=` <li class="control"> <a [[+classes]] href="[[+href]]">Первая</a> </li> `
                            &pageLastTpl=` <li class="control"> <a [[+classes]] href="[[+href]]">Последняя</a> </li> `
                            ]]
                            [[!getPage?
                            &elementClass=`modSnippet`
                            &element=`userOrders`
                            &usergroup=`Розничный покупатель (скидка 2%)`
                            &limit=`15`
                            &statusCanceled=`5`
                            &pageFirstTpl=` <li class="control"> <a [[+classes]] href="[[+href]]">Первая</a> </li> `
                            &pageLastTpl=` <li class="control"> <a [[+classes]] href="[[+href]]">Последняя</a> </li> `
                            ]]
                            [[!getPage?
                            &elementClass=`modSnippet`
                            &element=`userOrders`
                            &usergroup=`Розничный покупатель (скидка 3%)`
                            &limit=`15`
                            &statusCanceled=`5`
                            &pageFirstTpl=` <li class="control"> <a [[+classes]] href="[[+href]]">Первая</a> </li> `
                            &pageLastTpl=` <li class="control"> <a [[+classes]] href="[[+href]]">Последняя</a> </li> `
                            ]]
                        </div>   
                    </div>
                </div>
            </div>
        </div>
    </section>
    

    Вызываю Userorders через getPage (3 штуки - 3 группы пользователей с разными скидками)
    Вызов Userorders:

    <!--noindex-->
    <nav>
        <ul class="pager no-margin-top">
            <li class="previous">
                <a href="[[~[[*id]]]]"><span class="glyphicon glyphicon-chevron-left"></span>Назад</a>
            </li>
           <!-- [[+action:ne=`edit`:then=`
            <li class="next">
                <a href="[[~[[*id]]]]?ord_id=[[+order_id]]&amp;action=edit#contacts">
                    <span class="glyphicon glyphicon-pencil"></span>
                    Редактировать контактные данные
                </a>
            </li>
            `:else=``]]-->
        </ul>
    </nav>
    <div class="pull-right text-right">
        <p>Статус: <span class="badge">[[+status_name]]</span></p>
        <form action="[[~[[*id]]]]?ord_id=[[+order_id]]" method="post">
            <input type="hidden" name="ord_id" value="[[+order_id]]" />
            <input type="hidden" name="action" value="cancel" />
            [[+status:ne=`[[+statusCanceled]]`:then=`
            <button type="submit" class="btn btn-xs btn-danger">
                <span class="glyphicon glyphicon-remove"></span>
                Отменить заказ
            </button>
            `:else=``]]
        </form>
    </div>
    
    <p>Номер заказа: <b>[[+order_id]]</b></p>
    <p>Дата: <b>[[+date]]</b></p>
    <div class="panel panel-default">
        <div class="panel-heading">
            Состав заказа
        </div>
        <table class="table table-bordered table-hover">
                <thead>
                    <tr class="active">
                        <th>Код</th>
                        <th>Наименование</th>
                        <th>Параметры</th>
                        <th>Кол-во, шт.</th>
                        <th>Цена, [[+currency]]</th>
                    </tr>
                </thead>
            <tbody>
                [[+purchases]]
            </tbody>
            <tfoot>
                <tr class="cart-order">
                    <td colspan="4" style="text-align: right;">
                        [[+delivery]]&nbsp;&nbsp;
                    </td>
                    <td>
                        <b>[[+delivery_price:num_format]]</b>
                    </td>
                </tr>
                <tr class="cart-order">
                    <td colspan="4" style="text-align: right;">
                        <b>Итого:</b>
                    </td>
                    <td>
                        <b>[[+price:num_format]] [[+currency]]</b>
                    </td>
                </tr>
            </tfoot>
        </table>
    </div>
    
    <a name="contacts"></a>
    <form action="[[~[[*id]]]]?ord_id=[[+order_id]]" method="post" >
        <input type="hidden" name="ord_id" value="[[+order_id]]" />
        <input type="hidden" name="action" value="update" />
        <div class="panel panel-default">
            <div class="panel-heading">
                Контактные данные
            </div>
            <table class="table table-bordered table-hover">
                <colgroup>
                    <col width="50%" span="2">
                </colgroup>
                <tbody>
                    [[+contacts]]
                </tbody>
            </table>
        </div>
        [[+action:is=`edit`:then=`
        <div class="pull-right">
            <button type="submit" class="btn btn-primary rounded">
                <span class="glyphicon glyphicon-ok"></span>
                Сохранить
            </button>
            <button type="button" class="btn btn-default rounded" onclick="window.location.href='[[~[[*id]]]]?ord_id=[[+order_id]]'">Отмена</button>
        </div>
        `:else=``]]
    </form>
    <!--/noindex-->
    

    Тут пробовал вкл/выкл JQuery - ничего не произошло



  • последний вызов Userorders это вызов подробностей заказа, в которых как раз кнопка отмены заказа (orderOuterTpl)



  • из админки в управлении заказами все меняется, в подробностях заказа пользователь не может менять
    думал может дело в правах доступа - испробовал все возможные варианты web и mgr - не помогло вообще
    может есть где рабочий вариант? или код, к примеру.. я бы сверил сам уже


  • Администраторы

    3 штуки - 3 группы пользователей с разными скидками

    Это плохая идея. Сделайте одну общую группу для покупателей. А дополнительные уже будут ваши "Розничный покупатель (скидка 3%)" и т.п. Не нужно делать 3 вызова сниппета.



  • @Andchir тогда заказы других групп не показываются, а в одном вызове getPage нельзя прописать несколько usergroup



  • Ладно, тогда без редактирования/отмены останусь. Как прижмет - обращусь к программисту

    Если не забуду, то ответ на проблему сюда напишу

    @Andchir спасибо за уделенное время


  • Администраторы

    тогда заказы других групп не показываются

    Почему? Надо всем пользователям дать одну общую группу. Старым пользователям её добавить. Для новых добавить чтобы они при регистрации имели эту группу. Ваша проблема именно в этом.



  • @Andchir стоит компонент giftcads, который устанавливает скидку для каждой группы пользователей. У меня, к примеру: группа 1 - 1%; группа 2 - 2%; группа 3 - 3%. Я так понял несовместимые компоненты получились)) если выбирать из них то пусть лучше так, получается у каждой группы пользователей своя скидка.
    Спасибо еще раз большое!


  • Администраторы

    стоит компонент giftcads, который устанавливает скидку для каждой группы пользователей. У меня, к примеру: группа 1 - 1%; группа 2 - 2%; группа 3 - 3%. Я так понял несовместимые компоненты получились))

    У пользователя может быть несколько групп. Всё совместимое. Просто включайте голову.



  • @Andchir вот я конь )) точно!!! извините за некомпетентность

    но, к сожалению, это не решило проблемы с редактированием контактов/отменой заказа ))) но с этим я уже смирился - по ходу где то что то упустил, а сильно копаться не хочу - работает все остальное - это главное )



  • Точно такая же проблема у меня на двух сайтах. Всё делаю стандартно, вызов:

        [[!userOrders?
            &usergroup=`clients`
            &statusCanceled=`5`
        ]] 
    

    Но не отменяется заказ и не редактируются контактные данные. Потом посмотрел в код сниппета userOrders и код класса из файла userorders.class.php. Там есть метод request_update(), который отвечает за отмену заказа, но он нигде в коде не используется, т.е. получается, что эта возможность не включена в сниппет. Также дело обстоит и с обновлением контактных данных. Добавил в сниппет строчку, и отмена заказов заработала:

    //Order page
    if( $order_id ){
        
        if($_POST['action']=='cancel') $userOrders->request_cancel();        // добавлено
    
        $output .= $userOrders->printOrder( $order_id );
        
    }
    //List orders
    else{
        
        $output .= $userOrders->printList( $limit, $offset );
        
    }```
    
    Просьба автору включить возможность отмены и редактирования заказов.


  • if( $order_id ){
        
        if($_POST['action']=='cancel') $userOrders->request_cancel();          // добавлено
        if($_POST['action']=='update') $userOrders->request_update();        // добавлено
        
        $output .= $userOrders->printOrder( $order_id );
        
    }
    

    Добавил ещё одну строчку и редактирование заказа заработало тоже.


  • Администраторы

    Перестало работать после изменений в последнем Шопкипере, т.к. UserOrders использует класс Shopkeeper.

    Надо в коде "userorders.class.php" строку

    parent::__construct($modx, $config);
    

    заменить на

    parent::__construct($modx, $config, true);
    


Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.