Какие события использовать для обновления пользовательских цен при “Переходе к оформлению заказа” и “Отправке заказа”

magento.stackexchange https://magento.stackexchange.com/questions/3668

  •  16-10-2019
  •  | 
  •  

Вопрос

Я создал модуль, который устанавливает пользовательские цены на товары с котировками при обновлении корзины.Для этого я использую эти события:

checkout_cart_product_add_after
sales_quote_remove_item
checkout_cart_update_items_after

Это работает нормально, но проблема в том, что пользовательские цены не пересчитываются, если пользователь переходит к оформлению заказа или отправляет заказ.

Я бы хотел, чтобы они также были пересчитаны там, потому что они получены из данных, которые, возможно, могли быть изменены с момента последнего обновления корзины (группа пользователей, базовая цена товара и т.д.).Magento пересчитывает свои цены таким образом, если пользовательская цена не установлена, поэтому я хотел бы добиться такого же поведения.

Существуют ли соответствующие события для подключения для вызова пересчета в моем модуле?

Редактировать:На самом деле, кажется, что Magento пересчитывает цены даже после обычной перезагрузки страницы в корзине.Я думаю, на самом деле мне это не нужно, хотя так правильнее.

Это было полезно?

Решение

Я использую это событие salesQuoteCollectTotalsBefore установите цену на продукт, а затем она будет перенесена в quoteItem:

public function salesQuoteCollectTotalsBefore(Varien_Event_Observer $observer)
{
    /* @var $quote Mage_Sales_Model_Quote */
    $quote = $observer->getQuote();
    foreach ($quote->getAllItems() as $quoteItem) {
        if (true) {
            /* @var $quoteItem Mage_Sales_Model_Quote_Item */
            $product = $quoteItem->getProduct();
            $price = $helper->getPriceWithoutTax($quoteItem);
            $product->setPrice($price);
        }
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top