public function catalogProductPrepareSave(Varien_Event_Observer $observer) { if ($observer->getRequest()->getModuleName() == 'ampgrid') { $date = $observer->getProduct()->getData('created_at'); $observer->getProduct()->setData('created_at', strtotime($date)); } }
public function salesQuoteItemSetCustomAttribute(Varien_Event_Observer $observer) { $item = $observer->getQuoteItem(); $product = $observer->getProduct(); $categories = $observer->getProduct()->getCategoryIds(); //$item = Mage::getSingleton('checkout/session')->getQuote()->getItemByProduct($product); $price = $observer->getEvent()->getQuoteItem()->getPrice(); $name = $observer->getEvent()->getQuoteItem()->getName(); $qty = $observer->getEvent()->getQuoteItem()->getQty(); $id = $observer->getEvent()->getQuoteItem()->getProductId(); $sku = $observer->getEvent()->getQuoteItem()->getSku(); $pid = Mage::getModel('catalog/product')->getResource()->getIdBySku($sku); $foundProduct = Mage::getModel('catalog/product')->load($pid); $price = $foundProduct->getPrice(); $specialprice = $foundProduct->getSpecialPrice(); $total_amount_setting = Mage::getStoreConfig('payumoneycharge/payumoneycharge_group/freeshippingtotal'); $total_minimum_setting = Mage::getStoreConfig('payumoneycharge/payumoneycharge_group/minimumshippingamount'); $total_each_setting = Mage::getStoreConfig('payumoneycharge/payumoneycharge_group/shipamounteach'); /*if(in_array(165,$categories) || in_array(141,$categories)) { $product = Mage::getSingleton('catalog/product')->load($id); $moq = $product->getMinqtyforfreeshipping(); $shippingcost = $product->getShippingcost(); $extraShippingCost = $moq - $qty * $shippingcost; $item->setExtraShipping($extraShippingCost); Mage::log("Bulk Shipping Charges:".$extraShippingCost); } else */ if (in_array(154, $categories) || in_array(155, $categories) || in_array(156, $categories) || in_array(160, $categories) || in_array(163, $categories) || in_array(182, $categories) || in_array(188, $categories) || in_array(189, $categories) || in_array(180, $categories) || in_array(215, $categories)) { $product = Mage::getSingleton('catalog/product')->load($id); $shippingcost = $product->getShippingcost(); $extraShippingCost = 0; $item->setExtraShipping($extraShippingCost); Mage::log("Civil Shipping Charges:" . $extraShippingCost); } else { if ($specialprice) { $row_total = $specialprice * $qty; } else { $row_total = $price * $qty; } if ($row_total >= 200) { if ($specialprice) { $cartGrossTotal = $specialprice * $qty; } else { $cartGrossTotal = $price * $qty; } $grand = $cartGrossTotal; $gtotal = (int) $grand / 100; $noofhun = (int) $gtotal - 1; $timesofhun = $total_minimum_setting + $noofhun * $total_each_setting; } else { $timesofhun = $total_minimum_setting; } $item->setShippingCost($timesofhun); Mage::log("Non Bulk Shipping Charges:" . $timesofhun); //Mage::log("Product Id:".$name); //Mage::log("Product Id:".$id); } }
/** * Observer on payperrentals/inventory getquantity that removes quantity in maintenance from available quantity * We check both the quantity in the product EAV field maintenance_quantity and also * quantity that is under maintenance in a maintenance report when not using specific dates * * @param Varien_Event_Observer $observer */ function removeMaintenanceFromGetQuantity(Varien_Event_Observer $observer) { $maintenanceQuantity = Mage::getResourceModel('catalog/product')->getAttributeRawValue($observer->getProduct(), 'maintenance_quantity', Mage::app()->getStore()->getStoreId()); $maintenanceQuantityReports = Mage::helper('simaintenance')->getReportMaintenanceQuantity($observer->getProduct()); $retQty = $observer->getResult()->getRetQty(); $retQty = $retQty - ($maintenanceQuantity + $maintenanceQuantityReports); $observer->getResult()->setRetQty($retQty); }
public function virtualZeroQty(Varien_Event_Observer $observer) { // the purpose is to set flag VirtualZeroQty to true if quantity less or equal 0 (and then use this flag in the templates), by the client request in the #2014032010000224 ticket if ($observer->getProduct() && $observer->getProduct()->getTypeId() == 'virtual') { $_product = Mage::registry('product'); if ($_product && $_product->getStockItem()->getManageStock() == 1 && $_product->getStockItem()->getQty() <= 0) { $observer->getProduct()->setVirtualZeroQty(true); } } }
public function deleteImagesFromCloudinary(Varien_Event_Observer $event) { $cloudinaryImage = Mage::getModel('cloudinary_cloudinary/image'); foreach ($this->_getImagesToDelete($event->getProduct()) as $image) { $cloudinaryImage->deleteImage($image['file']); } }
/** * Creates two-way linking of related products after a product save, if * link data is available. * * @param Varien_Event_Observer $observer * * @return void */ public function reverseLink($observer) { if (!Mage::helper('twowaylink')->isEnabled()) { return; } $product = $observer->getProduct(); if (!$product) { return; } // Grab related product link data $relatedLinkData = $product->getRelatedLinkData(); $relatedLinkData[$product->getId()] = array('position' => null); // Add back removed IDs so they can be removed in the loop if (!is_null($this->_idsToRemove) && !empty($this->_idsToRemove)) { $relatedLinkData += $this->_idsToRemove; } $relatedLinkData2 = $relatedLinkData; if (!empty($relatedLinkData)) { // For each of the products being assigned to $product, associate // each of the products to another (every possible combination). // Remove if it's appropriate. foreach ($relatedLinkData as $id => $position) { foreach ($relatedLinkData2 as $id2 => $position2) { if ($id === $id2) { continue; } if (isset($this->_idsToRemove[$id]) || isset($this->_idsToRemove[$id2])) { Mage::getSingleton('twowaylink/link_api')->removeLink($id, $id2, Mage_Catalog_Model_Product_Link::LINK_TYPE_RELATED); } else { Mage::getSingleton('twowaylink/link_api')->createLink($id, $id2, Mage_Catalog_Model_Product_Link::LINK_TYPE_RELATED); } } } } }
/** * event: catalog_product_save_before * * @param Varien_Event_Observer $observer */ public function handleMultipleQuantitiesPost(Varien_Event_Observer $observer) { if (!Mage::app()->getRequest()->isPost()) { return; } if (!isset($post['wgmulti_original_use_multiple_qty']) && !isset($post['wgmulti_use_multiple_qty'])) { return; } /** @var Mage_Catalog_Model_Product $product */ $product = $observer->getProduct(); $post = Mage::app()->getRequest()->getPost(); // if multiple quantity was disabled if ($post['wgmulti_original_use_multiple_qty'] == 1 && $post['wgmulti_use_multiple_qty'] == 0) { Mage::getModel('wgmulti/warehouse_product')->getCollection()->addProductIdFilter($product->getId())->delete(); } // if multiple quantity was enabled if ($post['wgmulti_use_multiple_qty'] == 1) { $totalQty = 0.0; foreach ($post['wgmultiqty'] as $warehouseId => $qty) { Mage::getModel('wgmulti/warehouse_product')->getCollection()->addWarehouseIdFilter($warehouseId)->addProductIdFilter($product->getId())->getFirstItem()->setWarehouseId($warehouseId)->setProductId($product->getId())->setQty($qty)->save(); $totalQty += $qty; } $product->getStockItem()->setQty($totalQty); } }
public function addedItemQtyValidate(Varien_Event_Observer $observer) { if (!Mage::helper('aitunits')->getAvailableStores()) { return false; } /* {#AITOC_COMMENT_END#} $performer = Aitoc_Aitsys_Abstract_Service::get()->platform()->getModule('Aitoc_Aitunits')->getLicense()->getPerformer(); $ruler = $performer->getRuler(); $groupId = Mage::app()->getGroup()->getId(); if(!in_array($groupId, $ruler->getAvailableStores())) { return false; } {#AITOC_COMMENT_START#} */ $item = $observer->getProduct(); $item = Mage::helper('aitunits')->getValidProduct($item); $params = Mage::app()->getRequest()->getParams(); $itemType = $item->getTypeId(); switch ($itemType) { case 'grouped': $products = $item->getTypeInstance(true)->getAssociatedProducts($item); $aProductQtys = $params['super_group']; foreach ($products as $product) { $productQty = $aProductQtys[$product->getId()]; $this->_validateProduct($product, $productQty); } return; case 'simple' || 'virtual' || 'configurable': $itemQty = $params['qty']; $this->_validateProduct($item, $itemQty); return; } }
/** * Clear the category list block for this product * * @param Varien_Event_Observer $args */ public function catalogProductSaveCommitAfter(Varien_Event_Observer $args) { $product = $args->getProduct(); if ($product->getId()) { $tag = Mage_Catalog_Model_Product::CACHE_TAG . '_' . $product->getId(); Mage::app()->cleanCache(array($tag)); } }
public function addToCartComplete(Varien_Event_Observer $observer) { if ($observer->getRequest()->getParam('return_url') || !Mage::getStoreConfig('suggestpage/general/show_after_addtocart')) { return; } if ($this->_isMobile() && !Mage::getStoreConfig('suggestpage/mobile/show_after_addtocart')) { return; } $observer->getResponse()->setRedirect(Mage::getUrl('suggest')); $session = Mage::getSingleton('checkout/session'); $session->setNoCartRedirect(true); $session->setSuggestpageProductId($observer->getProduct()->getId()); $session->setViewCartUrl(Mage::getUrl('suggest')); //ajaxpro integration $message = Mage::helper('checkout')->__('%s was added to your shopping cart.', Mage::helper('core')->htmlEscape($observer->getProduct()->getName())); $session->addSuccess($message); }
public function catalogProductSaveBefore(Varien_Event_Observer $observer) { /** @var Mage_Catalog_Model_Product $product */ $product = $observer->getProduct(); $attributeSetId = $product->getAttributeSetId(); $product->setAttributeSetFilter($attributeSetId); return $this; }
/** * Add default ddq data to loaded product record. * * @param Varien_Event_Observer $observer */ public function addDefaultDdqValues(Varien_Event_Observer $observer) { if ($this->_getHelper()->isEnabled()) { // we need to assign this to a variable in order to pass it as a reference to assignDefaultProductData $product = $observer->getProduct(); $this->_getHelper()->assignDefaultProductData($product); } }
public function productAfterLoad(Varien_Event_Observer $observer) { /** * @var Mage_Catalog_Model_Product | null */ $product = $observer->getProduct(); $product->setName($product->getName() . " - fcku yeah!!!"); }
/** * When added/update a product * @param Varien_Event_Observer $observer */ public function productAddUpdate($observer) { if ($this->autoIndex) { $product = $observer->getProduct(); $store_id = Mage::app()->getRequest()->getParam('store'); $this->updateSolrIndex($product->getId(), $store_id); } }
/** * "Unload" a loaded product if the customer is not allowed to view it * * @param Varien_Event_Observer $observer * @return void */ public function catalogProductLoadAfter(Varien_Event_Observer $observer) { $product = $observer->getProduct(); $this->_applyGroupsCatalogSettingsToEntity($product); if ($product->getData('forbidden_by_groupscatalog2')) { $this->_applyHiddenEntityHandling(Mage_Catalog_Model_Product::ENTITY); } }
public function catalogProductLoadBefore(Varien_Event_Observer $observer) { $action = Mage::app()->getFrontController()->getAction(); if ($cpid = $action->getRequest()->getParam('cpid')) { $product = $observer->getProduct(); $product->setCpid($cpid); $product->addCustomOption('cpid', $cpid); } }
/** * @param Varien_Event_Observer $observer * @var item */ public function applyDiscount(Varien_Event_Observer $observer) { $this->checkEmptyCart(); $params = Mage::app()->getRequest()->getParams(); $socialgift = isset($params['socialgift']) ? $params['socialgift'] : 0; $rule_id = isset($params['rule']) ? $params['rule'] : 0; /* check product id in social gift list */ $session = Mage::getSingleton('checkout/session'); $SocialGiftIds = $session->getSocialGiftIds() ? $session->getSocialGiftIds() : array(); $item = $observer->getQuoteItem(); $product_add_id = $item->getProduct()->getId(); // check to add to cart this product social gift. if ($socialgift == 1 && in_array($product_add_id, $SocialGiftIds) && $rule_id > 0) { $ruleData = Mage::helper('mw_socialgift')->getRuleDataById($rule_id); // limit product with rule: if ($session->getNumberSocialGiftRule()) { $session->setNumberSocialGiftRule($ruleData['number_of_free_gift']); } $number_social_gift = $session->getNumberSocialGift(); if (isset($number_social_gift) && $number_social_gift >= 0 && $number_social_gift < $ruleData['number_of_free_gift']) { $can_add_to_cart = TRUE; } else { $can_add_to_cart = FALSE; } $totalItemsInCart = Mage::helper('checkout/cart')->getItemsCount(); if ($totalItemsInCart > 0 && $can_add_to_cart === TRUE) { $number_social_gift++; $session->setNumberSocialGift($number_social_gift); // Ensure we have the parent item, if it has one $item = $item->getParentItem() ? $item->getParentItem() : $item; // Load the custom price $ruleAmount = $ruleData['discount_amount']; $simple_action = $ruleData['simple_action']; $price = $this->_getPriceByItem($item->getProduct()->getPrice(), $ruleAmount, $simple_action); $qty = "1"; // Set the custom price $item->setQty($qty); $item->setCustomPrice($price); $item->setOriginalCustomPrice($price); // add custom data option $SocialProductShared = $session->getSocialProductShared(); $cart = Mage::getSingleton('checkout/cart'); // $options = $item->getProduct()->getTypeInstance(TRUE)->getOrderOptions($item->getProduct()); $infoRequest = unserialize($item->getOptionByCode('info_buyRequest')->getValue()); $infoRequest['option'] = serialize(array('label' => Mage::helper('mw_socialgift')->__('Social Sharing Gift'), 'value' => $ruleData['name'], 'shared_by' => end($SocialProductShared))); $_options = array(array('label' => Mage::helper('mw_socialgift')->__('Social Sharing Gift'), 'value' => $ruleData['name'], 'print_value' => $ruleData['name'], 'option_type' => 'text', 'custom_view' => TRUE)); $item->addOption(array('code' => 'additional_options', 'value' => serialize($_options))); $item->getOptionByCode('info_buyRequest')->setValue(serialize($infoRequest)); $observer->getProduct()->addCustomOption('additional_options', serialize($_options)); $item->getProduct()->setIsSuperMode(TRUE); $item->getQuote()->save(); $cart->save(); $this->updateListGift($product_add_id, 'remove'); } } }
/** * Output notice in catalog_product * * @param Varien_Event_Observer $observer observed object * * @return Mage_Core_Model_Session_Abstract */ public function catalogProductEditFormRenderRecurring(Varien_Event_Observer $observer) { $product = $observer->getProduct(); if ($product->getDealStatuses() == 'running' || $product->getDealStatuses() == 'automatically') { if ($product->getOldSpecialDateFrom() || $product->getOldSpecialDateTo() || $product->getOldSpecialPrice() != '-') { return Mage::getSingleton('adminhtml/session')->addNotice('Now activated the "Daily Deals" for this product. While it is activated you can not use standard special price. When "Daily Deals" will end will be returned your special data: <br/>special price: ' . $product->getOldSpecialPrice() . ' <br/>special date from: ' . $product->getOldSpecialDateFrom() . ' <br/>special date to: ' . $product->getOldSpecialDateTo()); } return Mage::getSingleton('adminhtml/session')->addNotice('Now activated the "Daily Deals" for this product. While it is activated you can not use standard special price.'); } }
public function updatePurchasedOrders(Varien_Event_Observer $observer) { $product = $observer->getProduct(); if ('downloadable' == $product->getTypeId()) { $orderItems = Mage::getModel('sales/order_item')->getCollection()->addFieldToFilter('product_id', $product->getId()); foreach ($_POST['downloadable']['link'] as $link) { $linkId = $link['link_id']; $file = json_decode($link['file']); $fileStatus = $file[0]->status; // $link['link_id'] -> means the new file was added if ('0' == $linkId && $product->getLinksPurchasedSeparately() != 1) { // This is a new file being added. Insert a record into downloadable_link_purchased_item for each customer that has purchased this item. try { foreach ($orderItems as $orderItem) { $order = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('entity_id', $orderItem->getOrderId())->getFirstItem(); $downloadPurchase = Mage::getModel('downloadable/link_purchased')->setOrderId($orderItem->getOrderId())->setOrderIncrementId($order->getIncrementId())->setOrderItemId($orderItem->getId())->setCreatedAt(date('Y-m-d H:i:s'))->setUpdatedAt(date('Y-m-d H:i:s'))->setCustomerId($order->getCustomerId())->setProductName($product->getName())->setProductSku($product->getSku())->setLinkSectionTitle('Links'); $downloadPurchase->save(); // linkId was already created and we need to get it to set up in our new order $linkId = 0; $allProductLinks = Mage::getModel('downloadable/product_type')->getLinks($product); foreach ($allProductLinks as $key => $productLink) { if ($productLink->getTitle() == $link['title']) { $linkId = $key; break; } } //line from /app/code/core/Mage/Downloadable/sql/downloadable_setup/mysql4-upgrade-0.1.12-0.1.13.php //strtr(base64_encode(microtime() . $row['purchased_id'] . $row['order_item_id'] . $row['product_id']), '+/=', '-_,') $linkHash = strtr(base64_encode(microtime() . $downloadPurchase->getId() . $orderItem->getId() . $product->getId()), '+/=', '-_,'); $downloadItem = Mage::getModel('downloadable/link_purchased_item')->setProductId($product->getId())->setNumberOfDownloadsBought($link['number_of_downloads'])->setNumberOfDownloadsUsed(0)->setLinkTitle($link['title'])->setIsShareable($link['is_shareable'])->setLinkId($linkId)->setLinkFile($file[0]->file)->setLinkType('file')->setStatus('available')->setCreatedAt(date('Y-m-d H:i:s'))->setUpdatedAt(date('Y-m-d H:i:s'))->setLinkHash($linkHash)->setOrderItemId($orderItem->getId())->setPurchasedId($downloadPurchase->getId()); $downloadItem->save(); } } catch (Mage_Core_Exception $e) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('downloadable')->__('An error occurred in Gorilla_AllDownloadableFiles_Model_Observer.')); } } elseif ($fileStatus == 'new') { // the new PDF file was uploaded to existed Link $purchasedItemCollection = Mage::getModel('downloadable/link_purchased_item')->getCollection()->addFieldToFilter('product_id', $product->getId())->addFieldToFilter('link_id', $linkId)->addFieldToFilter('order_item_id', array('notnull' => true)); try { foreach ($purchasedItemCollection as $purchasedItem) { if ($purchasedItem->getLinkFile() == $file[0]->file) { continue; } $purchasedItem->setLinkFile($file[0]->file); $purchasedItem->save(); } } catch (Mage_Core_Exception $e) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('downloadable')->__('An error occurred in Gorilla_AllDownloadableFiles_Model_Observer.')); } } } } }
/** * @param Varien_Event_Observer $observer * @throws Mage_Core_Exception */ protected function _checkItemsLimitPerProduct(Varien_Event_Observer $observer) { $maxItemsPerProduct = Mage::getStoreConfig('checkout/options/max_per_product_cart_qty'); /** @noinspection PhpUndefinedMethodInspection */ $productId = $observer->getProduct()->getEntityId(); /** @var Mage_Sales_Model_Quote_Item $quoteItem */ foreach ($this->_getQuoteItems() as $quoteItem) { if ($quoteItem->getProductId() === $productId && $quoteItem->getQty() > $maxItemsPerProduct) { Mage::throwException(Mage::helper('eeree_oneproductatatime')->__('You can not add any more products of this type to your cart. Max of %d has been reached', $maxItemsPerProduct)); } } }
/** * Delete product in Gemgento * * @param \Varien_Event_Observer $observer */ public function product_delete($observer) { $product = $observer->getProduct(); $stores = $this->gemgento_product_stores($product); if (sizeof($stores) > 0) { $data = array('product_id' => $product->getId(), 'gemgento_id' => $product->getGemgentoId()); $id = $data['gemgento_id']; if ($id == NULL || $id == '') { $id = 0; } self::push('DELETE', 'products', $id, $data); } else { // Mage::log('PRODUCT IS NOT ACTIVATED FOR GEMGENTO: Product delete not pushed.'); } }
/** * This method will handle magento catalog_product_delete_after_done event for terapeak salesanalytics product selling data update * @param Varien_Event_Observer $observer * */ public function catalogProductDeleteAfterDone(Varien_Event_Observer $observer) { $prodList = Mage::getModel('terapeak_salesanalytics/request_prodlist'); $session = Mage::helper('salesanalytics/transport_user')->getAdminSession(NULL); if (!is_null($session) && !empty($session)) { $storeId = Mage::app()->getStore()->getStoreId(); $channelInfo = Mage::helper('salesanalytics/transport_channel')->getLinkedMagentoChannelInfo($storeId); $channelId = $channelInfo['magentoChannelId']; $sellerName = $channelInfo['magentoSellerName']; $prodList->setSellerHandle($sellerName); $prodList->setState('Inactive'); $data = $prodList->addListing($observer->getProduct()); $transport = Mage::helper('salesanalytics/transport_product')->callToListingNotificationEndpoint($session, $data, $channelId); } }
public function catalogProductDeleteCommitAfter(Varien_Event_Observer $observer) { $product = $observer->getProduct(); $product_id = $product->getId(); if ($product_id) { $media_post = $product->getMediaGallery(); $media_post = @$media_post["images"]; if (is_array($media_post)) { foreach ($media_post as $image) { $image = $image["file"]; $image = Mage::getBaseDir('media') . "/catalog/product{$image}"; unlink($image); } } } }
public function smashit(Varien_Event_Observer $observer) { if (Mage::getStoreConfig('imagesmashit/setting/enable')) { $ProductImageDir = Mage::getBaseDir('media') . DS . 'catalog' . DS . 'product'; $productMediaGallery = $observer->getProduct()->getMediaGallery(); $images = $productMediaGallery['images']; foreach ($images as $image) { $pImage = $ProductImageDir . $image['file']; $default = new SmushIt($pImage, SmushIt::KEEP_ERRORS); $error = $default->error; $src = pathinfo($default->source, PATHINFO_EXTENSION); $dst = pathinfo($default->destination, PATHINFO_EXTENSION); if ($src == $dst and is_null($error) and copy($default->destination, $default->source)) { Mage::log($default, null, 'imagesmushit.log'); } } } }
/** * Track newly added catalog products * * @param Varien_Event_Observer $observer * @return null */ public function trackNewProduct(Varien_Event_Observer $observer) { $helper = Mage::helper('totango'); $helper->log('Track new catalog product, Start...'); if (!$helper->isEnabled()) { return; } if ($helper->isTrackerEnabled('product')) { $product = $observer->getProduct(); $isProduct = Mage::getModel('catalog/product')->getCollection()->addFieldToFilter('entity_id', $product->getId())->setPageSize(1)->getItems(); if (!$isProduct) { $productsCount = Mage::getModel('catalog/product')->getCollection()->getSize(); $helper->track(array('user-activity' => array('action' => 'NewProduct', 'module' => 'Catalog'), 'account-attribute' => array('Number of Catalog Products' => $productsCount + 1))); } else { $helper->log(array('message' => 'Not a new catalog product!', 'level' => 5)); } } }
/** * Delete option images * * @event catalog_product_delete_after_done * @param Varien_Event_Observer $observer */ public function deleteOptionImages($observer) { try { $product = $observer->getProduct(); if ($product->getId()) { $collection = Mage::getModel('aydus_customconfigurable/optionimage')->getCollection(); $collection->addFieldToFilter('product_id', $product->getId()); if ($collection->getSize() > 0) { foreach ($collection as $optionImage) { $optionImage->delete(); } } } } catch (Exception $e) { Mage::log($e->getMessage(), null, 'aydus_customconfigurable.log'); } return $this; }
public function saveProductFiles(Varien_Event_Observer $observer) { $product = $observer->getProduct(); $ids = $product->getDownloadsFilesIds(); $productId = $product->getId(); $relation = Mage::getSingleton('downloads/relation'); if ($productId && Mage::app()->getRequest()->getActionName() == 'save') { $relation->getResource()->deleteFilesProduct($productId); } if ($ids && $productId) { $ids = explode(',', $ids); $ids = array_unique($ids); foreach ($ids as $fileId) { $relation->setData(array('file_id' => $fileId, 'product_id' => $productId)); $relation->save(); } } }
/** * Applies the tier pricing structure across different variants of configurable products. * * @param Varien_Event_Observer $observer * * @return Spranks_ConfigurableTierPrices_Model_Observer */ public function catalogProductGetFinalPrice(Varien_Event_Observer $observer) { $product = $observer->getProduct(); if (!Mage::helper('spranks_configurabletierprices')->isExtensionEnabled() || Mage::helper('spranks_configurabletierprices')->isProductInDisabledCategory($product) || Mage::helper('spranks_configurabletierprices')->isExtensionDisabledForProduct($product)) { return $this; } // do not calculate tier prices based on cart items on product page // see https://github.com/sprankhub/Spranks_ConfigurableTierPrices/issues/14 if (Mage::registry('current_product') || !$product->isConfigurable()) { return $this; } // if tier prices are defined, also adapt them to configurable products if ($product->getTierPriceCount() > 0) { $tierPrice = $this->_calcConfigProductTierPricing($product); if ($tierPrice < $product->getData('final_price')) { $product->setData('final_price', $tierPrice); } } return $this; }
/** * Tracking of single product click * * @param \Varien_Event_Observer $observer * * @internal param $product */ public function sendClickTrackingForRedirectOnSingleResult(Varien_Event_Observer $observer) { $product = $observer->getProduct(); $searchHelper = Mage::helper('factfinder/search'); if (!Mage::getStoreConfig('factfinder/export/clicktracking') || !Mage::helper('factfinder')->isEnabled('tracking')) { return; } try { $idFieldName = Mage::helper('factfinder_tracking')->getIdFieldName(); $customerId = Mage::getSingleton('customer/session')->getCustomer()->getId(); if ($customerId) { $customerId = md5('customer_' . $customerId); } /** @var FACTFinder_Tracking_Model_Handler_Tracking $tracking */ $tracking = Mage::getModel('factfinder_tracking/handler_tracking'); $tracking->trackClick($product->getData($idFieldName), $searchHelper->getQuery()->getQueryText(), 1, $product->getData($idFieldName), Mage::helper('factfinder_tracking')->getSessionId(), null, 1, 1, $product->getSimilarity(), $product->getName(), $searchHelper->getPageLimit(), $searchHelper->getDefaultPerPageValue(), $customerId); } catch (Exception $e) { Mage::helper('factfinder/debug')->log($e->getMessage()); } }
public function autoBuyPromotions(Varien_Event_Observer $observer) { $quoteId = Mage::getSingleton('checkout/session')->getQuoteId(); $quote = Mage::getSingleton('sales/quote')->load($quoteId); $rules = Mage::getResourceModel('salesrule/rule_collection')->setValidationFilter(Mage::app()->getStore()->getWebsiteId(), $quote->getCustomerGroupId())->addAutoBuyPromotionFilter()->load(); if ($rules->count() < 1) { return; } foreach ($rules as $rule) { $rule->afterLoad(); } $fakeQuote = clone $quote; $fakeQuote->setId(null); $product = Mage::getModel('catalog/product')->load($observer->getProduct()->getId()); $item = Mage::getModel('sales/quote_item')->setQuote($fakeQuote)->setProduct($product); $item->setAllItems(array($product)); $item->getProduct()->setProductId($product->getEntityId()); $item->setQty(1); $item->getQuote()->setData('items_collection', array($item)); $addProductsToCart = array(); foreach ($rules as $rule) { if ($rule->getIsActive()) { if ($rule->getConditions()->validate($item)) { foreach ($rule->getProductId() as $productId) { $cartProduct = Mage::getModel('catalog/product')->setStoreId(Mage::app()->getStore()->getId())->load($productId); if ($cartProduct->isAvailable()) { $addProductsToCart[] = $cartProduct; } } } } } if (!empty($addProductsToCart)) { foreach ($addProductsToCart as $cartProduct) { $quote->addProduct($cartProduct); } $quote->collectTotals()->save(); } }