0

我正在使用 magento 1.7.0.2。出于某种原因,我不断收到“优惠券代码“XXX”无效。” 我调查了一下,发现问题是什么,但我不知道如何解决它。

在文件中:\app\code\core\mage\checkout\controllers\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();搞得一团糟。出于某种原因,如果我删除它们,它会运行得很好,但优惠券不适用。

如何解决这个问题?

4

1 回答 1

3

这是该版本中 Magento 的一个常见错误,而他们告诉该错误已修复,但事实并非如此。同样在 Mangeto 的错误跟踪器中,它仍然显示问题是“进行中”,直到现在。这是我从https://github.com/husseycoding/cartrulefix找到的:

购物车价格规则修复 在 Magento CE 1.9 中创建购物车价格规则并使用“停止进一步规则处理”时,自 1.8 CE 以来逻辑已更改,现在存在缺陷。这种有缺陷的逻辑现在会阻止规则正确应用于购物车中的多个产品,并且不会在项目级别考虑“停止进一步的规则处理”。这意味着您根据此处的错误报告应用了不正确的折扣金额:

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

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

于 2015-07-10T10:41:24.693 回答