Currently I'm getting Customer name, email and product amount, price in Abdandont cart reports.
I am getting reports on following page in Magento ver. 1.9.2.4 Admin panel. System > Shopping Basket > Abandoned Baskets
I have tried to add manually an additional field for phone number in magento abandoned carts grid.
But Its not capturing phone number, and field displays empty results. I have used following code:
<?php
/**
* Adminhtml abandoned shopping carts report grid block
*
* @category Mage
* @package Mage_Adminhtml
* @author Magento Core Team <[email protected]>
*/
class Mage_Adminhtml_Block_Report_Shopcart_Abandoned_Grid extends Mage_Adminhtml_Block_Report_Grid_Shopcart
{
public function __construct()
{
parent::__construct();
$this->setId('gridAbandoned');
}
protected function _prepareCollection()
{
/** @var $collection Mage_Reports_Model_Resource_Quote_Collection */
$collection = Mage::getResourceModel('reports/quote_collection');
$filter = $this->getParam($this->getVarNameFilter(), array());
if ($filter) {
$filter = base64_decode($filter);
parse_str(urldecode($filter), $data);
}
if (!empty($data)) {
$collection->prepareForAbandonedReport($this->_storeIds, $data);
} else {
$collection->prepareForAbandonedReport($this->_storeIds);
}
// var_dump($collection);
// die();
//Custom Join to show phone number
//
// Get customer telephone.
$collection->getSelect()
->joinLeft(
array('table_billing'=>'customer_entity_int'),
('table_billing.entity_id=main_table.customer_id AND table_billing.attribute_id=31'), // 'default_billing' attribute id = 13
array('table_billing_value'=>'value')
)
->joinLeft(
array('table_billing_telephone'=>'customer_address_entity_varchar'),
('table_billing_telephone.entity_id=`table_billing`.`value` AND table_billing_telephone.attribute_id=31'), // 'telephone' attribute id = 31
array('telephone'=>'value')
);
// var_dump($collection);
// die();
$this->setCollection($collection);
return parent::_prepareCollection();
//return Mage_Adminhtml_Block_Report_Grid_Shopcart::_prepareCollection();
}
protected function _addColumnFilterToCollection($column)
{
$field = ( $column->getFilterIndex() ) ? $column->getFilterIndex() : $column->getIndex();
$skip = array('subtotal', 'customer_name', 'email'/*, 'created_at', 'updated_at'*/);
if (in_array($field, $skip)) {
return $this;
}
parent::_addColumnFilterToCollection($column);
return $this;
}
protected function _prepareColumns()
{
$this->addColumn('customer_name', array(
'header' =>Mage::helper('reports')->__('Customer Name'),
'index' =>'customer_name',
'sortable' =>false
));
$this->addColumn('email', array(
'header' =>Mage::helper('reports')->__('Email'),
'index' =>'email',
'sortable' =>false
));
$this->addColumn('telephone', array(
'header' =>Mage::helper('reports')->__('Phone'),
'index' =>'telephone',
'filter_index' => 'table_billing.attribute_id',
'sortable' =>false
));
$this->addColumn('items_count', array(
'header' =>Mage::helper('reports')->__('Number of Items'),
'width' =>'80px',
'align' =>'right',
'index' =>'items_count',
'sortable' =>false,
'type' =>'number'
));
$this->addColumn('items_qty', array(
'header' =>Mage::helper('reports')->__('Quantity of Items'),
'width' =>'80px',
'align' =>'right',
'index' =>'items_qty',
'sortable' =>false,
'type' =>'number'
));
if ($this->getRequest()->getParam('website')) {
$storeIds = Mage::app()->getWebsite($this->getRequest()->getParam('website'))->getStoreIds();
} else if ($this->getRequest()->getParam('group')) {
$storeIds = Mage::app()->getGroup($this->getRequest()->getParam('group'))->getStoreIds();
} else if ($this->getRequest()->getParam('store')) {
$storeIds = array((int)$this->getRequest()->getParam('store'));
} else {
$storeIds = array();
}
$this->setStoreIds($storeIds);
$currencyCode = $this->getCurrentCurrencyCode();
$this->addColumn('subtotal', array(
'header' => Mage::helper('reports')->__('Subtotal'),
'width' => '80px',
'type' => 'currency',
'currency_code' => $currencyCode,
'index' => 'subtotal',
'sortable' => false,
'renderer' => 'adminhtml/report_grid_column_renderer_currency',
'rate' => $this->getRate($currencyCode),
));
$this->addColumn('coupon_code', array(
'header' =>Mage::helper('reports')->__('Applied Coupon'),
'width' =>'80px',
'index' =>'coupon_code',
'sortable' =>false
));
$this->addColumn('created_at', array(
'header' =>Mage::helper('reports')->__('Created At'),
'width' =>'170px',
'type' =>'datetime',
'index' =>'created_at',
'filter_index'=>'main_table.created_at',
'sortable' =>false
));
$this->addColumn('updated_at', array(
'header' =>Mage::helper('reports')->__('Updated At'),
'width' =>'170px',
'type' =>'datetime',
'index' =>'updated_at',
'filter_index'=>'main_table.updated_at',
'sortable' =>false
));
$this->addColumn('remote_ip', array(
'header' =>Mage::helper('reports')->__('IP Address'),
'width' =>'80px',
'index' =>'remote_ip',
'sortable' =>false
));
$this->addExportType('*/*/exportAbandonedCsv', Mage::helper('reports')->__('CSV'));
$this->addExportType('*/*/exportAbandonedExcel', Mage::helper('reports')->__('Excel XML'));
return parent::_prepareColumns();
}
public function getRowUrl($row)
{
return $this->getUrl('*/customer/edit', array('id'=>$row->getCustomerId(), 'active_tab'=>'cart'));
}
}
I took help from here: Collection loads wrong data?
I've made changes in following file:
/public_html/app/code/local/Mage/Adminhtml/Block/Report/Shopcart/Abandoned/Grid.php
but it did not work. Can you please guide me through.
The attribute ID i have double checked from database and its 31 for phone number.