0

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

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

$couponCode = (string) Mage::getSingleton('checkout/cart')->getQuote()->getCouponCode();

$couponCode 原来是一个空白字符串。看起来,在调用 successAction 时,checkout/cart 单例已经被清空了。我怎样才能拦截“下订单”按钮并仍然能够获得客户使用的优惠券代码?

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

4

1 回答 1

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()
        );
    }
}
于 2012-07-08T08:50:03.913 回答