2015-04-07 58 views
0

我无法拉出发货网格页面中每个订单的公司名称。我试图在发货网格中添加公司名称列。我将文件/app/code/core/Mage/Adminhtml/Block/Sales/Shipment/Grid.php复制到/app/code/local/Mage/Adminhtml/Block/Sales/Shipment/Grid.php。我怀疑在哪个表中我必须加入_prepareCollection()函数的公司名称或Magento在销售网格中的后端添加一列

如何在SHIPMENT网格的客户表单中添加已存在的公司名称?

<?php 

class Mage_Adminhtml_Block_Sales_Shipment_Grid extends Mage_Adminhtml_Block_Widget_Grid 
{ 

    /** 
    * Initialization 
    */ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->setId('sales_shipment_grid'); 
     $this->setDefaultSort('created_at'); 
     $this->setDefaultDir('DESC'); 
    } 

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

    /** 
    * Prepare and set collection of grid 
    * 
    * @return Mage_Adminhtml_Block_Widget_Grid 
    */ 
    protected function _prepareCollection() 
    { 
     $collection = Mage::getResourceModel($this->_getCollectionClass()); 
     $this->setCollection($collection); 
     return parent::_prepareCollection(); 
    } 

    /** 
    * Prepare and add columns to grid 
    * 
    * @return Mage_Adminhtml_Block_Widget_Grid 
    */ 
    protected function _prepareColumns() 
    { 
     $this->addColumn('increment_id', array(
      'header' => Mage::helper('sales')->__('Shipment #'), 
      'index'  => 'increment_id', 
      'type'  => 'text', 
     )); 

     $this->addColumn('created_at', array(
      'header' => Mage::helper('sales')->__('Date Shipped'), 
      'index'  => 'created_at', 
      'type'  => 'datetime', 
     )); 

     $this->addColumn('order_increment_id', array(
      'header' => Mage::helper('sales')->__('Order #'), 
      'index'  => 'order_increment_id', 
      'type'  => 'text', 
     )); 

     $this->addColumn('order_created_at', array(
      'header' => Mage::helper('sales')->__('Order Date'), 
      'index'  => 'order_created_at', 
      'type'  => 'datetime', 
     )); 
     $this->addColumn('company_name', array(
      'header' => Mage::helper('sales')->__('Company Name'), 
      'index'  => 'company_name', 
      'type'  => 'text', 
     )); 

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

     $this->addColumn('total_qty', array(
      'header' => Mage::helper('sales')->__('Total Qty'), 
      'index' => 'total_qty', 
      'type' => 'number', 
     )); 

     $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_shipment/view'), 
         'field' => 'shipment_id' 
        ) 
       ), 
       'filter' => false, 
       'sortable' => false, 
       'is_system' => true 
     )); 

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

     return parent::_prepareColumns(); 
    } 

    /** 
    * Get url for row 
    * 
    * @param string $row 
    * @return string 
    */ 
    public function getRowUrl($row) 
    { 
     if (!Mage::getSingleton('admin/session')->isAllowed('sales/order/shipment')) { 
      return false; 
     } 

     return $this->getUrl('*/sales_shipment/view', 
      array(
       'shipment_id'=> $row->getId(), 
      ) 
     ); 
    } 

    /** 
    * Prepare and set options for massaction 
    * 
    * @return Mage_Adminhtml_Block_Sales_Shipment_Grid 
    */ 
    protected function _prepareMassaction() 
    { 
     $this->setMassactionIdField('entity_id'); 
     $this->getMassactionBlock()->setFormFieldName('shipment_ids'); 
     $this->getMassactionBlock()->setUseSelectAll(false); 

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

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

     return $this; 
    } 

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

} 
+0

你可以粘贴你在Grid.php中更改的代码吗? – adrien54

回答

1

在我看来,你需要在你复制的文件添加一个列(公司名称),并添加一个额外的渲染,以显示您所需的数据。

  1. 追加下面应用程序/代码/本地/法师/ Adminhtml /座/销售/发货/ Grid.php

    $this->addColumn('company_name', array( 'header' => Mage::helper('sales')->__('Company Name'), 'index' => 'company_name', 'type' => 'text', 'renderer' => 'Mage_Adminhtml_Block_Sales_Shipment_Renderer_Info' ));

  2. 代码添加下面应用程序代码/code/local/Mage/Adminhtml/Block/Sales/Shipment/Renderer/Info.php

    <?php class Mage_Adminhtml_Block_Sales_Shipment_Renderer_Info extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract { public function render(Varien_Object $row) { return 'example.com'; } }

+0

谢谢@MilanChandro –

0

复制的核心文件到本地代码库 应用程序/代码/本地/法师/ Adminhtml /座/销售/发货/ Grid.php

追加在_prepareColumns下面的代码()函数

$this->addColumn('company_name', array( 
    'header' => Mage::helper('sales')->__('Company Name'), 
    'index' => 'company_name', 'type' => 'text', 
    'renderer' => 'Mage_Adminhtml_Block_Sales_Shipment_Renderer_Info')); 

应用程序/代码/本地/法师/ Adminhtml /座/销售/发货/渲染/ info.php的

<?php 

class Mage_Adminhtml_Block_Sales_Shipment_Renderer_Info extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract { 

public function render(Varien_Object $row) { 
    $order = Mage::getModel('sales/order')->load($row['order_id']); 
    if($order->getCustomerId() === NULL){ 
     echo "-"; 
    } 
    else { 
     $customer = Mage::getModel('customer/customer')->load($order->getCustomerId()); 
     $address_id = $customer->getDefaultBilling(); 
     if ((int)$address_id) 
     { 
      $address = Mage::getModel('customer/address')->load($address_id); 
      echo $address->getCompany(); 
     } 
    } 
} 

}

相关问题