Указание причины удаление заказа

Добрый день, господа!

Было бы не плохо при удалении любого заказа указывать причину его удаления, выбирая из пунктов, а результаты складывать в отчеты. По сути такое уже было реализовано для плагина Яндекс.Маркет для Заказ на Маркете.

Это позволило бы анализировать причины не выполнения заказов и противодействовать этому. Есть идеи как это сделать?

3 ответа

  • 1
    Николай Webasyst 1 декабря 2016 10:25 #

    Если проблема до сих пор не решена — вы можете разместить описание своего задания в разделе «Поиск проектов и экспертов». Вам также может быть полезна документация разработчика Webasyst. Для получения расширенной платной помощи воспользуйтесь услугами наших партнёров.

    Планы развития наших программных продуктов формируются в зависимости от насущных потребностей пользователей. Предлагаем вам опубликовать свои пожелания и предложения в разделе «Помощь» на нашем сайте. При добавлении пожелания выберите вариант «Предложить идею».

  • 1
    В /wa-apps/shop/lib/workflow/templates создаем файл DeleteAction.html с примерно следующим содержанием
    <form id="wf-delete-form" action="?module=workflow&action=perform" method="post">
        <input type="hidden" name="id" value="{$order_id}">
        <input type="hidden" name="action_id" value="{$action_id}">
        Причина: 
        <select name="prichina">
    	<option value="причина1">Причина 1</option>
    	<option value="причина2">Причина 2</option>
            ...
        </select>
    	
        <input type="submit" value="[`Save`]"> [`or`] <a class="cancel inline-link" href="#"><b><i>[`cancel`]</i></b></a>
    </form>
    
    <script type="text/javascript">
        // cancel link
        $('a.cancel').click(function() {
            $('#workflow-content').empty().hide();
            $('.workflow-actions').show();
            return false;
        });
    
        $("#wf-delete-form").submit(function () {
            var f = $(this);
            $.post(f.attr('action'), f.serialize(), function () {
                $.order.reload();
            }, "json");
            return false;
        });
    </script>

    В wa-apps/shop/lib/workflow редактируем файл shopWorkflowDeleteAction.class.php

    ДОБОАВЛЯЕМ метод

    public function getDefaultOptions()
        {
            $options = parent::getDefaultOptions();
            $options['html'] = true;
            return $options;
        }

    РЕДАКТИРУЕМ метод execute. БЫЛО

    public function execute($order_id = null)
        {
            $om = new shopOrderModel();
            $order = $om->getById($order_id);
            shopAffiliate::refundDiscount($order);
            if ($order['paid_year']) {
                shopAffiliate::cancelBonus($order);
            }
            return true;
        }

    СТАЛО

    public function execute($order_id = null)
        {	
    
            $om = new shopOrderModel();
            $order = $om->getById($order_id);
            shopAffiliate::refundDiscount($order);
            if ($order['paid_year']) {
                shopAffiliate::cancelBonus($order);
            }
    
    	if ($prichina = waRequest::post('prichina')) {
    	    return array(
                    'text' => 'Причина: '.$prichina,
                    'params' => array(
                        'delete_prichina' => $prichina
                    ),
                    'update' => array(
                        'params' => array(
                            'delete_prichina' => $prichina
                        )
                    )
                );
    	} else {
    	    return true;
    	}        
        }

    Теперь в params заказов будет писаться (и изменяться) новый параметр delete_prichina. Ну а как его встроить в отчеты - это уже другая история =)

  • 1

    `delete_prichina` мувитон, переводите полностью на английский.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите