Magento Удалить элемент из корзины / Удалить цитату Действие не выполнено - Ошибка в правилах цены - PullRequest
2 голосов
/ 03 февраля 2011

Кто-нибудь заметил, что цитата не удаляется должным образом? Например, переменная кода купона сохраняет значение после удаления товара из корзины.

Попытка:

1. Установите какое-либо правило корзины покупательской цены на товар и заставьте его отображать баннер в разделе заголовка.

2. Добавьте товар [только этот товар] в корзину / корзину, чтобы активировать правило и показать баннер на кассе / корзине.

3 . Удалите товар из корзины, и вы увидите баннер, который все еще отображается в разделе заголовка.

Примечание. Если у вас есть другой продукт в корзине, это не будет работать, потому что при удалении того, который вызвал правило и баннер, код Coupon будет заменен на тот, который принадлежит этому другому продукту в корзине. Так что эта ошибка работает только в том случае, если в корзине есть только тот продукт, который вызывает правило и баннер.

Если у кого-то есть решение по этому вопросу или он может повторить эти условия: я хотел бы поговорить о недостатке magento, чтобы правильно удалить продукт из корзины - что подразумевает правильное обновление цитаты.

- code/core/Mage/Sales/Model/Quote.php -> public function removeItem($itemId)

Найдено в Magento Enterprise Edition

1 Ответ

0 голосов
/ 08 августа 2014

Вы можете использовать событие sales_quote_remove_item для его исправления.

1) Создать новое расширение (вот хороший ответ, как это сделать: Как создать расширение Hello world в Magento? ) и добавьте следующий раздел в ваш config.xml:

<events>
    <sales_quote_remove_item>
        <observers>
            <sales_quote_remove_item_handler>
                <type>singleton</type>
                <class>Your_Extension_Model_Observer</class>
                <method>unsetCouponCode</method>
            </sales_quote_remove_item_handler>
        </observers>
    </sales_quote_remove_item>
</events>

2) Создайте файл app / code / local / Your / Extension / Model / Observer.php:

<?php
class Your_Extension_Model_Observer {

    public function unsetCouponCode(Varien_Event_Observer $observer) {
        $quote = $observer->getQuoteItem()->getQuote();
        if (!$quote->hasItems()) {
            Mage::getSingleton('core/session')->setCouponCode('');
            $quote->getShippingAddress()->setCollectShippingRates(true);
            $quote->setCouponCode('')->collectTotals()->save();
        }
    }
}

После этого очистите кеш Magento и попробуйте повторить ошибку - она ​​должна исчезнуть.

...