Please add below changes to your code.
You need to add GROUP BY entity_id
.
Add select query on collection like below.
$collection->getSelect()->joinLeft(
array('s' => new Zend_Db_Expr('(SELECT (o.grand_total - o.tax_amount) grand_excl_tax,'
. ' FROM ' . Mage::getSingleton('core/resource')->getTableName('sales/invoice') . ' AS o'
. ' GROUP BY entity_id)')),
"s.entity_id = main_table.entity_id",
array('grand_excl_tax')
);
After that add filter_index
in addColumn
:
$this->addColumn('grand_excl_tax', array(
'header' => Mage::helper('customer')->__('Amount Excl. Tax'),
'index' => 'grand_excl_tax',
'filter_index' => 's.grand_excl_tax',
'type' => 'currency',
'align' => 'right',
'currency' => 'order_currency_code',
));
I am tested it and it's working fine form me, After applying this there is not any issue on grid filter.
Let me know still if you face any issue.