2013-06-24 109 views
0

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

文件中

:\应用\代码\核心\法师\结帐\控制器\ 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

检查$ couponCode的值。 'var_dump($ couponCode);' –

+0

$ couponCode是我在表格中输入的数字... ,因为您可以看到它已被打印在错误中。 – user2312281

+0

这可能会导致你的'$ couponCode'变成空白:'strlen($ couponCode)? $ couponCode:''' –

回答

2

这是Magento从该版本的一个常见的错误,虽然他们告诉这个错误是固定的,但它不是。同样在Mangeto的bug追踪器中,它仍然表明这个问题到目前为止一直是“进行中”。在这里我从https://github.com/husseycoding/cartrulefix发现:

购物车价格规则修正 当建立在Magento CE 1.9的购物车价格规则,并使用“停止进一步的规则处理”,逻辑已经从1.8 CE改变,现在是有缺陷。这个有缺陷的逻辑现在停止了规则正确应用于购物车中的多个产品,并且不考虑在项目级别停止进一步规则处理。这意味着你得到应用为每个bug报告在这里不正确的折扣金额:

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

这个扩展修正缺陷的逻辑和原因“停止进一步的规则处理”项目级别允许的规则是要考虑处理购物车中的所有物品。

+0

您可能还想提及您是该扩展程序的作者,否则这看起来像垃圾邮件。 – andrewsi