J'ai fait pas mal de recherches sur Google, d'essais et d'erreurs, mais je ne trouve pas de solution au problème.
- La possibilité de modifier les champs et l'ordre de sales_order_grid; et
- La possibilité d'afficher deux champs personnalisés sur cette grille (filtrable).
Le premier (point 1) a été résolu, en étendant le Mage_Adminhtml_Block_Widget_Grid
dans mon module personnalisé (je connais les observateurs, mais d'autres modules installés remplaçaient mes changements avec leurs observateurs).
Quoi qu'il en soit, ce dernier est mon problème actuel, voici les deux méthodes qui m'ont échoué jusqu'à présent.
Méthode 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();
Méthode 2
À ce stade, j'étais fatigué de lire les 7 mêmes articles qui n'ont pas aidé, alors j'ai essayé de faire travailler UN champ; J'ai également vérifié les journaux d'erreurs dans Magento et trouvé "$ this-> getTable ()" était erroné, donc je l'ai supprimé.
<?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();
Ce qui fait qu'on se pose la question, quelle est la différence entre une colonne et un attribut? Ma présomption initiale était que, une colonne est ajoutée à une table principale existante tandis qu'un attribut est ajouté aux tables EAV_ * et associé de manière appropriée.