Magento grid filter_condition_callback ignored? in Magento ver. 1.9.4.3
Help appreciated! Stuck 😉
We added a column to both the order and the product grid. This works fine. We then added a filter_condition_callback
.. this has worked for years
Recently we updated to Magento ver. 1.9.4.3 the LTS version found here https://github.com/OpenMage/magento-lts
Since then filter_condition_callback
seems to be completely ignored. We added an EXIT cluase in the method but nothing happens!
This is our code
$block->addColumnAfter('warehouse',
array(
'header' => Mage::helper('safemage_multiinventory')->__('Warehouse'),
'type' => 'options',
'sortable' => false,
'index' => 'main_table.warehouse_ids',
'options' => $this->getActiveWarehousesArray(),
'frame_callback' => array($this, 'showWarehouseInOrder'),
'filter_condition_callback' => array($this, 'filterOrderWarehouseCondition'),
'width' => '120px'
),
'shipping_name'
);
and
public function filterOrderWarehouseCondition($collection, $column)
{
if (!$value = $column->getFilter()->getValue()) {
return $this;
}
$select = $collection->getSelect();
$select->joinLeft(
array('warehouse_filter_tbl' => $collection->getTable('safemage_multiinventory/warehouse_order_item')),
'warehouse_filter_tbl.order_id = main_table.entity_id AND warehouse_filter_tbl.qty <> 0',
array());
$collection->addFilter('warehouse_filter_tbl.warehouse_id', array('in' => $value));
return $this;
}
question: what is going on here and why is the callback method ignored? The strange thing is that we have other grids where the same callback seems to be accessed … and here it works fine? duh??!
Tips and ideas welcome 😉
complete trace, but here it can be seen that Magento makes no effort to find and use the filter_condition_callback
invalid attribute name: warehouse_ids
#0 app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(1295): Mage::exception('Mage_Eav', 'Invalid attribu...')
#1 app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(1388): Mage_Eav_Model_Entity_Collection_Abstract->_addAttributeJoin('warehouse_ids', 'inner')
#2 app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(322): Mage_Eav_Model_Entity_Collection_Abstract->_getAttributeConditionSql('warehouse_ids', Array, 'inner')
#3 app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php(1446): Mage_Eav_Model_Entity_Collection_Abstract->addAttributeToFilter('warehouse_ids', Array, 'inner')
#4 app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(342): Mage_Catalog_Model_Resource_Product_Collection->addAttributeToFilter('warehouse_ids', Array)
#5 app/code/core/Mage/Adminhtml/Block/Widget/Grid.php(472): Mage_Eav_Model_Entity_Collection_Abstract->addFieldToFilter('warehouse_ids', Array)
#6 app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php(142): Mage_Adminhtml_Block_Widget_Grid->_addColumnFilterToCollection(Object(Mage_Adminhtml_Block_Widget_Grid_Column))
#7 app/code/core/Mage/Adminhtml/Block/Widget/Grid.php(457): Mage_Adminhtml_Block_Catalog_Product_Grid->_addColumnFilterToCollection(Object(Mage_Adminhtml_Block_Widget_Grid_Column))
#8 app/code/community/BL/CustomGrid/Model/Grid/Rewriter/Eval.php(39) : eval()'d code(88): Mage_Adminhtml_Block_Widget_Grid->_setFilterValues(Array)
#9 app/code/core/Mage/Adminhtml/Block/Widget/Grid.php(534): BL_CustomGrid_Block_Rewrite_Mage_Adminhtml_Block_Catalog_Product_Grid->_setFilterValues(Array)
#10 app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php(125): Mage_Adminhtml_Block_Widget_Grid->_prepareCollection()
#11 app/code/community/BL/CustomGrid/Model/Grid/Rewriter/Eval.php(39) : eval()'d code(107): Mage_Adminhtml_Block_Catalog_Product_Grid->_prepareCollection()
#12 app/code/community/BL/CustomGrid/Model/Grid/Rewriter/Eval.php(39) : eval()'d code(434): BL_CustomGrid_Block_Rewrite_Mage_Adminhtml_Block_Catalog_Product_Grid->_prepareCollection()
#13 app/code/community/BL/CustomGrid/Model/Observer.php(500): BL_CustomGrid_Block_Rewrite_Mage_Adminhtml_Block_Catalog_Product_Grid->blcg_finishPrepareCollection()
#14 app/code/community/BL/CustomGrid/Model/Grid/Rewriter/Eval.php(39) : eval()'d code(104): BL_CustomGrid_Model_Observer->afterGridPrepareCollection(Object(BL_CustomGrid_Block_Rewrite_Mage_Adminhtml_Block_Catalog_Product_Grid))
#15 app/code/core/Mage/Adminhtml/Block/Widget/Grid.php(644): BL_CustomGrid_Block_Rewrite_Mage_Adminhtml_Block_Catalog_Product_Grid->_prepareCollection()
#16 app/code/core/Mage/Adminhtml/Block/Widget/Grid.php(651): Mage_Adminhtml_Block_Widget_Grid->_prepareGrid()
#17 app/code/core/Mage/Core/Block/Abstract.php(926): Mage_Adminhtml_Block_Widget_Grid->_beforeToHtml()
#18 app/code/core/Mage/Core/Block/Text/List.php(43): Mage_Core_Block_Abstract->toHtml()
#19 app/code/core/Mage/Core/Block/Abstract.php(927): Mage_Core_Block_Text_List->_toHtml()
#20 app/code/core/Mage/Core/Model/Layout.php(555): Mage_Core_Block_Abstract->toHtml()
#21 app/code/core/Mage/Core/Controller/Varien/Action.php(390): Mage_Core_Model_Layout->getOutput()
#22 app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php(307): Mage_Core_Controller_Varien_Action->renderLayout()
#23 app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Adminhtml_Catalog_ProductController->gridAction()
#24 app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('grid')
#25 app/code/core/Mage/Core/Controller/Varien/Front.php(174): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#26 app/code/core/Mage/Core/Model/App.php(381): Mage_Core_Controller_Varien_Front->dispatch()
#27 app/Mage.php(745): Mage_Core_Model_App->run(Array)
#28 index.php(109): Mage::run('STORENAME', 'store')
#29 {main}