Magento销售订单网格定制

问题描述:

我想定制magento订单网格。我需要添加一个更多的列在sales_flat_order_address表中。主表的链接即sales_flat_order_gridparent_idMagento销售订单网格定制

需要加入这样一种方式,sales_flat_order_address.entity_id = sales_flat_order_grid.parent_id

但是,当我尝试这样做时,出现错误“完整性约束违规:1052组语句中的列'entity_id'含糊不清”。

$collection = Mage::getResourceModel($this->_getCollectionClass()); 
    $collection->getSelect() 
joinLeft(array('table_alias2'=>$collection->getTable('deliveryinfo/saleslocation')),'main_table.entity_id = table_alias2.parent_id',array('table_alias2.entity_id')); 

任何帮助将不胜感激。

副本复印件和粘贴 app \ code \ core \ Mage \ Adminhtml \ Block \ Sales \ Order \ Grid.php

http://opensource.org/licenses/osl-3.0.php *如果您没有收到许可证副本,并且无法通过万维网获得它,请发送电子邮件至 *至[email protected],以便我们可以立即向您发送一份副本。 * *免责声明 * *如果您希望将Magento升级到更新的 *版本,请不要编辑或添加到此文件。如果您想为您的 *需求定制Magento,请参阅http://www.magentocommerce.com了解更多信息。 * * @Category法师 * @package Mage_Adminhtml * @copyright版权(C)2013的Magento公司(http://www.magentocommerce.com) * @license http://opensource.org/licenses/osl-3.0.php开放软件许可证(OSL 3.0) */

