Magento - Adminhtml - 如何隐藏具有特定状态的订单?

Magento - Adminhtml - How to hide orders with specific status?

我正在使用 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 的所有订单,但我也不知道如何为管理面板隐藏它们。我需要那个。

这是完整的 observer.php:http://pastebin.com/c60bMKbj

如果您需要任何其他文件,请告诉我。 我希望你能帮助我。

提前致谢!

请尝试添加此行:

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;
}