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!

Donar

Si te ha sido de ayuda y quieres hacer una donación te lo agradeceremos :)

Compartelo!


Ir arriba de la pagina