2016-01-13 41 views
0

我想根據最多售出的數量使用報告對產品進行分類。我嘗試了下面的代碼,但它只顯示已售出的產品,而不是未售出的產品。我想知道如何在產品收集中按銷售訂單分類銷售和未售出的產品。謝謝如何根據報告以絕大部分銷售的產品對產品進行分類?

if (Mage::helper('abc_xyz')->displayMostSoldProducts()) {    
    $collection = Mage::getResourceModel('reports/product_collection') 
    ->addAttributeToSelect('*') 
    ->addOrderedQty()    
    ->addCategoryFilter($category) 
    ->setOrder('ordered_qty', 'desc'); 
} 

回答

0

當向產品集合發送查詢時,您正在使用標準方法。他們反過來重寫選擇並使其使用來自sales_flat_quote_item表的數據。正如您可能知道的那樣,此表格不會在銷售的產品上存儲數據。

因此,您需要重新選擇您想要的方式。它應該是這樣的:

$collection = Mage::getResourceModel('reports/product_collection'); 
$select = $collection->getSelect(); 
$select->joinLeft(
    array('sfoi' => $collection->getTable('sales/order_item')), 
    '`e`.`entity_id` = `sfoi`.`product_id` ', 
    array(
     'ordered_qty' => 'SUM(sfoi.qty_ordered)', 
     'order_items_name' => 'sfoi.name', 
     'entity_id' => 'sfoi.product_id', 
    )) 
->where('sfoi.parent_item_id IS NULL') 
->group('e.entity_id'); 

在我的情況下,我採取了收集本身,並添加了所有必要的信息。

其結果是,我有這樣的: https://gyazo.com/4a0b02298173f2c9356b7d7df783c0ff

這包括未售出的全部產品: https://gyazo.com/24859373f52d31dba50560a02e0d0d79

但是要注意,解決這個問題的時候,你應該考慮到你的案件的所有特點。不幸的是,沒有任何標準的方法來實現這一點。