2016-08-09 3 views
0

Я добавляю товары в свою корзину, пока не авторизованы. Мой quote_id is 597.Magento - Измените quote_id после входа в систему

В процессе оформления заказа я вхожу в систему (на первом шаге), и я заметил, что моя цитата изменилась.

quote_id 597 исчез из базы данных и новый quote_id is now 555.

Что представляет собой наблюдатель, класс и метод, которые отвечают за изменение этой цитаты, поскольку у меня есть временная таблица в базе данных, где мне также необходимо изменить это значение quote_id?

ответ

1

на логину есть наблюдатель, который выполняет ЦЕНУ Merge, , то есть если клиент испытывает; нет котировки в базе данных, которая будет сливаться с текущим,

, если вы не хотите, чтобы объединить кавычки вы может установить свой собственный наблюдатель, чтобы удалить все предыдущие пункты,

файл конфигурации файл

<global> 
    <events> 
     <sales_quote_merge_before> 
      <observers> 
       <mymage_clearoldcartproducts_observer> 
        <type>singleton</type> 
        <class>MyMage_Clearoldcartproducts_Model_Observer</class> 
        <method>removeCustomerQuote</method> 
       </mymage_clearoldcartproducts_observer> 
      </observers> 
     </sales_quote_merge_before> 
    </events> 
</global> 

Observer.php

<?php 

class MyMage_Clearoldcartproducts_Model_Observer extends Mage_Checkout_Model_Session { 
    public function removeCustomerQuote() { 
     $customerQuote = Mage::getModel('sales/quote') 
       ->setStoreId(Mage::app()->getStore()->getId()) 
       ->loadByCustomer(Mage::getSingleton('customer/session')->getCustomerId()); 

     if ($customerQuote->getId() && $this->getQuoteId() != $customerQuote->getId()) { 
      // Removing old cart items of the customer. 
      foreach ($customerQuote->getAllItems() as $item) { 
       $item->isDeleted(true); 
       if ($item->getHasChildren()) { 
        foreach ($item->getChildren() as $child) { 
         $child->isDeleted(true); 
        } 
       } 
      } 
      $customerQuote->collectTotals()->save(); 
     } else { 

      $this->getQuote()->getBillingAddress(); 
      $this->getQuote()->getShippingAddress(); 
      $this->getQuote()->setCustomer(Mage::getSingleton('customer/session')->getCustomer()) 
        ->setTotalsCollectedFlag(false) 
        ->collectTotals() 
        ->save(); 
     } 
     return $this; 
    } 

} 
?> 
Смежные вопросы