0

i am try to add columns in Admin > sales >order by overriding method. Copy app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php to app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php.

add this code in protected function _prepareCollection()

$collection->getSelect()->join('sales_flat_order_item', '`sales_flat_order_item`.order_id=`main_table`.entity_id', array('name'  => new Zend_Db_Expr('group_concat(`sales_flat_order_item`.name SEPARATOR ", ")')));

add this code in protected function _prepareColumns()

$this->addColumn('name', array(
        'header' => Mage::helper('sales')->__('Product Name'),
        'index' => 'name',
    ));

but it get all get all product's name of all orders like in the image enter image description here

  • What are you trying to accomplish? group_concat(sales_flat_order_item.name SEPARATOR ", ") will display all item order as name – Renon Stewart Oct 30 '14 at 12:01
  • @R.S i don't understanding u waht u want to say – Dinesh Oct 30 '14 at 12:04
1

Take look at Show SKU and Product Name in Sales_Order_Grid?

You can do this one of two ways :

1) Using "renderer"

$this->addColumn('name', array(
    ....                                        
    'renderer' => 'NameSpace_ModuleName_Block_Adminhtml_Renderer_Productsname',          
));


class NameSpace_ModuleName_Block_Adminhtml_Renderer_Productsname extends     Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
    public function render(Varien_Object $row)
    {                    
        $order=Mage::getModel('sales/order')->load($row->getData('entity_id'));              
        $str="";

        foreach($order->getAllVisibleItems() as $_item){                      
            $str .= $_item->getSku();
    }       
        unset($order);
        return $str;
    }
}

2) using "join" see https://magento.stackexchange.com/a/14343/519

  • at which location, I have to create a render file and with which name ? – Dinesh Oct 30 '14 at 13:33
  • You seem to be making changes to core (which you should not) instead create a custom module see inchoo.net/magento/programming-magento/… and inchoo.net/magento/… – Renon Stewart Oct 30 '14 at 13:42
  • no i am not editing core file, i am overriding core file by Copy /app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php to /app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php. – Dinesh Oct 31 '14 at 5:16
  • i am using render method with this code class Mage_Adminhtml_Block_Sales_Order_Renderer_Productsname extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract { public function render(Varien_Object $row) { $order=Mage::getModel('sales/order')->load($row->getData('entity_id')); $str=""; foreach($order->getAllItems() as $_item){ $str .= $_item->getSku(); } unset($order); return $str; } } but it repeat last product two times – Dinesh Oct 31 '14 at 7:03
  • Update your question with your code in a readable format – Renon Stewart Oct 31 '14 at 14:31

Not the answer you're looking for? Browse other questions tagged or ask your own question.