Nach viel Versuch und Irrtum Zugabe - viel Fehler - ich glaube, ich habe es jetzt.
mit dem sales_flat_order_grid
Zunächst wird in Mage_Sales_Model_Mysql4_Order_Abstract::updateGridRecords()
aktualisiert, indem die Spur folgende ich es, sowohl die „main“ inspiziert Tabelle ausgearbeitet (sales_flat_order
) und die Haupttabelle + „_grid“ (sales_flat_order_grid
), nimmt die intersect ihrer Spalten und erstellt daraus eine Abfrage. Daher muss jede Spalte, die Sie in der Grid-Tabelle benötigen, auch in der Haupttabelle enthalten sein. Es ist keine Entität im EAV-Stil, so dass Attribute nicht erstellt werden müssen.
Hier ist mein Setup-Skript ist:
<?php
/* @var $this Nexxt_Booth_Model_Entity_Setup */
$installer = $this;
$installer->getConnection()->addColumn($installer->getTable('sales_flat_order'), 'box_num', 'varchar(255)');
$installer->getConnection()->addColumn($installer->getTable('sales_flat_order_grid'), 'box_num', 'varchar(255)');
Als nächstes musste ich die zusätzliche Spalte in allen Tabellen, um in Admin zeigen. Um dies zu tun, überschreibe ich jeden relevanten Block.
<?xml version="1.0"?>
<config>
....
<global>
<blocks>
<adminhtml>
<rewrite>
<customer_edit_tab_view_orders>
<!-- Recent 5 orders on customer page -->
My_Module_Block_Adminhtml_Customer_Edit_Tab_View_Orders
</customer_edit_tab_view_orders>
<customer_edit_tab_orders>
<!-- All orders on customer tab -->
My_Module_Block_Adminhtml_Customer_Edit_Tab_Orders
</customer_edit_tab_orders>
<sales_order_grid>
<!-- All orders in Sales menu -->
My_Module_Block_Adminhtml_Sales_Order_Grid
</sales_order_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
</config>
In My/Module/Block/Adminhtml/Sales/Order/Grid.php
habe ich folgendes:
<?php
class My_Module_Block_Adminhtml_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
protected function _prepareColumns()
{
$this->addColumn('box_num', array(
'header' => $this->__('Box #'),
'index' => 'box_num',
'width' => '100px'
));
$this->addColumnsOrder('box_num', 'shipping_name');
return parent::_prepareColumns();
}
}
Auch in My/Module/Block/Adminhtml/Customer/Edit/Tab/Orders.php
und My/Module/Block/Adminhtml/Customer/Edit/Tab/View/Orders.php
Ich habe diese Funktion:
protected function _prepareColumns()
{
$this->addColumn('box_num', array(
'header' => $this->__('Box #'),
'index' => 'box_num',
'width' => '100px'
));
$this->addColumnsOrder('box_num', (Mage::app()->isSingleStoreMode() ? 'grand_total' : 'store_id'));
return parent::_prepareColumns();
}
schließlich zu beenden, im Falle sales_convert_quote_to_order
I bevölkerte das neue Feld. Dieses Bit ist nicht so wichtig, solange Sie die Daten zu einem Zeitpunkt hinzufügen, bevor der Auftrag gespeichert wird.
$order->setBoxNum('DATA GOES HERE');
Ich versuche, genau dasselbe zu tun, ich habe eine neue Spalte gemacht in sales_flat_order_grid als barcode_no und mit Grid.php habe ich diese Spalte in Magento Orders Grid angezeigt.Wie kann ich barcode_no value vom Magento-Backend in die sales_flat_order_grid-Tabelle speichern? –
@ShujaatShaikh welches Bit hast du Probleme mit? – clockworkgeek
Nein, wo ich eine Tuturial finden kann, wie man einen benutzerdefinierten Wert in meine PHP-Datenbank von Magento Admin-Backend einfügen. Jeder Artikel wäre eine große Hilfe! –