我无法在装运网格页面中提取每个订单的公司名称。我正在尝试在装运网格中添加公司名称列。我将文件从/app/code/core/Mage/Adminhtml/Block/Sales/Shipment/Grid.php
复制到/app/code/local/Mage/Adminhtml/Block/Sales/Shipment/Grid.php
。我怀疑我必须在_prepareCollection()
函数中加入公司名称,或者
如何在SHIPMENT Grid中的Customer表单中添加已存在的公司名称?
<?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 :(得分:1)
在我看来,您需要在复制的文件中添加一列(用于公司名称),并添加额外的渲染器以显示您想要的数据。
将以下代码附加到 app / code / local / Mage / Adminhtml / Block / Sales / Shipment / 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'
));
将以下代码添加到 app / 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';
}
}
答案 1 :(得分: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();
}
}
}
}