[Помогите] Фильтрация последних 10 заказов в админке

Тема в разделе "OpenCart", создана пользователем mr.zefer, 18 мар 2017.

Метки:
  1. mr.zefer

    mr.zefer

    Регистрация:
    17 ноя 2015
    Сообщения:
    33
    Симпатии:
    39
    Здравствуйте. Друзья, подскажите, как реализовать фильтрацию в админке Opencart 1.5 в списке "последние 10 заказов". Нужно вывести не все заказы, а только заказы со статусами "в ожидании"(Id 2) и "оплачено"(id 15).

    Догадываюсь, что за это отвечает файл /admin/model/sale/order.php
     
  2. settr

    settr

    Регистрация:
    12 окт 2016
    Сообщения:
    67
    Симпатии:
    54
    В файле admin/model/sale/order.php ( в методе getOrders ) найдите
    PHP:
    if (isset($data['filter_order_status_id']) && !is_null($data['filter_order_status_id'])) {
               
    $sql .= " WHERE o.order_status_id = '" . (int)$data['filter_order_status_id'] . "'";
           } else {
               
    $sql .= " WHERE o.order_status_id > '0'";
           }
    Замените на
    PHP:
    if (isset($data['filter_order_status_id']) && !is_null($data['filter_order_status_id'])) {
                
    $sql .= " WHERE ";
                if (
    is_array($data['filter_order_status_id'])) {
                    
    $data['filter_order_status_id'] = array_values($data['filter_order_status_id']);
                    foreach (
    $data['filter_order_status_id'] as $key=>$status_id) {
                        
    $or = ( $key == count($data['filter_order_status_id'])-)?'':' or ';
                        
    $sql .= " o.order_status_id = '" . (int)$status_id "'" $or;
                    }
                } else {
                    
    $sql .= " o.order_status_id = '" . (int)$data['filter_order_status_id'] . "'";
                }
            } else {
                
    $sql .= " WHERE o.order_status_id > '0'";
            }
    В файле admin/controller/common/home.php
    PHP:
    $data = array(
                
    'sort'  => 'o.date_added',
                
    'order' => 'DESC',
                
    'start' => 0,
                
    'limit' => 10
            
    );
    Замените на
    PHP:
    $data = array(
                
    'sort'  => 'o.date_added',
                
    'order' => 'DESC',
                
    'start' => 0,
                
    'limit' => 10,
                
    'filter_order_status_id' => array('2','5')
            );
     
    skiv14 и mr.zefer нравится это.
  3. mr.zefer

    mr.zefer

    Регистрация:
    17 ноя 2015
    Сообщения:
    33
    Симпатии:
    39
    Друзья подскажите такое же решение для 2.3. Спасибо
     
  4. settr

    settr

    Регистрация:
    12 окт 2016
    Сообщения:
    67
    Симпатии:
    54
    для версии 2.x это уже реализовано
    Зайдите в меню Система -> Настройки, вкладка "Опции", измените параметр "Статус завершенного заказа"
     
  5. Master2KAZ

    Master2KAZ

    Регистрация:
    25 окт 2014
    Сообщения:
    183
    Симпатии:
    72
    В файле admin\controller\extension\dashboard\recent.php в функции dashboard, там где
    PHP:
            $filter_data = array(
                
    'sort'  => 'o.date_added',
                
    'order' => 'DESC',
                
    'start' => 0,
                
    'limit' => 5
            
    );
    добавьте
    PHP:
            $filter_data = array(
                
    'filter_order_status' => '2,15'//id статусов через запятую
                
    'sort'  => 'o.date_added',
                
    'order' => 'DESC',
                
    'start' => 0,
                
    'limit' => 5
            
    );
     
    mr.zefer нравится это.