我希望只有在状态更改为处理后才能将优惠券应用于订单。调试后,我发现在sales_order_place_after
事件中,在函数app/code/core/Mage/SalesRule/Model/Observer.php
的文件sales_order_afterPlace
中调用了一个观察者。
我想覆盖此观察者添加条件以检查订单状态,然后才继续使用优惠券。
此外,我想覆盖config.xml
使用事件订单状态更改或订单保存事件而不是订单地点事件。
答案 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>