Spalte zu Admin> Sales> Orders Grid hinzufügen

Antworten:

20

Inchoo hat einen großartigen Artikel über die Erweiterung des Bestellrasters geschrieben . Und im Atwix-Blog gibt es einen Artikel zum Hinzufügen einer Spalte aus einer anderen Tabelle.

Der Inchoo-Blogpost erweitert ihn im Grunde um eine benutzerdefinierte Erweiterung. Für den Fall, dass Sie nicht mit dem Schreiben Ihrer eigenen Erweiterung vertraut sind, empfehle ich Ihnen, das Tutorial von Alan Storms oder das von Magento 4U zu besuchen .

Sie werden die Mage_Adminhtml_Order_GridBlockklasse umschreiben , indem Sie der _prepareColumnsMethode eine Spalte hinzufügen und die _prepareCollectionMethode mit Ihrem benutzerdefinierten Feld erweitern

Sander Mangel
quelle
7

Es ist ein 2-stufiger einfacher Prozess. (zum Beispiel möchte ich E-Mail-Adresse und Bestellort in dieses Bestellraster aufnehmen).
Kopieren Sie diese Kerndatei zuerst in dasselbe Verzeichnis in Ihr lokales Verzeichnis. app / code / core / Mage / Adminhtml / Block / Sales / Order / Grid.php

Schritt 1: Fügen Sie die folgende Codezeile in die Funktion _prepareColumns () ein

$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'
    ));

Schritt 2: Fügen Sie die folgende Codezeile in die Funktion _prepareCollection () ein

$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'));

Die Gesamtabfrage sieht wie folgt aus:

SELECT main_table. * sales_flat_order_address. emailAS customer_email, sales_flat_order_address. cityFROM sales_flat_order_gridAS 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')

Ändern Sie den Code entsprechend Ihren Anforderungen.
Hoffentlich hilft das.

Abhilash
quelle
1

Rewrites sind so gestern;)

Sie können dies mit Ereignissen tun. Eine frühere Antwort finden Sie hier:

Fügen Sie mit Observer die Spalte Firma zum Kunden-Admin-Grid hinzu

Dazu gehört auch eine Möglichkeit, die Filter anzupassen.

Sie müssen lediglich das Raster anpassen, auf das Sie im ersten Codebit abzielen:

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