Agregar columna a Administrador> Ventas> Cuadrícula de pedidos

Respuestas:

20

Inchoo escribió un gran artículo sobre la ampliación de la cuadrícula de pedidos. Y en el blog de Atwix hay un artículo sobre cómo agregar una columna de una tabla diferente.

La publicación del blog de Inchoo básicamente lo extiende con una extensión personalizada. En caso de que no esté familiarizado con la escritura de su propia extensión, le sugiero que tome un botín en el tutorial de Alan Storms o en el de Magento 4U .

Reescribirá la Mage_Adminhtml_Order_Gridclase de bloque agregando una columna al _prepareColumnsmétodo y extendiendo el _prepareCollectionmétodo con su campo personalizado

Sander Mangel
fuente
7

Es un proceso simple de 2 pasos. (por ejemplo, quiero agregar la dirección de correo electrónico y la ciudad de pedidos en esta cuadrícula de pedidos).
Copie este archivo central a su local primero en el mismo directorio. app / code / core / Mage / Adminhtml / Block / Sales / Order / Grid.php

Paso 1: Agregue la siguiente línea de código en la función _prepareColumns ()

$this->addColumn('email', array(
        'header'    => Mage::helper('catalog')->__('Customer Email'),
        'index'     => 'email',
        'type' => 'text'
    ));
$this->addColumn('city', array(
        'header'    => Mage::helper('catalog')->__('Order From City'),
        'index'     => 'city',
        'type' => 'text'
    ));

Paso 2: Agregue la siguiente línea de código en la función _prepareCollection ()

$collection->getSelect()->join('sales_flat_order_address', 'main_table.entity_id = sales_flat_order_address.parent_id' ,array('email'=> 'email', 'city'=> 'city' ));
$collection->addFieldToFilter('sales_flat_order_address.address_type', array('eq' => 'billing'));

La consulta general será como:

SELECT main_table*., sales_flat_order_address. emailAS customer_email, sales_flat_order_address. cityDESDE sales_flat_order_gridCOMO main_tableINTERIOR ÚNASE sales_flat_order_addressA main_table.entity_id = sales_flat_order_address.parent_id DONDE (sales_flat_order_address.address_type = 'facturación')

Modifique el código según su necesidad.
Espero que ayude.

Abhilash
fuente