evgeny8778

[Решено] Хиты продаж за 2 недели

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

evgeny8778    0

Здравствуйте.

 

В модуле "Хиты продаж" необходимо сделать выборку среди товаров, проданных за 2 последние недели, а не за весь период.

Можно ли реализовать подобное? Если я правильно понял, то изменениям должен быть подвергнут файл: 

 

catalog/model/catalog/product.php

 

а точнее, строка:



$query = $this->db->query("SELECT op.product_id, COUNT(*) AS total FROM " . DB_PREFIX . "order_product op LEFT JOIN `" 
. DB_PREFIX . "order` o ON (op.order_id = o.order_id) LEFT JOIN `" . DB_PREFIX . "product` 
p ON (op.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON 
(p.product_id = p2s.product_id) WHERE o.order_status_id > '0' AND p.status = '1' AND p.date_available <= NOW() 
AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' GROUP BY op.product_id ORDER BY total DESC LIMIT 
" . (int)$limit);

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


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

можно. правильно поняли.

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


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

Вопрос в том, каким условием подобное реализовать? Если кто пробовал поделитесь опытом.

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


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

Может кто-то подскажет правильно ли я делаю.

 

В приведённом мною выше запросе, я изменил:

p.date_available <= NOW()

на

o.date_added >= DATE_SUB(CURRENT_DATE, INTERVAL 14 DAY)

В конечном итоге получилось так:

$query = $this->db->query("SELECT op.product_id, COUNT(*) AS total FROM " . DB_PREFIX . "order_product op LEFT JOIN `" .
 DB_PREFIX . "order` o ON (op.order_id = o.order_id) LEFT JOIN `" . DB_PREFIX . "product` p ON (op.product_id = p.product_id) LEFT JOIN " .
 DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE o.order_status_id > '0' AND p.status = '1' AND
 o.date_added >= DATE_SUB(CURRENT_DATE, INTERVAL 14 DAY) AND p2s.store_id = '" . (int)$this->config->get('config_store_id') 
. "' GROUP BY op.product_id ORDER BY total DESC LIMIT " . (int)$limit);

Вроде бы правильно считает, но почему-то попал 1 товар с 0-м количеством на складе. Cache на FTP почистил.

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


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

AND (DATEDIFF(NOW(), o.`date_added`) <= 14)

но почему-то попал 1 товар с 0-м количеством на складе.

кол-во товаров не проверяется

Изменено пользователем afwollis
>= на <=

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


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

Всё вроде бы хорошо, но инфа за 2013 год, делал вывод товара за определённый период времени вашими способами, но не чего не вышло, может кто то подскажет что нужно делать для версии 2.....  И еще результат видно сразу после замены строк кода и очистки кеша? Или нужно подождать определённое время?

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


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

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

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

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

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

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

Войти

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

Войти


  • Последние посетители   0 пользователей онлайн

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