Ho fatto una buona quantità di ricerche su google, tentativi ed errori, ma non riesco a trovare una soluzione al problema.
- La possibilità di modificare i campi e l'ordine di sales_order_grid; e
- La possibilità di visualizzare due campi personalizzati su questa griglia (filtrabile).
Il primo (punto 1) è stato risolto estendendo il Mage_Adminhtml_Block_Widget_Grid
mio modulo personalizzato (conosco gli osservatori, ma altri moduli installati stavano sostituendo le mie modifiche con i loro osservatori).
Indipendentemente da ciò, quest'ultimo è il mio problema attuale, di seguito sono riportati i due metodi che finora mi hanno deluso.
Metodo 1
<?php
/* @var $this Mage_Sales_Model_Mysql4_Setup */
$this->startSetup();
$connection = $this->getConnection();
/**
* Create the payment method dropdown field, because this field _may_ be
* used for searching we will create an index for it.
*/
$connection->addColumn(
$this->getTable('sales/order_grid'),
'x_payment_method',
"ENUM('PayPal', 'SagePay') DEFAULT NULL"
);
$connection->addKey($this->getTable('sales/order_grid'), 'x_payment_type', 'x_payment_type');
/**
* Create the order channel field to identify where the order was originally
* generated from. Also add an index for this field for additional filtering.
*/
$connection->addColumn(
$this->getTable('sales/order_grid'),
'x_sale_channel',
"ENUM('Amazon', 'Play', 'eBay', 'Website') NOT NULL DEFAULT 'Website'"
);
$connection->addKey($this->getTable('sales/order_grid'), 'x_sale_channel','x_sale_channel');
$this->endSetup();
Metodo 2
A questo punto ero stanco di leggere gli stessi 7 articoli che non mi hanno aiutato, quindi ho cercato di far funzionare UN campo; Ho anche verificato i log degli errori in Magento e ho trovato "$ this-> getTable ()" errato, quindi l'ho rimosso.
<?php
/* @var $this Mage_Sales_Model_Mysql4_Setup */
$this->startSetup();
$connection = $this->getConnection();
/**
* Create the payment method dropdown field, because this field _may_ be
* used for searching we will create an index for it.
*/
$this->addAttribute('sales_flat_order', 'x_test_option', array(
'label' => 'X Test Option',
'type' => 'varchar',
'input' => 'select',
'visible' => true,
'required' => false,
'position' => 1,
'visible_on_front' => false,
'option' => array('value' => array('web', 'test 1', 'test 2')),
'default' => array('web'),
));
$this->endSetup();
Ciò che fa sorgere la domanda, qual è la differenza tra una colonna e un attributo? La mia presunzione iniziale era che, una colonna veniva aggiunta a una tabella core esistente mentre un attributo veniva aggiunto alle tabelle EAV_ * e opportunamente correlato.