2013-05-02 5 views
0

Я не могу обновить товар промежуточного итога в корзине. Я создал модуль с наблюдать checkout_cart_product_add_after я могу получить субтотальную цена от пункта:Обновление промежуточного итога Magento

$subtotal = Mage::getSingleton('checkout/cart')->getQuote()->getSubtotal(); 

, но я не могу обновить это для exmaple:

$subtotal = $subtotal + 100; 
Mage::getSingleton('checkout/session')->getQuote()->setSubtotal($subtotal); 
Mage::getSingleton('checkout/cart')->getQuote()->setSubtotal($subtotal); 
Mage::getSingleton('checkout/session')->getQuote()->save(); 
Mage::getSingleton('checkout/cart')->getQuote()->save(); 

EDIT

Если Я запускаю в своем Observer print_r($subtotal); exit; Я получаю исправленное обновление промежуточного итога. На странице корзины у меня все еще есть оригинальная промежуточная сумма без изменений.

EDIT 2 Я пытаюсь запустить функцию modifySubtotal с sales_quote_collect_totals_after событий, но я не могу видеть на странице корзины обновленной субтотальной цене. Ниже код modifySubtotal от Observer.php:

public function modifySubtotal(Varien_Event_Observer $observer) 
    { 

    $session = Mage::getSingleton('checkout/session'); 
    $quote=$observer->getQuote(); 
    $subtotal = $quote->getBaseSubtotal(); 
    $subtotal = $subtotal +123; 
    $quote->setBaseSubtotal($subtotal); 

    $quote->save(); 
    $subtotal2 = $quote->getBaseSubtotal(); 
    //print_r($subtotal2);exit; 

} 

Я буду благодарен за любые советы и помощь.

ответ

-1

Проблема решена. Я переопределяю и копирую Subtotal.php от Налог/Модуль/Продажи/Qoute/Всего to/app/local/Mage/... Около 545 строк Я рассчитал свое значение $subtotal и установил $item->setRowTotal($subtotal); Это все.

+3

Я думаю, вы могли бы использовать наблюдателя или класс перезаписи для этого. Таким образом, вы потеряете совместимость с будущими версиями и столкнетесь с некоторыми непростительными проблемами. –

0

Вы должны соблюдать sales_quote_collect_totals_after.

+0

Благодарят Вас за подсказку, но в моем случае я до сих пор не могу см. обновленный промежуточный итог в корзине. – Krzysztof

0

Проблема с кодом здесь:

$session = Mage::getSingleton('checkout/session'); 
$quote=$observer->getQuote(); 

Это должно быть

$session = Mage::getSingleton('checkout/session'); 
$quote=$session->getQuote(); 

Надеется, что это помогает