Проблема существует в двух разных местах. Один случай, если вы вошли в систему как пользователь с одним хранилищем, другой - как пользователь, который может фильтровать различные хранилища.
Один пользователь магазина
Решение, с которым я пошел, было переопределить метод addAttributeToFilter
в классе коллекции. Не зная точно, что изменение метода Enterprise_AdminGws_Model_Collections::addStoreAttributeToFilter
повлияет на другое поведение, я хотел этого избежать, и я обнаружил, что добавление индекса фильтра в Mage_Adminhtml_Block_Sales_Order_Grid
, поскольку Хавьер предположил, что не работает.
Вместо этого я добавил следующий метод к Mage_Sales_Model_Resource_Order_Grid_Collection
:
/**
* {@inheritdoc}
*/
public function addAttributeToFilter($attribute, $condition = null)
{
if (is_string($attribute) && 'store_id' == $attribute) {
$attribute = 'main_table.' . $attribute;
}
return parent::addFieldToFilter($attribute, $condition);
}
Патч можно найти здесь: https://gist.github.com/josephdpurcell/baf93992ff2d941d02c946aeccd48853
Многопользовательский пользователь
Если пользователь может фильтровать заказы по магазину в admin / sales_order, необходимо также внести следующие изменения в Mage_Adminhtml_Block_Sales_Order_Grid в строке 75:
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,
'filter_index' => 'main_table.store_id',
));
}
Патч можно найти здесь: https://gist.github.com/josephdpurcell/c96286a7c4d2f5d1fe92fb36ee5d0d5a