Перейти к содержанию
dm82

[Решено] двойная сортировка в заказах админ

Рекомендуемые сообщения

Не могу въехать, почему не работает двойная сортировка в админ панели, в каталоге, в товарах такой принцип работает, а тут нет, пожалуйста подскажите, что не так делаю.

 

Мне надо, чтобы в заказах была двойная сортировка - сначала по статусу, потом по дате изменения. Статус у меня уже стоит по умолчанию, потому нужно добавить только по дате изменения, потому делаю следующее:

 

в

\admin\model\sale\order.php 
 
		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			$sql .= " ORDER BY " . $data['sort'];
		} else {
			$sql .= " ORDER BY o.order_id";
		}

меняю на

		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			$sql .= " ORDER BY " . $data['sort'] . ", o.date_modified";
		} else {
			$sql .= " ORDER BY o.order_id";
		}

после этого сортируется только по дате.. Почему так, что делаю не так??

 

Спасибо за помощь!!!

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть после Ваших изменений, Вы выбираете например Статус: Ожидание и Дату, а у Вас выводятся все заказы(не взирая на выбранный статус) за указанную дату? Я правильно понял?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нет. речь не про фильтр, а про сортировку (по умолчанию и двойную).

 

заказы сортируются по статусу у меня только, а надо, чтобы было сначала по статусу, а потом по дате.

По какому принципу они выводятся вообще понять не могу - ни по дате ни по номеру заказа... хрен поймешь.  

 

Т.е. у меня большой список завершенных заказов, но они все перемешаны непонятным образом, хотелось таким образом их упорядочить сортировкой по дате.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты


