0

私はマジェント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 に答える