Productos más vendidos con stock en Magento 1.9
En esta ocasión vamos a ver los productos más vendidos con stock en Magento 1.9.
Normalmente tenemos un controlador con este código:
class Mi_Custom_Block_Bestseller extends Mage_Catalog_Block_Product_Abstract{
public function __construct(){
parent::__construct();
$storeId = Mage::app()->getStore()->getId();
$products = Mage::getResourceModel('reports/product_collection')
->addOrderedQty()
->addAttributeToSelect('*')
->addAttributeToSelect(array('name', 'price', 'small_image'))
->setStoreId($storeId)
->addStoreFilter($storeId)
->setOrder('ordered_qty', 'desc'); // most best sellers on top
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
$products->setPageSize(20)->setCurPage(1);
$this->setProductCollection($products);
}
}
Este código recupera los productos más vendidos ordenados de más vendido a menos vendido.
Ahora lo que vamos a hacer es filtrar solo aquellos productos más vendidos que tienen stock. Para ello vamos a agregar una sola línea, quedando de este modo:
class Mi_Custom_Block_Bestseller extends Mage_Catalog_Block_Product_Abstract{
public function __construct(){
parent::__construct();
$storeId = Mage::app()->getStore()->getId();
$products = Mage::getResourceModel('reports/product_collection')
->addOrderedQty()
->addAttributeToSelect('*')
->addAttributeToSelect(array('name', 'price', 'small_image'))
->setStoreId($storeId)
->addStoreFilter($storeId)
->setOrder('ordered_qty', 'desc'); // most best sellers on top
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
// Solo prods con stock
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($products);
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
$products->setPageSize(20)->setCurPage(1);
$this->setProductCollection($products);
}
}
Puedes ver que hemos agregado la línea:
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($products);
Donde estamos filtrando solo aquellos productos que si tienen stock.
Ya sabes cómo recuperar los productos más vendidos con stock en Magento 1.9. Puedes aprender más en nuestra sección de Magento.
Espero que te haya sido de utilidad!