И снова вопрос про склады и кол-во товаров в них...

#
И снова вопрос про склады и кол-во товаров в них...
Доброго времени суток, уважаемые
Возникла трудность при попытке решения следующей задачи:
Нужно выводить у одной родительской группы товаров все товары и все подгруппы с товарами, а у соседней родительской группы (с вложенными подгруппами) выводить только те товары, которые присутствуют хотя бы на одном складе.

Логика:
Если имя родительской группы товара = 'Сантехника', то выводить все товары, иначе выводить товар, которого на складе > 0


Товар простой, вложенность групп более 5 уровней.

Элементарная наглядная схема желаемого:

Подскажите, пожалуйста, в каком направлении двигаться
#
Re: И снова вопрос про склады и кол-во товаров в них...
Вообще довольно-таки нетривиально.
Для одного конкретного товара можно дергать соответствующие методы в API:
if($oShop_Item->Shop_Item_Digitals->getCountDigitalItems() > 0) {
// товар есть в наличии
}
- признак наличия цифрового товара
$oShop_Warehouse_Item = Core_Entity::factory('Shop_Warehouse_Item')->getByShopItemId($oShop_Item->id, $this->cache);
if (!is_null($oShop_Warehouse_Item) && $oShop_Warehouse_Item->count > 0)
{
// товар есть в наличии
}
- признак наличия обычного товара

Но для показа списка товаров эти методы непригодны.

В вашем случае, целесообразнее всего сделать sql-запрос к базе, чтобы достать из нее идентификаторы всех товаров, которые есть в наличии, а потом собрать из них массив и строить фильтр (sql-выражение IN) по основному свойству id.
Заказов не беру. Консультирую редко.
#
Re: И снова вопрос про склады и кол-во товаров в них...
//добавил в class My_Shop_Controller_Show extends Shop_Controller_Show в ТДС

public function hideItemesWithoutRemains(){
  $this->_Shop_Items
   ->queryBuilder()
   ->where('shop_items.id', 'IN',
    Core_QueryBuilder::select('shop_item_id')
     ->from('shop_warehouse_items')
     ->groupBy('shop_item_id')
     ->having('sum(count)', '>', 0)
   );
}


//далее вызвал с условием из __construct
-------
Спасибо за содействие!
#
Re: И снова вопрос про склады и кол-во товаров в них...
Н-ну, я бы сделал по-другому, не расширяя класс а ограничившись правкой в ТДС, но если в таком виде это работает - то почему бы и нет.
Заказов не беру. Консультирую редко.
#
Re: И снова вопрос про склады и кол-во товаров в них...
Хм, мне других идей пока не приходило, было бы весьма интересно взглянуть на код, который откидывал бы излишние танцы с бубном
#
Re: И снова вопрос про склады и кол-во товаров в них...
HostCMS member,
нет, танцы с бубном он не откидывает, и принцип тот же, но я обычно получаю список идентификаторов в массив, и подставляю в фильтр уже его, и расширять класс специальным методом тут по сути незачем...
Кстати, ваше решение учитывает только обычные (не электронные) товары.
Заказов не беру. Консультирую редко.
#
Re: И снова вопрос про склады и кол-во товаров в них...
Просто в магазине не будет электронного товара, код связанный с ним, вовсе вырезан, дабы не мешал чтению.
Авторизация