0
votes

I'm trying to add a new columns to Magento's sales order grid. I tried following the instructions located here: http://www.atwix.com/magento/customize-orders-grid/

This method is working when i use it in my installed magento in localhost but didn't work for the magento hosted in another server (even for deleting a column nothing changed in that grid).

Also when i install an extension to customise my order grid it didn't work (The grid didn't even display but work normal in my localhost version)

Is there an explanation for this or another method to edit my order grid ?

I hope my question is clear and thank you for your help.

This is the main functions (_prepareCollection and _prepareCollection) in /app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php:

 protected function _prepareCollection()
{
    $collection = Mage::getResourceModel($this->_getCollectionClass());
    $collection->getSelect()->join('cd_sales_flat_order', 'main_table.entity_id = cd_sales_flat_order.entity_id',array('shipping_description'));
    $collection->getSelect()->join('cd_sales_flat_order_address', 'main_table.entity_id = cd_sales_flat_order_address.parent_id',array('postcode'));
    $this->setCollection($collection);
    return parent::_prepareCollection();
}

protected function _prepareColumns()
{
    $this->addColumn('shipping_method', array(
        'header' => Mage::helper('sales')->__('Shipping Method'),
        'index' => 'shipping_description',
    ));

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

    $this->addColumn('real_order_id', array(
        'header'=> Mage::helper('sales')->__('Order #'),
        'width' => '80px',
        'type'  => 'text',
        'index' => 'increment_id',
    ));

    if (!Mage::app()->isSingleStoreMode()) {
        $this->addColumn('store_id', array(
            'header'    => Mage::helper('sales')->__('Purchased From (Store)'),
            'index'     => 'store_id',
            'type'      => 'store',
            'store_view'=> true,
            'display_deleted' => true,
        ));
    }

    $this->addColumn('created_at', array(
        'header' => Mage::helper('sales')->__('Purchased On'),
        'index' => 'created_at',
        'type' => 'datetime',
        'width' => '100px',
    ));

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


    $this->addColumn('base_grand_total', array(
        'header' => Mage::helper('sales')->__('G.T. (Base)'),
        'index' => 'base_grand_total',
        'type'  => 'currency',
        'currency' => 'base_currency_code',
    ));

    $this->addColumn('grand_total', array(
        'header' => Mage::helper('sales')->__('G.T. (Purchased)'),
        'index' => 'grand_total',
        'type'  => 'currency',
        'currency' => 'order_currency_code',
    ));

    $this->addColumn('status', array(
        'header' => Mage::helper('sales')->__('Status'),
        'index' => 'status',
        'type'  => 'options',
        'width' => '70px',
        'options' => Mage::getSingleton('sales/order_config')->getStatuses(),
    ));

    if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) {
        $this->addColumn('action',
            array(
                'header'    => Mage::helper('sales')->__('Action'),
                'width'     => '50px',
                'type'      => 'action',
                'getter'     => 'getId',
                'actions'   => array(
                    array(
                        'caption' => Mage::helper('sales')->__('View'),
                        'url'     => array('base'=>'*/sales_order/view'),
                        'field'   => 'order_id',
                        'data-column' => 'action',
                    )
                ),
                'filter'    => false,
                'sortable'  => false,
                'index'     => 'stores',
                'is_system' => true,
        ));
    }
    $this->addRssList('rss/order/new', Mage::helper('sales')->__('New Order RSS'));

    $this->addExportType('*/*/exportCsv', Mage::helper('sales')->__('CSV'));
    $this->addExportType('*/*/exportExcel', Mage::helper('sales')->__('Excel XML'));

    return parent::_prepareColumns();
}
2
Is your cache and compilation disabled?MagentoMan
My Compiler Status is Enabled for the version that didn't workFares Omrani

2 Answers

0
votes

copy and post this code working fine in version 1.8.1

