2013-06-24 3 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() приходит пустой. Он входит как ".

Edit:

Дальнейшее исследование привело меня к более конкретной проблемы ..

Сво ->collectTotals()->save();, что делает все беспорядок .. По какой-то причине, если я удалить их он отлично работает, но купон не применяется.

Как это можно исправить?

+0

Проверьте значение $ couponCode. 'var_dump ($ couponCode);' –

+0

$ couponCode - это число, которое я ввел в форму ... , поскольку вы можете видеть, что его печатают уже в ошибке. – user2312281

+0

Это может привести к тому, что ваш '$ couponCode' станет пустым:' strlen ($ couponCode)? $ couponCode: '' ' –

ответ

2

Это обычная ошибка Magento из этой версии, в то время как они сказали, что эта ошибка исправлена, но это не так. Также в журнале отслеживания ошибок Mangeto все еще показывается, что проблема до сих пор продолжается. Вот что я нашел из https://github.com/husseycoding/cartrulefix:

Корзины Цена Правила Фикса При создании правила корзину цен в Magento CE 1.9 и с помощью «Стоп Дополнительных правил обработки», логика была изменена с 1.8 CE и в настоящее время недостатков , Эта ошибочная логика теперь прекращает правильное применение правил с несколькими товарами в корзине и не рассматривает «Остановить дальнейшие обработки правил» на уровне позиции. Это означает, что вы получите неправильные суммы скидки, применяемые в соответствии отчета об ошибке здесь:

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

Это расширение исправляет недостатки логики и причины «Стоп Далее Правила обработка» будет рассматриваться на уровне позиции, позволяя правила быть обрабатывается для всех предметов в корзине.

+0

Возможно, вы также захотите упомянуть, что вы являетесь автором этого расширения, иначе это выглядит как спам. – andrewsi