/** * Fetches any related customer_group to the given cart object * * @param ShopgateCart $cart * @param int $websiteId * * @return array */ protected function _getCustomerGroups(ShopgateCart $cart, $websiteId) { /** @var Mage_Customer_Model_Customer $customer */ $customer = Mage::getModel('customer/customer'); $externalCustomerId = $cart->getExternalCustomerId(); if ($externalCustomerId) { $customer->load($externalCustomerId); } else { if ($cart->getDeliveryAddress() && $cart->getDeliveryAddress()->getMail()) { $customer->setWebsiteId($websiteId)->loadByEmail($cart->getDeliveryAddress()->getMail()); } else { if ($cart->getInvoiceAddress() && $cart->getInvoiceAddress()->getMail()) { $customer->setWebsiteId($websiteId)->loadByEmail($cart->getInvoiceAddress()->getMail()); } } } if (!$externalCustomerId && $customer->getId()) { $cart->setExternalCustomerId($customer->getId()); } return Mage::helper('shopgate/customer')->getShopgateCustomerGroups($customer); }
/** * add customer to cart e.g to validate customer related price rules * * @param ShopgateCart $cart */ public function addCustomerToCart(&$cart) { if ($cart->getMail()) { /** @var Mage_Customer_Model_Customer $magentoCustomer */ $magentoCustomer = Mage::getModel("customer/customer"); $magentoCustomer->setWebsiteId(Mage::app()->getWebsite()->getid()); $magentoCustomer->loadByEmail($cart->getMail()); if ($magentoCustomer->getId()) { $cart->setExternalCustomerId($magentoCustomer->getId()); } } }