2012-02-14 22 views
2

私はMagentoの "Products Ordered"レポートに新しい列を追加しようとしています。私は各製品にカスタムオプションを追加しました。これらのカスタムオプションをレポートビューにどのように表示させることができるのだろうかと思います。Magento製品のカスタム製品オプションレポート

これまでのところ私は1つはそうのように/ Grid.phpを発注/アプリ/コード/コア/メイジ/ Adminhtml /ブロック/レポート/製品の列を追加することができることを読んだ:

$this->addColumn('sku', array(
     'header' =>Mage::helper('reports')->__('Product Sku'), 
     'sortable' =>false, 
     'index'  =>'sku' 
)); 

しかし、どのように私は私の製品のために作成したカスタムオプションを追加するつもりですか? Magento Community Version 1.6.2を使用しています。

前もって太もも!

答えて

0

拡張するクラスは、Mage_Reports_Model_Resource_Product_Ordered_Collectionです。具体的には、親クラスのメソッドMage_Reports_Model_Resource_Product_Collection::addOrderedQty()です。

product_options属性を追加すると、注文アイテムに設定されているオプションにアクセスできます。
1つの問題は、しかしあります:

// on the select instance: 
->group('order_items.product_id') 

これは、製品IDですべてのレコードをマージします。したがって、同じ製品が2回注文された場合、そのうちの1つのオプションのみが表示されます。
これは、おそらく別のレポートを作成する必要があります。このレポートは、product_optionsでグループ化されています。

製品オプションを含む製品コレクションを入手したら、
$product->processBuyRequest(unserialize($product->getData('product_options')))と呼んでください。 その後、すべてのオプションは$product->getCustomOptions()を使用して配列を検索するか、またはgetCustomOption($code)を使用して1つを検索します。

2

実際には、コードを追加する必要があります(/ Grid.php販売/ファイル アプリ/コード/コア/メイジ/ Adminhtml /ブロック/レポート/製品のメソッド_prepareColumnsに

$this->addColumn('sku', array(
     'header' =>Mage::helper('reports')->__('Product Sku'), 
     'index'  =>'sku' 
)); 

はありません順序付き)

0

コアを編集しないでください、使用オブザーバー:

public function appendCustomColumn(Varien_Event_Observer $observer) 

     if ($block->getType() == 'adminhtml/report_product_sold_grid') { 
      $block->addColumnAfter('Product Name', array(
       'header' => 'Sku', 
       'type'  => 'text', 
       'index'  => 'sku', 
      ), 'sku'); 
     } 
} 
関連する問題