/**
  * @param Varien_Event_Observer $observer
  * @event sales_quote_merge_before
  */
 public function observe(Varien_Event_Observer $observer)
 {
     /** @var Aleron75_UnmergedCart_Helper_Data $h */
     $h = Mage::helper('aleron75_unmergedcart');
     if (!$h->isActive()) {
         return;
     }
     /** @var Mage_Sales_Model_Quote $customerQuote */
     $customerQuote = $observer->getQuote();
     /** @var Mage_Sales_Model_Quote $sessionQuote */
     $sessionQuote = $observer->getSource();
     if ($customerQuote->getId() && $sessionQuote->getId() != $customerQuote->getId()) {
         /** @var Mage_Sales_Model_Quote $discardableQuote */
         $discardableQuote = $h->isKeepSessionCart() ? $customerQuote : $sessionQuote;
         /** @var Mage_Sales_Model_Quote_Item $item */
         foreach ($discardableQuote->getAllItems() as $item) {
             $item->isDeleted(true);
             if ($item->getHasChildren()) {
                 /** @var Mage_Sales_Model_Quote_Item_Abstract $child */
                 foreach ($item->getChildren() as $child) {
                     $child->isDeleted(true);
                 }
             }
         }
     }
 }
示例#2
0
 /**
  * Truncate the customer's cart if active
  * @access public
  * @return void
  */
 public function truncateCustomerCart(Varien_Event_Observer $observer)
 {
     if (Mage::helper('jbh_cartmerge')->isActive()) {
         if ($observer->getSource()->hasItems() || Mage::helper('jbh_cartmerge')->cleanIfEmpty()) {
             if (is_object($observer->getQuote()) && $observer->getQuote()->getId()) {
                 $observer->getQuote()->removeAllItems();
             }
         }
     }
 }
 /**
  * Remove products that are in the cart that where not hidden while logged out
  * but are hidden to the customer once logged in.
  *
  * @param Varien_Event_Observer $observer
  */
 public function salesQuoteMergeBefore(Varien_Event_Observer $observer)
 {
     /** @var Mage_Sales_Model_Quote $guestQuote */
     $guestQuote = $observer->getSource();
     // If a hidden product is loaded, it's entity_id is set to null.
     // So all we need to do here is set the deleted property to true,
     // and then they will not be merged into the customer quote.
     foreach ($guestQuote->getItemsCollection() as $quoteItem) {
         if (!$quoteItem->getProductId()) {
             $quoteItem->isDeleted(true);
         }
     }
 }