我使用的是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();
..
出于某种原因,如果我删除它们运行完美但优惠券不适用。
如何解决这个问题?
答案 0 :(得分:3)
这是Magento在该版本中的一个常见错误,他们告诉我这个错误已经修复,但事实并非如此。同样在Mangeto的bug追踪器中,它仍然显示问题是“进行中”直到现在。这是我从https://github.com/husseycoding/cartrulefix找到的:
购物车价格规则修复 在Magento CE 1.9中创建购物车价格规则并使用“停止进一步规则处理”时,逻辑自1.8 CE以来已经更改,现在存在缺陷。这个有缺陷的逻辑现在可以停止使用购物车中的多个产品正确应用规则,并且不会在项目级别考虑“停止进一步规则处理”。这意味着您根据此处的错误报告获得了错误的折扣金额:
http://www.magentocommerce.com/bug-tracking/issue/index/id/67
此扩展程序更正了有缺陷的逻辑,并导致在项目级别考虑“停止进一步规则处理”,允许对购物车中的所有项目处理规则。