<?php
    /**
     * Magento
     *
     * NOTICE OF LICENSE
     *
     * This source file is subject to the Open Software License (OSL 3.0)
     * that is bundled with this package in the file LICENSE.txt.
     * It is also available through the world-wide-web at this URL:
     * http://opensource.org/licenses/osl-3.0.php
     * If you did not receive a copy of the license and are unable to
     * obtain it through the world-wide-web, please send an email
     * to [email protected] so we can send you a copy immediately.
     *
     * DISCLAIMER
     *
     * Do not edit or add to this file if you wish to upgrade Magento to newer
     * versions in the future. If you wish to customize Magento for your
     * needs please refer to http://www.magentocommerce.com for more information.
     *
     * @category    Mage
     * @package     Mage_Adminhtml
     * @copyright   Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
     * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
     */

    /**
     * Adminhtml sales orders grid
     *
     * @category   Mage
     * @package    Mage_Adminhtml
     * @author      Magento Core Team <[email protected]>
     */
    class Mage_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_Grid
    {

        public function __construct()
        {
            parent::__construct();
            $this->setId('sales_order_grid');
            $this->setUseAjax(true);
            $this->setDefaultSort('created_at');
            $this->setDefaultDir('DESC');
            $this->setSaveParametersInSession(true);
        }

        /**
         * Retrieve collection class
         *
         * @return string
         */
        protected function _getCollectionClass()
        {
            return 'sales/order_grid_collection';
        }


        protected function _prepareCollection()
        {
            $collection = Mage::getResourceModel($this->_getCollectionClass());
            $collection->getSelect()->joinLeft('sales_flat_order_address', 'main_table.entity_id = sales_flat_order_address.parent_id',array('telephone','city','postcode' ) )->where("sales_flat_order_address.address_type = 'billing'");
            $collection->getSelect()->joinLeft('sales_flat_order', 'main_table.entity_id = sales_flat_order.entity_id',array('total_qty_ordered'));
             $collection->getSelect()->joinLeft(array('sfoa' => 'sales_flat_order_address'), 'main_table.entity_id = sfoa.parent_id AND sfoa.address_type="shipping"', array('sfoa.street', 'sfoa.city', 'sfoa.region', 'sfoa.postcode', 'sfoa.telephone'));
            $collection->getSelect()->joinLeft('sales_flat_order_payment', 'main_table.entity_id = sales_flat_order_payment.parent_id',array('method'));
            $this->setCollection($collection);
            return parent::_prepareCollection();
        }
        protected function _getAttributeOptions($attribute_code)
            {
                $attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $attribute_code);
                $options = array();
                foreach( $attribute->getSource()->getAllOptions(true, true) as $option ) {
                    $options[$option['value']] = $option['label'];
                }
                return $options;
            }
            protected function _prepareColumns()
            {
            $this->addColumn('created_at', array(
            'header' => Mage::helper('sales')->__('Date'),//Date=Purchased On
            'index' => 'created_at',
            'type' => 'datetime',
            'width' => '100px',
            'filter_index' => 'main_table.created_at',//
            ));
            $this->addColumn('real_order_id', array(
            'header'=> Mage::helper('sales')->__('Order Id'), //Order #=order id
            'width' => '80px',
            'type'=> 'text',
            'index' => 'increment_id',
            'filter_index' => 'main_table.increment_id',
            ));
            if (!Mage::app()->isSingleStoreMode()) {
            $this->addColumn('store_id', array(
            'header'=> Mage::helper('sales')->__('Purchased From (Store)'),
            'index'=> 'store_id',
            'type'=> 'store',
            'filter_index' => 'main_table.store_id',
            'store_view'=> true,
            'display_deleted' => true,
            ));
            }
            $this->addColumn('billing_name', array(
            'header' => Mage::helper('sales')->__('Customer Name'), //Bill to Name=Customer Name
            'index' => 'billing_name',
            'filter_index' => 'main_table.billing_name',
            ));
            $this->addColumn('telephone', array(
            'header' => Mage::helper('sales')->__('Mobile'),
            'index' => 'telephone',
            'filter_index' => 'sales_flat_order_address.telephone',
            ));
            $this->addColumn('city', array(
            'header' => Mage::helper('sales')->__('City'),
            'index' => 'city',
            'filter_index' => 'sales_flat_order_address.city',
            ));
            $this->addColumn('postcode', array(
            'header' => Mage::helper('sales')->__('Pincode'),
            'index' => 'postcode',
            'filter_index' => 'sales_flat_order_address.postcode',
            ));
             $this->addColumn('city', array(
                   'header' => Mage::helper('sales')->__('City'),
                   'index' => 'city', 'filter_condition_callback' => array($this, '_addEGColumnFilter'),
               ));
               $this->addColumn('street', array(
                   'header' => Mage::helper('sales')->__('Street'),
                   'index' => 'street',
                   'filter_condition_callback' => array($this, '_addEGColumnFilter'),
               ));
               $this->addColumn('postcode', array(
                   'header' => Mage::helper('sales')->__('Postcode'),
                   'index' => 'postcode',
                   'filter_condition_callback' => array($this, '_addEGColumnFilter'),
               ));
               $this->addColumn('telephone', array(
                   'header' => Mage::helper('sales')->__('Telephone'),
                   'index' => 'telephone',
                   'filter_condition_callback' => array($this, '_ customColumnFilter'),
               ));
            $this->addColumn('method', array(
            'header' => Mage::helper('sales')->__('Payment method'),
            'index' => 'method',
            'filter_index' => 'sales_flat_order_payment.method',
            ));
            $this->addColumn('total_qty_ordered', array(
            'header' => Mage::helper('sales')->__('Qty'),
            'index' => 'total_qty_ordered',
            'filter_index' => 'sales_flat_order.total_qty_ordered',
            ));
            $this->addColumn('color', array(
            'header' => Mage::helper('sales')->__('Color'),
            'index' => 'color',
            'filter_index' => 'sales_flat_order.color',
            ));
            $this->addColumn('grand_total', array(
            'header' => Mage::helper('sales')->__('Order amount'),//G.T. (Purchased)=Order amount
            'index' => 'grand_total',
            'type'=> 'currency',
            'currency'=> 'order_currency_code',
            'filter_index' => 'main_table.grand_total',
            ));
            $this->addColumn('status', array(
            'header' => Mage::helper('sales')->__('Status'),
            'index' => 'status',
            'filter_index' => 'main_table.status',
            'type' => 'options',
            'width' => '70px',
            'options' => Mage::getSingleton('sales/order_config')->getStatuses(),
            ));
            if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) {
            $this->addColumn('action',
            array(
            'header'=> Mage::helper('sales')->__('Action'),
            'width'=> '50px',
            'type'=> 'action',
            'getter' => 'getId',
            'actions'=> array(
            array(
            'caption' => Mage::helper('sales')->__('View'),
            'url' => array('base'=>'*/sales_order/view'),
            'field' => 'order_id'
            )
            ),
            'filter'=> false,
            'sortable'=> false,
            'index' => 'stores',
            'is_system' => true,
            ));
            }
            $this->addRssList('rss/order/new', Mage::helper('sales')->__('New Order RSS'));
            $this->addExportType('*/*/exportCsv', Mage::helper('sales')->__('CSV'));
            $this->addExportType('*/*/exportExcel', Mage::helper('sales')->__('Excel'));
            return parent::_prepareColumns();
            }


        protected function _prepareMassaction()
        {
            $this->setMassactionIdField('entity_id');
            $this->getMassactionBlock()->setFormFieldName('order_ids');
            $this->getMassactionBlock()->setUseSelectAll(false);

            if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/cancel')) {
                $this->getMassactionBlock()->addItem('cancel_order', array(
                     'label'=> Mage::helper('sales')->__('Cancel'),
                     'url'  => $this->getUrl('*/sales_order/massCancel'),
                ));
            }

            if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/hold')) {
                $this->getMassactionBlock()->addItem('hold_order', array(
                     'label'=> Mage::helper('sales')->__('Hold'),
                     'url'  => $this->getUrl('*/sales_order/massHold'),
                ));
            }

            if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/unhold')) {
                $this->getMassactionBlock()->addItem('unhold_order', array(
                     'label'=> Mage::helper('sales')->__('Unhold'),
                     'url'  => $this->getUrl('*/sales_order/massUnhold'),
                ));
            }

            $this->getMassactionBlock()->addItem('pdfinvoices_order', array(
                 'label'=> Mage::helper('sales')->__('Print Invoices'),
                 'url'  => $this->getUrl('*/sales_order/pdfinvoices'),
            ));

            $this->getMassactionBlock()->addItem('pdfshipments_order', array(
                 'label'=> Mage::helper('sales')->__('Print Packingslips'),
                 'url'  => $this->getUrl('*/sales_order/pdfshipments'),
            ));

            $this->getMassactionBlock()->addItem('pdfcreditmemos_order', array(
                 'label'=> Mage::helper('sales')->__('Print Credit Memos'),
                 'url'  => $this->getUrl('*/sales_order/pdfcreditmemos'),
            ));

            $this->getMassactionBlock()->addItem('pdfdocs_order', array(
                 'label'=> Mage::helper('sales')->__('Print All'),
                 'url'  => $this->getUrl('*/sales_order/pdfdocs'),
            ));

            $this->getMassactionBlock()->addItem('print_shipping_label', array(
                 'label'=> Mage::helper('sales')->__('Print Shipping Labels'),
                 'url'  => $this->getUrl('*/sales_order_shipment/massPrintShippingLabel'),
            ));

            return $this;
        }

        public function getRowUrl($row)
        {
            if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) {
                return $this->getUrl('*/sales_order/view', array('order_id' => $row->getId()));
            }
            return false;
        }

        public function getGridUrl()
        {
            return $this->getUrl('*/*/grid', array('_current'=>true));
        }

    }
0
votes

You will need to disable your compilation before making your changes