if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {

            $sql .= " ORDER BY o.date_modified, " . $data['sort'];

        } else {

            $sql .= " ORDER BY o.order_id";

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо, но так тоже пробовал - результат тот же - сортируется только по дате, какую сортировку не выбираю - в результате только по дате :(

 

а у вас сортируется?? (может тогда это в моей версии косяк)

Изменено пользователем dm82

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По статусу так сортировать не будет, Вы бы var_dump запроса сделали который идет к БД, как сейчас написано сортирует по order_id и по date_modified, надо дописать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сорри, в этом не спец.. как правильно надо?

это сложно сделать? можете помочь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В модели перед return сделайте var_dump($sql), затем обновите страницу с заказами и Вы на экране увидите запрос, который идет к БД при открытии страницы заказов...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо, но ничего не понял..

и эти запросы при каждом открытии страницы заказов будут?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я Вам это сказал, чтобы Вы увидели, что по умолчанию по статусу вообще сортировка не происходит, только по id заказа и в нашем случае теперь еще и по дате изменения, чтобы сортировалось еще и по статусу необходимо поправить сам запрос

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня по умолчанию как раз только по статусу и происходит..

сам 

$data['sort']

выставлен по статусу в контроллере

 

\admin\controller\sale\order.php

if (isset($this->request->get['sort'])) {
			$sort = $this->request->get['sort'];
		} else {
			$sort = 'status';
		}

и как вы поняли к этой, по умолчанию, сортировке надо прикрутить еще по дате. любым возможным способом,

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и как поправить этот запрос? это сложно? или двумя строчками решается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы можете в моделе в строке 526 разместить var_dump($sql); и написать выведенный результат сюда...?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не уверен, что в 526й... у меня там стоит

 

public function getOrderVouchers($order_id) {
 
вот мой файл:
 
 

order.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У Вас получается после 495й поставьте var_dump($sql);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в верху страницы заказов, над шапкой вылезло такое:

 

string(350) "SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, o.telephone, (SELECT os.name FROM order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '1') AS status, o.total, o.currency_code, o.currency_value, o.date_added, o.date_modified FROM `order` o WHERE o.order_status_id > '0' ORDER BY status ASC LIMIT 0,20"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Убирайте наш var_dump и попробуйте так...

$sql .= " ORDER BY " . $data['sort'] . ", date_format(o.date_modified, '%Y-%m-%d')";

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

все равно только по дате ;(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

РЕШЕНО!!!

 

спасибо за решение, devrvk

 

простое и красивое обуздание sql с ее бардаком вывода данных в заказах:

 
\admin\model\sale\order.php 
 

после

		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			$sql .= " ORDER BY " . $data['sort'];
		} else {
			$sql .= " ORDER BY o.order_id";
		}

		if (isset($data['order']) && ($data['order'] == 'DESC')) {
			$sql .= " DESC";
		} else {
			$sql .= " ASC";
		}

добавить

		$sql .= ", date_format(o.date_modified, '%Y-%m-%d') DESC";

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

v.2

 

еще лучше просто добавить

		$sql .= ", o.date_modified DESC";

тогда будет сортировать не только по дням, но и по времени (в секундах)

(спасибо devrvk)

 

А вообще, думаю, как минимум это:

		$sql .= ", o.order_id DESC";

т.е. сортировка по номеру заказа, в случае одинаковых имен, статусов и т.п.

должно быть в стандартной сборке.

Криейторам на заметку)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От ibond
      350.00 руб
      Скачать/Купить дополнение


      Фильтр товаров в админке по производителю, категории, артикулу, изображению и ID
      Дополнение добавляет возможность фильтровать товары в административной панели Opencart по производителям, категориям, артикулу (Sku), изображениям и ID товара. Добавляет колонки ID товара, Артикул, Производители и  Категории в списке товаров и позволяет включать/отключать для просмотра колонки по выбору. Добавлена возможность выбора для фильтрации нескольких производителей и/или категорий.
       
      Работает (тестировался): OpenCart 3.0.0.0, 3.0.1.1, 3.0.1.2, 3.0.2.0
       
      Установка:
      Загрузить файл в установках расширений, перейти в модификаторы и обновить.
       
      Как обновить, тут:
       
      Демонстрация (admin):
      Логин: demo / Пароль: demo
       
      Что нового в версии 3.1.0:
      Добавлена возможность выбора для фильтрации нескольких производителей и/или категорий. Добавлена колонка производители в список товаров. Добавлена сортировка по производителю.  
      Что нового в версии 3.0.1:
      Исправлены мелкие ошибки. Добавил ibond Добавлено 16.10.2018 Категория Фильтры Системные требования Сайт разработчика Старая цена 400 Метод активации Без активации Ioncube Loader Нет OpenCart 3.0 ocStore 3.0 OpenCart.Pro, ocShop Не проверялось  
    • От ibond
      Дополнение добавляет возможность фильтровать товары в административной панели Opencart по производителям, категориям, артикулу (Sku), изображениям и ID товара. Добавляет колонки ID товара, Артикул, Производители и  Категории в списке товаров и позволяет включать/отключать для просмотра колонки по выбору. Добавлена возможность выбора для фильтрации нескольких производителей и/или категорий.
       
      Работает (тестировался): OpenCart 3.0.0.0, 3.0.1.1, 3.0.1.2, 3.0.2.0
       
      Установка:
      Загрузить файл в установках расширений, перейти в модификаторы и обновить.
       
      Как обновить, тут:
       
      Демонстрация (admin):
      Логин: demo / Пароль: demo
       
      Что нового в версии 3.1.0:
      Добавлена возможность выбора для фильтрации нескольких производителей и/или категорий. Добавлена колонка производители в список товаров. Добавлена сортировка по производителю.  
      Что нового в версии 3.0.1:
      Исправлены мелкие ошибки.
    • От 100napb
      350 RUB
      View File


      Прошлые заказы и товары клиента (Расширенный вид заказа в админке)
       
      Модуль расширяет стандартную форму просмотра заказа в админке OpenCart, органично добавляя сводную информацию о клиенте, его заказах, а так же ранее заказанных клиентом товарах. Этим реально удобно пользоваться.
       
      Какую задачу решает модуль
      Сводная информация позволит менеджеру интернет-магазина оперативно оценить важность клиента и его значимость. Так же, благодаря сводным данным, можно сделать выводы об интересах и предпочтениях клиента для того, что бы дать рекомендации или обратить внимание на товары, которые хорошо сочетаются или дополняют те, что клиент заказывал ранее. Благодаря модулю Вы не пропустите ни одного повторного заказа, а Ваши клиенты будут превращаться в постоянных покупателей благодаря тому, что их узнают и помнят о каждом сделанном ранее заказе.
       
      Уже более года функционал модуля используется на рабочих проектах, где отлично себя зарекомендовал. А именно:
      клиенты очень ценят индивидуальный подход при выявлении повторного заказа (а все видно сразу в заказе) можно смело предлагать различные бонусы и "плюшки", что бы усилить лояльность + видоизменять стандартные письма \ по-другому строить диалог, как уже со "старым знакомым" имея информацию о повторно заказываемых товарах, очень легко предлагать дополнительные позиции к заказу, что увеличивает сумму заказа  
      Ссылка на демо (настройки модуля). Login\pass = demo\demo
      Ссылка на демо (вид заказа в админке). Login\pass = demo\demo
      Можете самостоятельно оформить на демо-сайте сколько угодно заказов с указанием одного и того же email (по нему определяется уникальность клиента) и после посмотреть свою историю в демо-админке
       
      Пример 1:
       
      Пример 2:
       
      Какая конкретно доступна информация о заказах\клиенте
      Модуль добавляет информацию следующего характера:
      Отображает список всех заказов, полученных от клиента, включая забытые\брошенные корзинки Считает сумму всех завершенных заказов клиента Показывает относительную позицию (ранг) клиента, исходя из суммы его заказов. Позволяет узнать "ценность" клиента, где 100% - это самый ценный клиент, который принес Вам больше всего денег. Выводит список всех ранее заказанных клиентом товаров (вычисляется из завершенных заказов и заказов в обработке) Позволяет мгновенно увидеть повторно заказываемые товары. Если клиент повторно заказывает некий конкретный товар, то в списке товаров заказа, рядом с колонкой "количество" для этого товара добавляется число в скобках. Это число отражает количество товара, которое ранее было заказано клиентом.  
      Что можно настроить?
      Установка
      Лицензия
      Системные требования
      Планы на будущее
       
      Модуль окупается буквально с первыми же клиентами, которых Вы превратите в постоянных
      Submitter 100napb Submitted 09/12/2018 Category Прочее Системные требования PHP 5.4+ Метод активации Без активации Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop Не проверялось  
    • От 100napb
      Модуль расширяет стандартную форму просмотра заказа в админке OpenCart, органично добавляя сводную информацию о клиенте, его заказах, а так же ранее заказанных клиентом товарах. Этим реально удобно пользоваться.
       
      Какую задачу решает модуль
      Сводная информация позволит менеджеру интернет-магазина оперативно оценить важность клиента и его значимость. Так же, благодаря сводным данным, можно сделать выводы об интересах и предпочтениях клиента для того, что бы дать рекомендации или обратить внимание на товары, которые хорошо сочетаются или дополняют те, что клиент заказывал ранее. Благодаря модулю Вы не пропустите ни одного повторного заказа, а Ваши клиенты будут превращаться в постоянных покупателей благодаря тому, что их узнают и помнят о каждом сделанном ранее заказе.
       
      Уже более года функционал модуля используется на рабочих проектах, где отлично себя зарекомендовал. А именно:
      клиенты очень ценят индивидуальный подход при выявлении повторного заказа (а все видно сразу в заказе) можно смело предлагать различные бонусы и "плюшки", что бы усилить лояльность + видоизменять стандартные письма \ по-другому строить диалог, как уже со "старым знакомым" имея информацию о повторно заказываемых товарах, очень легко предлагать дополнительные позиции к заказу, что увеличивает сумму заказа  
      Ссылка на демо (настройки модуля). Login\pass = demo\demo
      Ссылка на демо (вид заказа в админке). Login\pass = demo\demo
      Можете самостоятельно оформить на демо-сайте сколько угодно заказов с указанием одного и того же email (по нему определяется уникальность клиента) и после посмотреть свою историю в демо-админке
       
      Пример 1:
       
      Пример 2:
       
      Какая конкретно доступна информация о заказах\клиенте
      Модуль добавляет информацию следующего характера:
      Отображает список всех заказов, полученных от клиента, включая забытые\брошенные корзинки Считает сумму всех завершенных заказов клиента Показывает относительную позицию (ранг) клиента, исходя из суммы его заказов. Позволяет узнать "ценность" клиента, где 100% - это самый ценный клиент, который принес Вам больше всего денег. Выводит список всех ранее заказанных клиентом товаров (вычисляется из завершенных заказов и заказов в обработке) Позволяет мгновенно увидеть повторно заказываемые товары. Если клиент повторно заказывает некий конкретный товар, то в списке товаров заказа, рядом с колонкой "количество" для этого товара добавляется число в скобках. Это число отражает количество товара, которое ранее было заказано клиентом.  
      Что можно настроить?
      Установка
      Лицензия
      Системные требования
      Планы на будущее
       
      Модуль окупается буквально с первыми же клиентами, которых Вы превратите в постоянных
    • От LionHunter
      Здравствуйте
       
      Возможно кто-то такое делал или знает как: необходимо, чтобы товары в категории сортировались (по умолчанию) в зависимости от количества продаж. То есть, товары, которых продано  больше всего за период существования магазина были вверху и далее по убыванию.
      Это вообще реально сделать? Если вдруг есть тема, где что-то подобное уже обсуждалось - буду благодарен за подсказку.  
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.