Как программно перечислить отсутствующие на складе товары?

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

22.06.2011 16:20

Стоит задача, сделать страницу на которой будут отображаться продукты отсутствующие на складе.
Внешний вид такой же как при просмотре категории продуктов (пейджинация, сортировка и т.д.)
Сделал CMS страницу для этих целей вот теперь думаю как реализовать?
Возникла идея отталкиваться от модуля поиска, но правильно ли это?
Или надо создать свой блок + вьюхи и плясать от них...

Буду признателен за наводки и советы, а может уже где есть реализация...

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

22.06.2011 17:33

1)
Сделайте класс-блок.
Класс-блок должен предоставлять шаблону коллекцию товаров.
Шаблон должен выводить эти товары.
Формировать коллекцию товаров можно как в самом классе-блоке, так и вынести бизнес-логику в модель.


2)
Для постраничной навигации используйте стандартный блок.
Для упорядочивания (сортировки) используйте стандартный блок.


3)
В целом делайте по примеру catalog/product_list.

#3 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

23.06.2011 17:11

Вроде все получилось, но возникла проблема с фильтрацией по наличию на складе.
За наличие отвечает параметр qty в таблице cataloginventory_stock_item, во вьюхах обычно идет такая проверка
$_product->getStockItem()->getQty() > 0

Пробовал добавить коллекции
$this->_productCollection->addFieldToFilter('qty', array('eq' => 0));
эффекта нет
пробовал
$this->_productCollection->joinField('qty', 'cataloginventory/stock_item', 'qty', 'product_id=entity_id', null, 'left');

тоже ноль
Затем пробовал
$this->_productCollection->joinField('qty', 'cataloginventory/stock_item', 'qty', null, 'left');

Ошибка

Цитата

Notice: Undefined offset: 1 in G:\Projects\iResourses\PetitFute\app\code\core\Mage\Eav\Model\Entity\Collection\Abstract.php on line 635


Не пойму как правильно добавить нужное мне условие.

Прошу помочь.
Спасибо

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

23.06.2011 17:37

Как отбраковать из коллекции отсутствующие на складе товары

#5 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

23.06.2011 18:18

А нужно обратно, вывести как раз отсутствующие товары. Наверно есть метод и для этого, завтра с утра гляну.
Спасибо!

#6 IgorN
  • Группа: Пользователь
  • Сообщений: 293
  • Регистрация: 09.03.2011

24.06.2011 11:56

Решил задачу.
Вчера я был близок к цели, но не правильно заюзал метод.
$this->_productCollection->joinField(
   'qty', 'cataloginventory/stock_item', 'qty', 'product_id=entity_id',
   '{{table}}.qty = 0 AND {{table}}.is_in_stock = 0'
);


Поделиться темой: