Magento — Adminhtml — Как скрыть заказы с определенным статусом?

Я использую Magento 1.9.2 и использую собственное расширение.

Вот его конфигурационный файл:

<?xml version="1.0"?>
<config>
<modules>
<MageWorx_OrdersGrid>
<version>2.0.2</version>
</MageWorx_OrdersGrid>
</modules>

<admin>
<routers>
<adminhtml>
<args>
<modules>
<MageWorx_OrdersGrid after="Mage_Adminhtml">MageWorx_OrdersGrid_Adminhtml</MageWorx_OrdersGrid>
</modules>
</args>
</adminhtml>
</routers>
</admin>

<global>
<blocks>
<mageworx_ordersgrid>
<class>MageWorx_OrdersGrid_Block</class>
</mageworx_ordersgrid>
</blocks>

<models>

<mageworx_ordersgrid>
<class>MageWorx_OrdersGrid_Model</class>
<resourceModel>mageworx_ordersgrid_resource</resourceModel>
</mageworx_ordersgrid>

<mageworx_ordersgrid_resource>
<class>MageWorx_OrdersGrid_Model_Resource</class>
<entities>
<order_group>
<table>mageworx_ordersgrid_order_group</table>
</order_group>
</entities>
</mageworx_ordersgrid_resource>
</models>

<helpers>
<mageworx_ordersgrid>
<class>MageWorx_OrdersGrid_Helper</class>
</mageworx_ordersgrid>
</helpers>

<resources>
<mageworx_ordersgrid_setup>
<setup>
<module>MageWorx_OrdersGrid</module>
<class>MageWorx_OrdersGrid_Model_Resource_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</mageworx_ordersgrid_setup>
<mageworx_ordersgrid_write>
<connection>
<use>core_write</use>
</connection>
</mageworx_ordersgrid_write>
<mageworx_ordersgrid_read>
<connection>
<use>core_read</use>
</connection>
</mageworx_ordersgrid_read>
</resources>
</global>

<frontend>
<translate>
<modules>
<MageWorx_OrdersGrid>
<files>
<default>MageWorx_OrdersGrid.csv</default>
</files>
</MageWorx_OrdersGrid>
</modules>
</translate>
<layout>
<updates>
<mageworx_ordersgrid>
<file>mageworx_ordersgrid.xml</file>
</mageworx_ordersgrid>
</updates>
</layout>
<events>
<sales_order_collection_load_before>
<observers>
<mageworx_hide_deleted_orders>
<type>singleton</type>
<class>mageworx_ordersgrid/observer</class>
<method>hideDeletedOrders</method>
</mageworx_hide_deleted_orders>
</observers>
</sales_order_collection_load_before>
</events>
</frontend>

<adminhtml>
<events>
<sales_order_grid_collection_load_before>
<observers>
<enterprise_salesarchive>
<type>disabled</type>
</enterprise_salesarchive>
<mageworx_add_custom_columns_select>
<type>singleton</type>
<class>mageworx_ordersgrid/observer</class>
<method>addCustomColumnsSelect</method>
</mageworx_add_custom_columns_select>
</observers>
</sales_order_grid_collection_load_before>
<core_block_abstract_to_html_before>
<observers>
<mageworx_add_mass_actions>
<type>singleton</type>
<class>mageworx_ordersgrid/observer</class>
<method>addMassActionToSalesOrdersGrid</method>
</mageworx_add_mass_actions>
</observers>
</core_block_abstract_to_html_before>
<core_layout_block_create_after>
<observers>
<mageworx_add_custom_columns>
<type>singleton</type>
<class>mageworx_ordersgrid/observer</class>
<method>addCustomColumnsToSalesOrdersGrid</method>
</mageworx_add_custom_columns>
<mageworx_add_custom_columns_for_customer>
<type>singleton</type>
<class>mageworx_ordersgrid/observer</class>
<method>addCustomColumnsToCustomerOrdersGrid</method>
</mageworx_add_custom_columns_for_customer>
</observers>
</core_layout_block_create_after>
</events>
<layout>
<updates>
<mageworx_ordersgrid>
<file>mageworx_ordersgrid.xml</file>
</mageworx_ordersgrid>
</updates>
</layout>
<translate>
<modules>
<MageWorx_OrdersGrid>
<files>
<default>MageWorx_OrdersGrid.csv</default>
</files>
</MageWorx_OrdersGrid>
</modules>
</translate>
</adminhtml>

<default>
<mageworx_ordersmanagement>
<ordersgrid>
<enabled>1</enabled>
<enable_shipping_price_edition>1</enable_shipping_price_edition>
<enable_invoice_orders>1</enable_invoice_orders>
<send_invoice_email>0</send_invoice_email>
<enable_ship_orders>1</enable_ship_orders>
<send_shipment_email>0</send_shipment_email>
<enable_archive_orders>1</enable_archive_orders>
<days_before_orders_get_archived>0</days_before_orders_get_archived>
<archive_orders_status>canceled,closed,complete</archive_orders_status>
<enable_delete_orders>1</enable_delete_orders>
<hide_deleted_orders_for_customers>1</hide_deleted_orders_for_customers>
<enable_delete_orders_completely>1</enable_delete_orders_completely>
<grid_columns>
real_order_id,store_id,created_at,billing_name,shipping_name,base_grand_total,grand_total,status,order_group,action
</grid_columns>
<customer_grid_columns>increment_id,created_at,billing_name,shipping_name,grand_total,store_id,action
</customer_grid_columns>
<number_comments>3</number_comments>
<show_thumbnails>1</show_thumbnails>
<thumbnail_height>50</thumbnail_height>
</ordersgrid>
</mageworx_ordersmanagement>
</default>

<crontab>
<jobs>
<mageworx_ordersgrid_archive>
<schedule>
<cron_expr>0 0 * * *</cron_expr>
</schedule>
<run>
<model>mageworx_ordersgrid/observer::scheduledArchiveOrders</model>
</run>
</mageworx_ordersgrid_archive>
</jobs>
</crontab>

</config>

Затем я нашел эту функцию в наблюдателе:

public function hideDeletedOrders($observer)
{
$helper = $this->getMwHelper();
if ($helper->isEnabled() && $helper->isHideDeletedOrdersForCustomers()) {
/** @var Mage_Sales_Model_Resource_Order_Collection $orderCollection */
$orderCollection = $observer->getOrderCollection();
$orderCollection->addFieldToFilter('order_group_id', array('neq' => '2'));
}
}

И изменил это на это:

public function hideDeletedOrders($observer)
{
$helper = $this->getMwHelper();
if ($helper->isEnabled() && $helper->isHideDeletedOrdersForCustomers()) {
/** @var Mage_Sales_Model_Resource_Order_Collection $orderCollection */
$orderCollection = $observer->getOrderCollection();
$orderCollection->addFieldToFilter('order_group_id', array('neq' => '2'));
$orderCollection->addFieldToFilter('status',array('neq' => 'epaycc'));
}
}

Таким образом, я смог скрыть все заказы со статусом epaycc от внешнего интерфейса, но я не знаю, как скрыть их для панели администратора также. Я нуждаюсь в этом.

Вот полный наблюдающий.php: http://pastebin.com/c60bMKbj

Если вам нужен какой-то другой файл, просто дайте мне знать.
Я надеюсь, что вы можете мне помочь.

Заранее спасибо!

0

Решение

пожалуйста, попробуйте добавить эту строку:

public function addCustomColumnsSelect($observer)
{
$helper = $this->getMwHelper();
if ($helper->isEnabled()) {
Varien_Profiler::start('mw_addCustomColumnsSelect');
/** @var Mage_Sales_Model_Resource_Order_Grid_Collection $orderCollection */
$orderGridCollection = $observer->getOrderGridCollection();/** add this line - start*/
$orderGridCollection->addFieldToFilter('status', array('neq' => 'epaycc'));
/** add this line - end*//** @var MageWorx_OrdersGrid_Model_Grid $model */
$model = Mage::getModel('mageworx_ordersgrid/grid');
if (Mage::app()->getRequest()->getControllerName() == 'customer') {
if (Mage::app()->getRequest()->getActionName() != 'orders') {
return;
}
$listColumns = $helper->getCustomerGridColumns();
$model->modifyCustomerOrdersGridCollection($orderGridCollection, $listColumns);
} else {
$listColumns = $helper->getGridColumns();
$model->modifyOrdersGridCollection($orderGridCollection, $listColumns);
}
Varien_Profiler::stop('mw_addCustomColumnsSelect');
}

return;
}
1

Другие решения

Других решений пока нет …