结账时始终重新添加优惠券

时间:2017-03-16 15:59:39

标签: magento magento-1.9

我遇到了以下错误

  1. 将产品添加到购物车
  2. 申请优惠券代码
  3. 删除优惠券代码
  4. 优惠券代码不再显示/删除成功
  5. 进入结帐
  6. 继续结算和发货步骤
  7. 回到购物车
  8. 步骤#2的优惠券代码再次有效

1 个答案:

答案 0 :(得分:2)

这似乎是CE 1.9中的一个错误

Mage_Checkout_CartController :: couponPostAction()

中设置了新的会话值
$this->_getSession()->setCartCouponCode($couponCode);

恢复Mage_Checkout_Model_Type_Onepage :: _ setCartCouponCode()

中的优惠券代码
protected function _setCartCouponCode()
{
    if ($couponCode = $this->getCheckout()->getCartCouponCode()) {
        $this->getQuote()->setCouponCode($couponCode);
    }
    return $this;
}

我通过事件/观察者解决了它

    <events>
        <controller_action_predispatch_checkout_cart_couponPost>
            <observers>
                <remove_session_coupon_code>
                    <type>singleton</type>
                    <class>yourmodule/observer</class>
                    <method>removeCoupon</method>
                </remove_session_coupon_code>
            </observers>
        </controller_action_predispatch_checkout_cart_couponPost>
    </events>

public function removeCoupon(Varien_Event_Observer $observer)
{
    $controller = $observer->getControllerAction();
    if ($controller->getRequest()->getParam('remove') == 1) {
        Mage::getSingleton("checkout/session")->unsetData('cart_coupon_code');
    }
    return $this;
}