/** 
* Adminhtml sales orders grid 
* 
* @category Mage 
* @package Mage_Adminhtml 
* @author  Magento Core Team <[email protected]> 
*/ 
class Mage_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_Grid 
{ 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->setId('sales_order_grid'); 
     $this->setUseAjax(true); 
     $this->setDefaultSort('created_at'); 
     $this->setDefaultDir('DESC'); 
     $this->setSaveParametersInSession(true); 
    } 

    /** 
    * Retrieve collection class 
    * 
    * @return string 
    */ 
    protected function _getCollectionClass() 
    { 
     return 'sales/order_grid_collection'; 
    } 

    protected function _prepareCollection() 
    { 
     $collection = Mage::getResourceModel($this->_getCollectionClass()); 
     $collection->getSelect()->joinLeft('sales_flat_order', 'main_table.entity_id = sales_flat_order.entity_id',array('total_qty_ordered')); 
     $collection->getSelect()->joinLeft(array('billing'=>'sales_flat_order_address'), 
     'main_table.entity_id = billing.parent_id AND billing.address_type="billing"',array('billing.postcode AS bp', 'billing.city AS bc', 'billing.email AS be', 'billing.telephone AS bt',)); 
     $collection->getSelect()->joinLeft('sales_flat_order_payment', 'main_table.entity_id = sales_flat_order_payment.parent_id',array('method')); 
     $this->setCollection($collection); 
     return parent::_prepareCollection(); 
    } 

    protected function _prepareColumns() 
    { 

     $this->addColumn('real_order_id', array(
     'header'=> Mage::helper('sales')->__('Order Id'), //Order #=order id 
     'width' => '30px', 
     'type'=> 'text', 
     'index' => 'increment_id', 
     'filter_index' => 'main_table.increment_id', 
     )); 

     if (!Mage::app()->isSingleStoreMode()) { 
      $this->addColumn('store_id', array(
       'header' => Mage::helper('sales')->__('Purchased'), 
       'index'  => 'store_id', 
       'filter_index' => 'main_table.store_id', 
       'type'  => 'store', 
       'width'  => '30', 
       'store_view'=> true, 
       'display_deleted' => true, 
      )); 
     } 

     $this->addColumn('created_at', array(
      'header' => Mage::helper('sales')->__('Purchased On'), 
      'index' => 'created_at', 
      'filter_index' => 'main_table.created_at', 
      'type' => 'datetime', 
      'width' => '100px', 
     )); 

     /*$this->addColumn('billing_name', array(
      'header' => Mage::helper('sales')->__('Bill to Name'), 
      'index' => 'billing_name', 
      'filter_index' => 'main_table.billing_name', 
     ));*/ 

     $this->addColumn('shipping_name', array(
      'header' => Mage::helper('sales')->__('Ship to Name'), 
      'index' => 'shipping_name', 
      'filter_index' => 'main_table.shipping_name', 
     )); 

     $this->addColumn('base_grand_total', array(
      'header' => Mage::helper('sales')->__('G.T. (Base)'), 
      'index' => 'base_grand_total', 
      'filter_index' => 'main_table.base_grand_total', 
      'type' => 'currency', 
      'currency' => 'base_currency_code', 
     )); 

     /*$this->addColumn('grand_total', array(
      'header' => Mage::helper('sales')->__('G.T. (Purchased)'), 
      'index' => 'grand_total', 
      'filter_index' => 'main_table.grand_total', 
      'type' => 'currency', 
      'currency' => 'order_currency_code', 
     ));*/ 

     $this->addColumn('total_qty_ordered', array(
     'header' => Mage::helper('sales')->__('Qty'), 
     'index' => 'total_qty_ordered', 
     'filter_index' => 'sales_flat_order.total_qty_ordered', 
     )); 
     $this->addColumn('bp', array(
     'header' => Mage::helper('sales')->__('Pincode'), 
     'index' => 'bp', 
     'width' => '60px', 
     'filter_index' => 'billing.postcode' 
     )); 
     $this->addColumn('bc', array(
     'header' => Mage::helper('sales')->__('City'), 
     'index' => 'bc', 
     'width' => '60px', 
     'filter_index' => 'billing.city' 
     )); 
     /*$this->addColumn('be', array(
     'header' => Mage::helper('sales')->__('E-mail'), 
     'index' => 'be', 
     'width' => '60px', 
     'filter_index' => 'billing.email' 
     ));*/ 
     $this->addColumn('bt', array(
     'header' => Mage::helper('sales')->__('Mobile'), 
     'index' => 'bt', 
     'width' => '60px', 
     'filter_index' => 'billing.telephone' 
     )); 
     $this->addColumn('method', array(
     'header' => Mage::helper('sales')->__('Method'), 
     'index' => 'method', 
     'filter_index' => 'sales_flat_order_payment.method', 
     )); 
     $this->addColumn('status', array(
      'header' => Mage::helper('sales')->__('Status'), 
      'index' => 'status', 
      'filter_index' => 'main_table.status', 
      'type' => 'options', 
      'width' => '70px', 
      'options' => Mage::getSingleton('sales/order_config')->getStatuses(), 
     )); 

     if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) { 
      $this->addColumn('action', 
       array(
        'header' => Mage::helper('sales')->__('Action'), 
        'width'  => '50px', 
        'type'  => 'action', 
        'getter'  => 'getId', 
        'actions' => array(
         array(
          'caption' => Mage::helper('sales')->__('View'), 
          'url'  => array('base'=>'*/sales_order/view'), 
          'field' => 'order_id' 
         ) 
        ), 
        'filter' => false, 
        'sortable' => false, 
        'index'  => 'stores', 
        'is_system' => true, 
      )); 
     } 
     $this->addRssList('rss/order/new', Mage::helper('sales')->__('New Order RSS')); 

     $this->addExportType('*/*/exportCsv', Mage::helper('sales')->__('CSV')); 
     $this->addExportType('*/*/exportExcel', Mage::helper('sales')->__('Excel XML')); 

     return parent::_prepareColumns(); 
    } 

    protected function _prepareMassaction() 
    { 
     $this->setMassactionIdField('entity_id'); 
     $this->getMassactionBlock()->setFormFieldName('order_ids'); 
     $this->getMassactionBlock()->setUseSelectAll(false); 

     if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/cancel')) { 
      $this->getMassactionBlock()->addItem('cancel_order', array(
       'label'=> Mage::helper('sales')->__('Cancel'), 
       'url' => $this->getUrl('*/sales_order/massCancel'), 
      )); 
     } 

     if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/hold')) { 
      $this->getMassactionBlock()->addItem('hold_order', array(
       'label'=> Mage::helper('sales')->__('Hold'), 
       'url' => $this->getUrl('*/sales_order/massHold'), 
      )); 
     } 

     if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/unhold')) { 
      $this->getMassactionBlock()->addItem('unhold_order', array(
       'label'=> Mage::helper('sales')->__('Unhold'), 
       'url' => $this->getUrl('*/sales_order/massUnhold'), 
      )); 
     } 

     $this->getMassactionBlock()->addItem('pdfinvoices_order', array(
      'label'=> Mage::helper('sales')->__('Print Invoices'), 
      'url' => $this->getUrl('*/sales_order/pdfinvoices'), 
     )); 

     $this->getMassactionBlock()->addItem('pdfshipments_order', array(
      'label'=> Mage::helper('sales')->__('Print Packingslips'), 
      'url' => $this->getUrl('*/sales_order/pdfshipments'), 
     )); 

     $this->getMassactionBlock()->addItem('pdfcreditmemos_order', array(
      'label'=> Mage::helper('sales')->__('Print Credit Memos'), 
      'url' => $this->getUrl('*/sales_order/pdfcreditmemos'), 
     )); 

     $this->getMassactionBlock()->addItem('pdfdocs_order', array(
      'label'=> Mage::helper('sales')->__('Print All'), 
      'url' => $this->getUrl('*/sales_order/pdfdocs'), 
     )); 

     $this->getMassactionBlock()->addItem('print_shipping_label', array(
      'label'=> Mage::helper('sales')->__('Print Shipping Labels'), 
      'url' => $this->getUrl('*/sales_order_shipment/massPrintShippingLabel'), 
     )); 

     return $this; 
    } 

    public function getRowUrl($row) 
    { 
     if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) { 
      return $this->getUrl('*/sales_order/view', array('order_id' => $row->getId())); 
     } 
     return false; 
    } 

    public function getGridUrl() 
    { 
     return $this->getUrl('*/*/grid', array('_current'=>true)); 
    } 

}