Tengo el requisito de mostrar los productos de una categoría en dos listas: una para los artículos en stock y la otra para los artículos agotados.
Estoy usando
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection()
para filtrar mi colección de productos para los artículos en stock, pero no parece haber un método equivalente para filtrar artículos fuera de stock: he examinado el Mage_CatalogInventory_Model_Stock
modelo, que es donde se define el método mencionado anteriormente.
He visto el siguiente ejemplo para recuperar productos agotados:
$collection->joinField(
'is_in_stock',
'cataloginventory/stock_item',
'is_in_stock',
'product_id=entity_id',
'{{table}}.stock_id=1',
'left'
)
->addAttributeToFilter('is_in_stock', array('eq' => 0));
... pero seguramente esta no es la mejor forma de lograrlo?
Su ejemplo no tiene en cuenta el valor de "use config".
Echemos un vistazo a cómo
addInStockFilterToCollection
funciona:OK, está delegando a otro método:
Esto une la tabla de inventario con las siguientes condiciones:
El producto no utiliza la configuración global Y tiene "administrar stock" establecido en "sí" Y está en stock
O
El producto no utiliza la configuración global Y tiene "administrar stock" establecido en "no"
O
Debe invertir las condiciones de la siguiente manera:
El producto no utiliza la configuración global Y tiene "administrar stock" establecido en "sí" Y no está en stock
O
El producto utiliza la configuración global Y la configuración global es "administrar stock = sí" Y no está en stock
Explicación: Solo toma las condiciones en las que in_stock está realmente verificado y cambia la comparación a 0. Las condiciones en las que in_stock no está marcado ("administrar stock" = "no") significan que el producto siempre está en stock, independientemente del estado del stock , por lo que no los incluimos en nuestra consulta "agotado".
Entonces este es tu código:
fuente
Mage_CatalogInventory_Model_Stock
modelo?$this
. También podría ser una función simple. Crearía un módulo separado y lo convertiría en un método auxiliar (o si lo necesita para otro módulo, agréguelo al auxiliar de ese módulo)El siguiente fragmento de código le devolverá los productos de una categoría que tenga el estado 'Habilitar', Visibilidad 'catálogo, búsqueda' y Stock Disponibilidad 'Agotado'.
fuente
Puedes probar esto.
O puedes probar esto
No estoy seguro al 100%.
fuente