我很清楚找出使用优惠券代码的次数(salesrule / coupon模型)。但是,我想知道如何拦截优惠券的使用并将其总额记录在表格中。
我试图通过覆盖Mage_Checkout_OnepageController的successAction()方法来做到这一点,但是如果我尝试使用
获取优惠券代码$couponCode = (string) Mage::getSingleton('checkout/cart')->getQuote()->getCouponCode();
$ couponCode原来是一个空白字符串。看来,在调用successAction时,结帐/购物车单件已经被清空。 如何拦截“下订单”按钮,仍然可以获取客户使用的优惠券代码?
非常感谢所有帮助,我总是接受答案!
答案 0 :(得分:1)
输入successAction
后,_quote
对象的checkout/cart
属性已无效。
但是,您仍然可以在successAction
输入时使用以下内容获取数据:
$oOrder = Mage::getModel('sales/order')
->load($this->getOnePage()->getCheckout()->getLastOrderId());
var_dump(
$oOrder->getCouponCode(),
$oOrder->getDiscountAmount(),
$oOrder->getGrandTotal()
);
但我建议为checkout_onepage_controller_success_action
事件创建一个观察者。这样你根本不必覆盖任何东西。在涉及Magento升级时通常无需维护。
这样的观察者的代码看起来像这样:
/**
* checkout_onepage_controller_success_action event observer
*
* @param object $oObserver
* @return null
*/
public function checkoutOnepageControllerSuccessAction($oObserver)
{
$aOrderId = $oObserver->getOrderIds();
foreach ($aOrder as $iOrderId) {
$oOrder = Mage::getModel('sales/order')->load($iOrderId);
var_dump(
$oOrder->getCouponCode(),
$oOrder->getDiscountAmount(),
$oOrder->getGrandTotal()
);
}
}