Ajouter une colonne à Admin> Ventes> Grille de commandes

Réponses:

20

Inchoo a écrit un excellent article sur l'extension de la grille de commande. Et sur le blog Atwix, il y a un article sur l'ajout d'une colonne à partir d'un tableau différent.

Le billet de blog Inchoo l'étend essentiellement avec une extension personnalisée. Dans le cas où vous n'êtes pas familier avec l'écriture de votre propre extension, je vous suggère de prendre un butin au didacticiel Alan Storms ou à celui de Magento 4U .

Vous allez réécrire la Mage_Adminhtml_Order_Gridclasse de blocs en ajoutant une colonne à la _prepareColumnsméthode et en étendant la _prepareCollectionméthode avec votre champ personnalisé

Sander Mangel
la source
7

C'est un processus simple en 2 étapes. (par exemple, je veux ajouter l' adresse e-mail et la ville de commande dans cette grille de commande).
Copiez ce fichier principal dans votre répertoire local dans le même répertoire. app / code / core / Mage / Adminhtml / Block / Sales / Order / Grid.php

Étape 1: ajouter la ligne de code suivante dans la fonction _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'
    ));

Étape 2: ajouter la ligne de code suivante dans la fonction _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 requête globale sera comme:

SELECT main_table. *, sales_flat_order_address. emailAS customer_email, sales_flat_order_address. cityDEPUIS sales_flat_order_gridCOMME main_tableINNER JOIN sales_flat_order_addressON main_table.entity_id = sales_flat_order_address.parent_id WHERE (sales_flat_order_address.address_type = 'billing')

Modifiez le code selon vos besoins.
J'espère que cela pourra aider.

Abhilash
la source
1

Les réécritures sont tellement hier;)

Vous pouvez le faire en utilisant des événements. Voir une réponse précédente ici:

Ajouter la colonne Société à la grille d'administration des clients avec Observer

qui comprend également un moyen d'ajuster les filtres.

Vous avez simplement besoin d'ajuster la grille que vous ciblez dans le premier bit de code:

if ($event->getBlock() instanceof
                Mage_Adminhtml_Block_Newsletter_Subscriber_Grid 
            ) {
ProxiBlue
la source