How to add tab on admin sales order view page in magento 1

By | April 11, 2019
Spread the love

You have to create custom plugin or add below files in another plugin. There will be 3 – 4 files changes are required to make it work. First you have to create a block file which you need to show in view tab. Current example will show you to create collection grid. You can also show any custom file html.

Lets create a block file in custom plugin in location app/code/local/Techgroup/Return/Block/Adminhtml/Sales/Order/View/Tab/Intake.php

<?php

class Techgroup_Return_Block_Adminhtml_Sales_Order_View_Tab_Intake extends Mage_Adminhtml_Block_Widget_Grid implements Mage_Adminhtml_Block_Widget_Tab_Interface
{
    public function __construct()
    {
        parent::__construct();
        $this->setId('rental_intake');
        $this->setUseAjax(true);
    }

    protected function _prepareCollection()
    {
        $collection = Mage::getModel('return/return')->getCollection();
        $collection->join(array(
            "order" => "sales/order"
        ), "order.entity_id = main_table.order_id");
        
        $collection->addFieldToFilter("order_id", $this->getOrder()->getId());

        $this->setCollection($collection);
        return parent::_prepareCollection();
    }

    protected function _prepareColumns()
    {
        $this->addColumn('return_id', array(
            'header' => Mage::helper('sales')->__('ID'),
            'index' => 'return_id',
            'width' => '120px'
        ));
        
        $this->addColumn('order_id', array(
            'header' => Mage::helper('sales')->__('Order ID'),
            'index' => 'order_id',
            'width' => '120px'
        ));

        $this->addColumn('notes', array(
            'header' => Mage::helper('sales')->__('Notes'),
            'index' => 'notes'
        ));

        $this->addColumn('machine_hours', array(
            'header' => Mage::helper('sales')->__('Hours'),
            'index' => 'machine_hours'
        ));

        $this->addColumn('username', array(
            'header' => Mage::helper('sales')->__('Username'),
            'index' => 'username'
        ));

        $this->addColumn('created_at', array(
            'header' => Mage::helper('sales')->__('Created At'),
            'index' => 'created_at'
        ));

        return parent::_prepareColumns();
    }

    /**
     * Retrieve grid row url
     *
     * @return string
     */
    public function getRowUrl($row)
    {
        return $this->getUrl('admin_return/adminhtml_return/edit', array(
            'id' => $row->getReturnId()
        ));
    }

    /**
     * Retrieve tab label
     *
     * @return string
     */
    public function getTabLabel()
    {
        return Mage::helper('sales')->__('Intake');
    }

    /**
     * Retrieve tab title
     *
     * @return string
     */
    public function getTabTitle()
    {
        return Mage::helper('sales')->__('Intake');
    }

    /**
     * Check whether can show tab
     *
     * @return bool
     */
    public function canShowTab()
    {
        return true;
    }

    /**
     * Check whether tab is hidden
     *
     * @return bool
     */
    public function isHidden()
    {
        return false;
    }

    /**
     * Retrieve order model instance
     *
     * @return Mage_Sales_Model_Order
     */
    public function getOrder()
    {
        return Mage::registry('current_order');
    }
}

Now add layout config in app/code/local/Techgroup/Return/etc/config.xml

<?xml version="1.0"?>
<config>
	<modules>
		<Techgroup_Return>
			<version>0.1.0</version>
		</Techgroup_Return>
	</modules>
	<global>
		<helpers>
			<return>
				<class>Techgroup_Return_Helper</class>
			</return>
		</helpers>
		<blocks>
			<return>
				<class>Techgroup_Return_Block</class>
			</return>
		</blocks>		
	</global>
	<admin>
		<routers>
			<return>
				<use>admin</use>
				<args>
					<module>Techgroup_Return</module>
					<frontName>admin_return</frontName>
				</args>
			</return>
		</routers>
	</admin>
	<adminhtml>
		<layout>
			<updates>
				<return>
					<file>techgroup_return.xml</file>
				</return>
			</updates>
		</layout>
	</adminhtml>
</config>

Now create layout update xml file at app\design\adminhtml\default\default\layout\techgroup_return.xml

<?xml version="1.0"?>
<layout version="0.1.0">
    <adminhtml_sales_order_view>
        <reference name="sales_order_tabs">
            <action method="addTab"><name>intake</name><block>return/Adminhtml_Sales_Order_View_Tab_Intake</block></action>
        </reference>
    </adminhtml_sales_order_view>
</layout>

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

four × one =