Avoid merging old cart items in customer session magento
In this post we will see how to avoid merging old cart items to the current checkout session.
Scenario:
- It will be happen when we login to store and adds some products into cart and leaves store without purchasing.
- Then coming back to the store after sometime and adds some product into cart without login and proceeds to checkout.
- In checkout page we will be requested to login, after login we can see some additional products are added into the cart which we are added in previous session.
- In this case what we have to do is we need to clear old cart items( It was requested by one of my client ) and allow customers to show with the current session items.
app/etc/modules/Ws_Clearoldcartproducts.xml
File:true local
app/code/local/Ws/Clearoldcartproducts/etc/config.xml
In below code we are using sales_quote_merge_before
observer to clear old items. To know about observer go through this link.
File:1.0.0 singleton Ws_Clearoldcartproducts_Model_Observer loadCustomerQuote
app/code/local/Ws/Clearoldcartproducts/Model/Observer.php
We have declared our observer class and action names in above xml file. Below code is where our magic works!
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; } } ?>What we have done in above code is we have override the
Mage_Checkout_Model_Session::loadCustomerQuote()
action to avoid merging of old cart items!. Instead of merging the product we have deleted it! That's what we done!
Please post your feedback's Thanks :)
Comments
Post a Comment