You may have noticed that old cart items (abandoned) get merged with the current one when the customer tries to log in.
It’s good in terms of sales but sometimes your merchant simply may not want this feature.
In this case, we can easily clear the abandoned cart items and stop being merged with the current cart with the following steps:
Step 1. Hooking into the event: load_customer_quote_before
Add the following code in the file app/code/local/MagePsycho/Module/etc/config.xml
<frontend>
<events>
<load_customer_quote_before>
<observers>
<module_load_customer_quote_before>
<class>module/observer</class>
<method>clearAbandonedCarts</method>
</module_load_customer_quote_before>
</observers>
</load_customer_quote_before>
</events>
</frontend>
Step 2. Implementing logic in observer method
Add the following code in the file app/code/local/MagePsycho/Module/Model/Observer.php
<?php
class MagePsycho_Module_Model_Observer
{
public function clearAbandonedCarts(Varien_Event_Observer $observer)
{
$lastQuoteId = Mage::getSingleton('checkout/session')->getQuoteId();
if ($lastQuoteId) {
$customerQuote = Mage::getModel('sales/quote')
->loadByCustomer(Mage::getSingleton('customer/session')->getCustomerId());
$customerQuote->setQuoteId($lastQuoteId);
$this->_removeAllItems($customerQuote);
} else {
$quote = Mage::getModel('checkout/session')->getQuote();
$this->_removeAllItems($quote);
}
}
protected function _removeAllItems($quote){
foreach ($quote->getAllItems() as $item) {
$item->isDeleted(true);
if ($item->getHasChildren()) {
foreach ($item->getChildren() as $child) {
$child->isDeleted(true);
}
}
}
$quote->collectTotals()->save();
}
}
That’s it.
[EDIT]
Now you can download this trick as a Magento Module from [here]
Happy Coding!
A quicker alternative method that would probably work for most people would be to simply adjust the quote lifetime setting in the Magento admin to a day or so.
About to try this out, thanks 🙂
I found that there is a pre-made module which accomplishes this goal, and even lets you enable/disable it. https://github.com/jacquesbh/jbh_cartmerge