2016-08-09 8 views
0

Ich füge Produkte zu meinem Warenkorb hinzu, während ich nicht eingeloggt bin. My quote_id is 597.Magento - Ändern Sie die Quote_id nach dem Login

Im Kaufvorgang logge ich mich ein (im ersten Schritt) und habe bemerkt, dass sich mein Angebot geändert hat.

quote_id 597 ist aus der Datenbank und der neuen quote_id is now 555 verschwunden.

Was ist der Beobachter, die Klasse und die Methode, die für diese Angebotsänderung verantwortlich sind, da ich eine temporäre Tabelle in der Datenbank habe, wo ich auch diese quote_id ändern muss?

Antwort

1

an der Kasse Login gibt es einen Beobachter, die Quote Merge führt, , dass, wenn der Kunde ist ja Zitate in der Datenbank, die mit dem aktuellen fusionieren,

, wenn Sie nicht wollen, die Anführungszeichen fusionieren Sie können Sie Ihre eigenen Beobachter setzen alle bisherigen Elemente zu entfernen,

Konfigurationsdatei

<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

Datei
<?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; 
    } 

} 
?> 
Verwandte Themen