Wednesday, July 27, 2016

related product by sales

    public function getItems()
    {
        $bySale = 'SELECT count(*) as total,product_id FROM '.$tablePrefix.'`sales_flat_order_item` WHERE order_id IN (select order_id from '.$tablePrefix.'`sales_flat_order_item` where product_id = '.$productId.') and product_id != '.$productId.' group by product_id order by total desc';
        $product = Mage::registry('product');
        $productId = $product->getEntityId();
       
        $orderItems = Mage::getModel('sales/order_item')->getCollection()
                ->addAttributeToSelect('order_id')
                ->addFieldToFilter('product_id', $productId)
                ->load();
        $orderIds = array();
        foreach ($orderItems as $orderItem)
        {
            $orderIds[] = $orderItem->getOrderId();
        }
       
        $saleItems = Mage::getModel('sales/order_item')->getCollection()
                ->addAttributeToSelect('product_id')
                ->addFieldToFilter('order_id',array('in' => $orderIds))
                ->addFieldToFilter('product_id',array('neq'=>$productId));
        $saleItems->getSelect()->columns('COUNT(*) as total')->Group('product_id')->Order('total','DESC');
        $productIds = array();
        foreach ($saleItems as $saleItem)
        {
            $productIds[] = $saleItem->getProductId();
        }
       
        //echo($saleItems->getSelect());
        //var_dump($productIds);
        //exit;
       
        $existingItems = $this->_itemCollection->getItems();
        foreach ($productIds as $productId)
        {
            $productHelper = Mage::helper('catalog/product');
            // Standard algorithm to prepare and rendern product view page
            $product = Mage::getModel('catalog/product')
                ->setStoreId(Mage::app()->getStore()->getId())
                ->load($productId);
            if (!$product) {
                //throw new Mage_Core_Exception($this->__('Product is not loaded'), $this->ERR_NO_PRODUCT_LOADED);
            }
            else
            {
                //var_dump($product);exit;
                //var_dump($existingItems);exit;
                if (!$productHelper->canShow($product)) {
                    continue;
                }
                if (!in_array(Mage::app()->getStore()->getWebsiteId(), $product->getWebsiteIds())) {
                    continue;
                }
                if(!in_array($product, $existingItems))
                {
                    $this->_itemCollection->addItem($product);
                    //var_dump($existingItems);
                    //exit();
                }
            }
        }
        return $this->_itemCollection;
    }

No comments:

Post a Comment