Magento - 在状态更改后应用优惠券而不在订单地点

时间:2016-07-12 05:09:07

标签: magento magento-1.9

我希望只有在状态更改为处理后才能将优惠券应用于订单。调试后,我发现在sales_order_place_after事件中,在函数app/code/core/Mage/SalesRule/Model/Observer.php的文件sales_order_afterPlace中调用了一个观察者。

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

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

1 个答案:

答案 0 :(得分:0)

这就是我如何解决这个问题。

在我的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>