Magento - 优惠券在状态更改后应用,而不是在订单上

Magento - Coupon to be applied after status change and not on order place

我基本上只想在订单状态更改为处理中后才将优惠券应用于订单。调试后,我了解到在 sales_order_place_after 事件中,在文件 app/code/core/Mage/SalesRule/Model/Observer.php 中使用函数 sales_order_afterPlace.

调用了观察者

我想覆盖此观察者以添加一个条件来检查订单状态,然后才继续使用优惠券。

此外,我想覆盖 config.xml 以使用事件订单状态更改或订单保存事件而不是订单下达事件。

嗯,这就是我的计算方法。

在我的 etc/modules/Namespace_Package.xml 中,我添加了一个 depends 标签:

<depends>
  <Mage_SalesRule/>
</depends>

并在我的 config.xml 中添加了以下代码:

<events>
    <sales_order_place_after>
        <observers>
            <salesrule>
                <type>disabled</type>
            </salesrule>
        </observers>
    </sales_order_place_after>
    <sales_order_save_after>
        <observers>
            <salesrule>
                <class>salesrule/observer</class>
                <method>sales_order_afterPlace</method>
            </salesrule>
        </observers>
    </sales_order_save_after>
</events>

并且在模块标签中我不得不以这种方式覆盖观察者:

<models>
    <modulename>
        <class>Namespace_Package_Model</class>
    </modulename>
    <salesrule>
        <rewrite>
           <observer>Namespace_Package_Model_Salesrule_Observer</observer>
        </rewrite>
    </salesrule>
</models>