Magento在sales./order网格中显示错误的总记录 [英] Magento showing wrong total records in sales./order grid
问题描述
-
我已经在销售/订单网格的grid.php文件中手动添加了四列。
-
现在它显示的记录总数错误。
有超过1500条记录,但它只显示1190. -
所以这里是代码grid.php文件。
-
现在我写了我的代码用于连接表并在_prepareCollections()函数中从网格访问它。
在_addcolumns()函数中添加了4列。我正在添加付款方式,Sku,标题,track_number。 I have manually added four columns in grid.php file for sales/order grid.
Now it's showing the wrong count in the total records.
There are more than 1500 records, but it shows only 1190.
So here is the code grid.php file.
<?php class Mage_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_Grid { public function callback_skus($value, $row, $column, $isExport) { $increment_id = $value; $_order = Mage::getModel('sales/order')->loadByIncrementId($increment_id); $_items = $_order->getAllItems(); $skus=""; foreach ($_items as $item) { $skus .= $item->getSku()."<br />"; } return $skus; } 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()->join('sales_flat_order_payment', 'sales_flat_order_payment.parent_id = main_table.entity_id',array('method')); $collection->getSelect()->group('main_table.entity_id'); $collection->getSelect()->group('sales_flat_order_payment.parent_id'); $collection->getSelect()->join('sales_flat_shipment_track', 'main_table.entity_id = sales_flat_shipment_track.order_id',array('track_number'=> new Zend_Db_Expr('group_concat(DISTINCT `sales_flat_shipment_track`.track_number SEPARATOR ", ")'),'title' => new Zend_Db_Expr('(SELECT group_concat(`sales_flat_shipment_track`.title SEPARATOR ", ")FROM `sales_flat_shipment_track` As `sales_flat_shipment_track` WHERE `main_table`.`entity_id` = `sales_flat_shipment_track`.`order_id` )'))); $collection->getSelect()->join('sales_flat_order_address', "main_table.entity_id = sales_flat_order_address.parent_id AND sales_flat_order_address.address_type='shipping'",array('country_id')); $collection->getSelect()->joinLeft('sales_flat_order_item', 'main_table.entity_id = sales_flat_order_item.order_id',array('sku')); $collection->getSelect()->group('main_table.entity_id'); $this->setCollection($collection); $orders = Mage::getResourceModel('sales/order_collection'); foreach($orders as $order){ $items = $order->getAllVisibleItems(); foreach($items as $item){ $sku = $item->getSku(); } } $collection->getSize(); $collection->count(); return parent::_prepareCollection(); } public function count() { $this->load(); return count($this->_prepareColumns); } protected function _prepareColumns() { $this->addColumn('sku', array( 'header' => Mage::helper('sales')->__('SKU#'), 'index' => 'increment_id', 'width' => '80px', 'frame_callback' => array($this, 'callback_skus'), 'filter_index' => 'sales_flat_order_item.sku', )); $this->addColumn('real_order_id', array( 'header'=> Mage::helper('sales')->__('Order #'), 'width' => '80px', 'type' => 'text', 'index' => 'increment_id', )); $this->addColumn('country_id', array( 'header'=> Mage::helper('sales')->__('Shipping Country'), 'width' => '80px', 'type' => 'text', 'index' => 'country_id', )); $this->addColumn('method', array( 'header'=> Mage::helper('sales')->__('Payment Method'), 'width' => '80px', 'type' => 'text', 'index' => 'method', )); if (!Mage::app()->isSingleStoreMode()) { $this->addColumn('store_id', array( 'header' => Mage::helper('sales')->__('Purchased From (Store)'), 'index' => 'store_id', 'type' => 'store', 'store_view'=> true, 'display_deleted' => true, )); } $this->addColumn('created_at', array( 'header' => Mage::helper('sales')->__('Purchased On'), 'index' => 'created_at', 'type' => 'datetime', 'width' => '100px', )); $this->addColumn('billing_name', array( 'header' => Mage::helper('sales')->__('Bill to Name'), 'index' => 'billing_name', )); $this->addColumn('shipping_name', array( 'header' => Mage::helper('sales')->__('Ship to Name'), 'index' => 'shipping_name', )); $this->addColumn('base_grand_total', array( 'header' => Mage::helper('sales')->__('G.T. (Base)'), 'index' => 'base_grand_total', 'type' => 'currency', 'currency' => 'base_currency_code', )); $this->addColumn('grand_total', array( 'header' => Mage::helper('sales')->__('G.T. (Purchased)'), 'index' => 'grand_total', 'type' => 'currency', 'currency' => 'order_currency_code', )); $this->addColumn('status', array( 'header' => Mage::helper('sales')->__('Status'), 'index' => 'status', 'type' => 'options', 'width' => '70px', 'options' => Mage::getSingleton('sales/order_config')->getStatuses(), )); $this->addColumn('track_number', array( 'header'=> Mage::helper('sales')->__(' Track Number'), 'width' => '80px', 'type' => 'text', 'index' => 'track_number', )); $this->addColumn('title', array( 'header'=> Mage::helper('sales')->__('Title'), 'width' => '80px', 'index' => 'title', )); 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', 'data-column' => 'action', ) ), '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)); } }
Now I have written my code for joining table and access it from the grid in _prepareCollections() function.
Added 4 columns in _addcolumns() function. I am adding payment method, Sku, title, track_number.
<?php
class Mage_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_Grid
{
public函数callback_skus($ value,$ row,$ column,$ isExport)
{
$ increment_id = $ value;
$ _order = Mage :: getModel('sales / order') - > loadByIncrementId($ increment_id);
$ _items = $ _order-> getAllItems();
$ skus =;
foreach($ _items as $ item)
{
$ skus。= $ item-> getSku()。< br />;
}
返回$ skus;
public function __construct()
{
parent :: __ construct();
$ this-> setId('sales_order_grid');
$ this-> setUseAjax(true);
$ this-> setDefaultSort('created_at');
$ this-> setDefaultDir('DESC');
$ this-> setSaveParametersInSession(true);
}
/ **
*检索集合类
*
* @return字符串
* /
保护函数_getCollectionClass ()
{
return'sales / order_grid_collection';
保护函数_prepareCollection()
{
$ collection = Mage :: getResourceModel($ this-> _getCollectionClass());
$ collection-> getSelect() - > join('sales_flat_order_payment','sales_flat_order_payment.parent_id = main_table.entity_id',array('method'));
$ collection-> getSelect() - > group('main_table.entity_id');
$ collection-> getSelect() - > group('sales_flat_order_payment.parent_id');
$ collection-> getSelect() - > join('sales_flat_shipment_track','main_table.entity_id = sales_flat_shipment_track.order_id',array('track_number'=> new Zend_Db_Expr('group_concat(DISTINCT `sales_flat_shipment_track`.track_number SEPARATOR,)'),'title'=> new Zend_Db_Expr('(SELECT group_concat(`sales_flat_shipment_track`.title SEPARATOR,)FROM`sales_flat_shipment_track` as`sales_flat_shipment_track` WHERE`main_table`。 `entity_id` =`sales_flat_shipment_track`.`order_id`)')));
$ collection-> getSelect() - > join('sales_flat_order_address',main_table.entity_id = sales_flat_order_address.parent_id AND sales_flat_order_address.address_type ='shipping',array('country_id'));
$ collection-> getSelect() - > joinLeft('sales_flat_order_item','main_table.entity_id = sales_flat_order_item.order_id',array('sku'));
$ collection-> getSelect() - > group('main_table.entity_id');
$ this-> setCollection($ collection);
$ orders = Mage :: getResourceModel('sales / order_collection');
foreach($ orders作为$ order){
$ items = $ order-> getAllVisibleItems();
foreach($ items作为$ item){
$ sku = $ item-> getSku();
}
}
$ collection-> getSize();
$ collection-> count();
返回parent :: _ prepareCollection();
public function count()
{
$ this-> load();
返回计数($ this-> _prepareColumns);
保护函数_prepareColumns()
{
$ this-> addColumn( 'sku',array(
'header'=> Mage :: helper('sales') - > __('SKU#'),
'index'=>'increment_id',
'width'=>'80px',
'frame_callback'=> array($ this,'callback_skus'),
'filter_index'=>'sales_flat_order_item.sku',
));
$ b $ this-> addColumn('real_order_id',array(
'header'=> Mage :: helper('sales') - > __('
'width'=>'80px',
'type'=>'text',
'index'=>'increment_id',
));
$ this-> addColumn('country_id',array(
'header'=> Mage :: helper('sales') - &__''Shipping Country') ,
'width'=>'80px',
'type'=>'text',
'index'=>'country_id',
));
$ b $ this-> addColumn('method',array(
'header'=> Mage :: helper('sales') - > __('付款方式'),
'width'=>'80px',
'type'=>'text',
'index'=>'method',
));
$ b if(!Mage :: app() - > isSingleStoreMode()){
$ this-> addColumn('store_id',array(
'header'=> Mage :: helper('sales') - > __('Purchased From(Store)'),
'index'=>'store_id',
'type' =>'store',
'store_view'=> true,
'display_deleted'=> true,
));
$ b $ this-> addColumn('created_at',array(
'header'=> Mage :: helper('sales') - > __( '已购买'),
'index'=>'created_at',
'type'=>'datetime',
'width'=>'100px',
));
$ this-> addColumn('billing_name',array(
'header'=> Mage :: helper('sales') - > __('Bill to Name' ),
'index'=>'billing_name',
));
$ this-> addColumn('shipping_name',array(
'header'=> Mage :: helper('sales') - > __('Ship to Name' ),
'index'=>'shipping_name',
));
$ this-> addColumn('base_grand_total',array(
'header'=> Mage :: helper('sales') - > __('GT(Base) '),
'index'=>'base_grand_total',
'type'=>'currency',
'currency'=>'base_currency_code',
) );
$ this-> addColumn('grand_total',array(
'header'=> Mage :: helper('sales') - > __('GT(购买) '),
'index'=>'grand_total',
'type'=>'currency',
'currency'=>'order_currency_code',
) );
$ this-> addColumn('status',array(
'header'=> Mage :: helper('sales') - &__''Status'),
'index'=>'status',
'type'=>'options',
'width'=>'70px',
'options'= > Mage :: getSingleton('sales / order_config') - > getStatuses(),
));
$ this-> addColumn('track_number',array(
'header'=> Mage :: helper('sales') - &__''Track Number') ,
'width'=>'80px',
'type'=>'text',
'index'=>'track_number',
));
$ b $ this-> addColumn('title',array(
'header'=> Mage :: helper('sales') - > __(' Title'),
'width'=>'80px',
'index'=>'title',
));
$ b $ if(Mage :: getSingleton('admin / session') - > isAllowed('sales / order / actions / view')){
$ this-> ;
'header'=> Mage :: helper('sales') - > __('Action'),
'width'=' >'50px',
'type'=>'action',
'getter'=>'getId',
'actions'=> array(
数组(
'caption'=> Mage :: helper('sales') - &__('View'),
'url'=> array('base'=>' * / sales_order / view'),
'field'=>'order_id',
'data-column'=>'action',
)
),
'fi lter'=> false,
'sortable'=> false,
'index'=> 'stores',
'is_system'=>真,
));
}
$ 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'));
返回parent :: _ prepareColumns();
保护函数_prepareMassaction()
{
$ this-> setMassactionIdField('entity_id');
$ this-> getMassactionBlock() - > setFormFieldName('order_ids');
$ this-> getMassactionBlock() - > setUseSelectAll(false); $ ma $ :: 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'),
));
$ b $ 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') - > __ ('全部打印'),
'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'),
));
返回$ this;
}
public function getRowUrl($ row)
{
if(Mage :: getSingleton('admin / session') - > isAllowed('sales / ('order_id'=> $ row-> getId()));} $ {
return $ this-> getUrl('* / sales_order / view'
}
返回false;
$ b $ public function getGridUrl()
{
return $ this-> getUrl('* / * / grid',array('_ current'=> ;真正));
}
}
问题
总共找到了1190个记录。
但它应该显示所有1500条记录。
请让我知道我必须做什么。
我已经得到了解决方案(瑞恩帮助我)。因此,我们需要在sales_flat_shipment_track和sales_flat_order_payment上使用 joinLeft。
code>
因此它有效。 ! :)
I will try my best to explain what I am doing.
Problem
total records 1190 found.
But it should show all 1500 records. Please let me know what I have to do.
Also please refer the link for my previous problem my previous problem link
I have got the solution(Ryan helped me out). There will not be always all the shipment tracking number and also the payment.
So here we need to use joinLeft on sales_flat_shipment_track and sales_flat_order_payment.
Hence it works. ! :)
这篇关于Magento在sales./order网格中显示错误的总记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!