magento优惠券代码无效


magento coupon code is not valid

我使用的是magento 1.7.0.2。出于某种原因,我一直得到"优惠券代码"XXX"无效。"我调查了一点,发现了问题所在,但我不知道如何解决。

在文件中:''app''code''core''mage''checkout''controlles''cartController.php

$couponCode = (string) $this->getRequest()->getParam('coupon_code');
if ($this->getRequest()->getParam('remove') == 1) {
    $couponCode = '';
}
$oldCouponCode = $this->_getQuote()->getCouponCode();
if (!strlen($couponCode) && !strlen($oldCouponCode)) {
    $this->_goBack();
    return;
}
try {
    $this->_getQuote()->getShippingAddress()->setCollectShippingRates(true);
    $this->_getQuote()->setCouponCode(strlen($couponCode) ? $couponCode : '')
    ->collectTotals()
    ->save();
    if ($couponCode) {
        if ($couponCode == $this->_getQuote()->getCouponCode()) {
            $this->_getSession()->addSuccess(
                $this->__('Coupon code "%s" was applied.',Mage::helper('core')->htmlEscape($couponCode))
                );
        }
        else {
            $this->_getSession()->addError(
            $this->__('Coupon code "%s" is not valid.', Mage::helper('core')->htmlEscape($couponCode))
                );
        }
    } else {
        $this->_getSession()->addSuccess($this->__('Coupon code was canceled.'));
    }

问题是$this->_getQuote()->getCouponCode()为空。它以"的形式出现。

编辑:

经过进一步的调查,我发现了一个更具体的问题。。

->collectTotals()->save();搞得一团糟。。出于某种原因,如果我删除它们,它运行得很好,但优惠券不适用。

如何解决这个问题?

这是Magento在那个版本中的一个常见错误,他们告诉我们这个错误已经修复,但事实并非如此。同样,在Mangoto的bug跟踪器上,它仍然显示问题到目前为止是"正在进行中"。以下是我的发现https://github.com/husseycoding/cartrulefix:

购物车价格规则修正当在Magento CE 1.9中创建购物车价格规则并使用"停止进一步的规则处理"时,自1.8 CE以来,逻辑已经发生了变化,现在存在缺陷。这种有缺陷的逻辑现在停止了对购物车中多个产品正确应用规则,并且没有考虑在项目级别上"停止进一步的规则处理"。这意味着根据这里的错误报告,你得到了不正确的折扣金额:

http://www.magentocommerce.com/bug-tracking/issue/index/id/67

此扩展纠正了有缺陷的逻辑,并导致在项目级别考虑"停止进一步的规则处理",从而允许对购物车中的所有项目处理规则。