2016-01-13 113 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

但是要注意,解决这个问题的时候,你应该考虑到你的案件的所有特点。不幸的是,没有任何标准的方法来实现这一点。

相关问题