Magento记录优惠券代码使用的金额

时间:2012-07-07 22:13:52

标签: magento

我很清楚找出使用优惠券代码的次数(salesrule / coupon模型)。但是,我想知道如何拦截优惠券的使用并将其总额记录在表格中。

我试图通过覆盖Mage_Checkout_OnepageController的successAction()方法来做到这一点,但是如果我尝试使用

获取优惠券代码
$couponCode = (string) Mage::getSingleton('checkout/cart')->getQuote()->getCouponCode();

$ couponCode原来是一个空白字符串。看来,在调用successAction时,结帐/购物车单件已经被清空。 如何拦截“下订单”按钮,仍然可以获取客户使用的优惠券代码?

非常感谢所有帮助,我总是接受答案!

1 个答案:

答案 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()
        );
    }
}