Наблюдатель изменение цитата Magento

Мне нужно изменить значения grandtotal и basetotal в quote, я добавил observer на checkout_controller_onepage_save_shipping_method, он работает, я уже написал логику для изменения значений, но главная проблема в том, что я не могу сохранить квоту и она возвращает мне не отредактированные значения. Я думаю, основная проблема в том, что заголовки были отправлены, но каким образом я могу это сделать?

public function checkTotals(Varien_Event_Observer $observer)
{   
    $quote      = Mage::getSingleton('checkout/type_onepage')->getQuote();

    $grandTotal = 1

    $quote->setData('grand_total', $grandTotal);
    $quote->setData('base_grand_total', $grandTotal);
    $quote->save();
}

1 ответ

  1. Проблема не была решена. У меня была проблема с PayPal API, и когда одно из расширений добавляло 2% к цене из-за PayPal, он сломал вызов API к paypal. Проблема была в методе save, который пересчитывает итоги в квоте, снова берет значения из корзины, и вы не можете просто изменить цены или что-то еще. Если вы хотите сделать что-то вроде добавления нескольких процентов к цене, вам нужно создать какой-то элемент в квоте или правиле цены, или просто скрытый элемент в корзине, который позволит изменить.