我坚持将新列(发货日期)添加到销售订单管理网格。我从app/code/core/Mage/Adminhtml/Block/Sales/Order
复制的文件Grid.php
到app/code/local/Mage/Adminhtml/Block/Sales/Order
,并在_prepareCollection()
功能添加代码如何将销售日期添加到管理销售订单网格
$collection->getSelect()->joinLeft('sales_flat_shipment_grid','sales_flat_shipment_grid.order_id=main_table.entity_id',array('shipped_date' => 'sales_flat_shipment_grid.created_at'));
和_prepareColumns()
加入这个
$this->addColumn('shipped_date', array(
'header' => Mage::helper('sales')->__('Shipped Date'),
'index' => 'shipped_date',
'type' => 'datetime',
'filter_index'=>'sales_flat_shipment_grid.created_at',
));
我的问题是,当有多个发货的订单,当我走到销售订单网格我得到错误There has been an error processing your request
它说有一个重复的订单ID。 如果订单没有多个货件,则销售订单网格无误,并显示相应订单的发货日期。
有人可以帮助我吗?在评论中提到
Magento的需要显示在网格处理从电网等大规模更新每个记录的唯一订单ID,您的查询会做一个一对多的数据库连接。有了这个,当您有多个货件时,您现在将尝试在网格中显示订单两次,这就是为什么要收到错误,因为您无法将订单ID重复两次。一个简单的解决方案可能是通过订单id子句添加一个组,以确保您每次订单只能获得一个记录。问题是,您想要显示倍数的装运日期?针对订单的第一批货物或最后一批货物? – Ashley 2014-12-05 14:42:04
另外,扩展原始的magento文件比将它及其所有内容复制到本地名称空间要安全得多。原因在于,如果升级和magento更改了文件的重要部分,那么您必须在每次升级时再次将核心更改合并到完全覆盖的文件中。一个很好的指南可以在这里找到:http://inchoo.net/magento/overriding-magento-blocks-models-helpers-and-controllers/ – Ashley 2014-12-05 14:44:18
@AshleySwatton谢谢。我想获得最后一批货物。 – James 2014-12-07 16:22:46