/** * Get product final price * * @param double $qty * @param Mage_Catalog_Model_Product $product * @return double */ public function getFinalPrice($qty = null, $product) { if (is_null($qty) && !is_null($product->getCalculatedFinalPrice())) { return $product->getCalculatedFinalPrice(); } $finalPrice = parent::getFinalPrice($qty, $product); $product->getTypeInstance(true)->setStoreFilter($product->getStore(), $product); $attributes = $product->getTypeInstance(true)->getConfigurableAttributes($product); $selectedAttributes = array(); if ($product->getCustomOption('attributes')) { $selectedAttributes = unserialize($product->getCustomOption('attributes')->getValue()); } $basePrice = $finalPrice; foreach ($attributes as $attribute) { $attributeId = $attribute->getProductAttribute()->getId(); $value = $this->_getValueByIndex($attribute->getPrices() ? $attribute->getPrices() : array(), isset($selectedAttributes[$attributeId]) ? $selectedAttributes[$attributeId] : null); if ($value) { if ($value['pricing_value'] != 0) { $finalPrice += $this->_calcSelectionPrice($value, $basePrice); } } } $product->setFinalPrice($finalPrice); return max(0, $product->getData('final_price')); }
/** * Retrieve product final price * * @param float|null $qty * @param Mage_Catalog_Model_Product $product * @return float */ public function getFinalPrice($qty = null, $product) { if (is_null($qty) && !is_null($product->getCalculatedFinalPrice())) { return $product->getCalculatedFinalPrice(); } $finalPrice = $this->getBasePrice($product, $qty); $product->setFinalPrice($finalPrice); Mage::dispatchEvent('catalog_product_get_final_price', array('product' => $product, 'qty' => $qty)); $finalPrice = $product->getData('final_price'); $finalPrice = $this->_applyOptionsPrice($product, $qty, $finalPrice); $finalPrice = max(0, $finalPrice); $product->setFinalPrice($finalPrice); $session = Mage::getSingleton('core/session'); $session_geo_ip = $session->getGeoIp(); if (isset($session_geo_ip['is_changed'])) { $model_city = $session->getGeoIp(); } else { $model_city = Mage::getModel('geoip/abstract')->data; } if (isset($model_city['code']) && $model_city['code'] != '2137') { $price_add = Mage::getStoreConfig('shipping/option/checkout_multiple_maximum_qty'); $finalPrice = $finalPrice + $price_add; } return $finalPrice; }
/** * Returns product final price depending on options chosen * * @param double $qty * @param Mage_Catalog_Model_Product $product * @return double */ public function getFinalPrice($qty = null, $product) { if (is_null($qty) && !is_null($product->getCalculatedFinalPrice())) { return $product->getCalculatedFinalPrice(); } $finalPrice = parent::getFinalPrice($qty, $product); if ($product->hasCustomOptions()) { /* @var $typeInstance Mage_Catalog_Model_Product_Type_Grouped */ $typeInstance = $product->getTypeInstance(true); $associatedProducts = $typeInstance->setStoreFilter($product->getStore(), $product)->getAssociatedProducts($product); foreach ($associatedProducts as $childProduct) { /* @var $childProduct Mage_Catalog_Model_Product */ $option = $product->getCustomOption('associated_product_' . $childProduct->getId()); if (!$option) { continue; } $childQty = $option->getValue(); if (!$childQty) { continue; } $finalPrice += $childProduct->getFinalPrice($childQty) * $childQty; } } $product->setFinalPrice($finalPrice); Mage::dispatchEvent('catalog_product_type_grouped_price', array('product' => $product)); return max(0, $product->getData('final_price')); }
/** * Get product final price * * @param double $qty * @param Mage_Catalog_Model_Product $product * @return double */ public function getFinalPrice($qty = null, $product) { if (is_null($qty) && !is_null($product->getCalculatedFinalPrice())) { return $product->getCalculatedFinalPrice(); } $finalPrice = $product->getPrice(); $basePrice = $finalPrice; /** * Just product with fixed price calculation has price */ if ($finalPrice) { $tierPrice = $this->_applyTierPrice($product, $qty, $finalPrice); $specialPrice = $this->_applySpecialPrice($product, $finalPrice); $finalPrice = min(array($tierPrice, $specialPrice)); $product->setFinalPrice($finalPrice); Mage::dispatchEvent('catalog_product_get_final_price', array('product' => $product)); $finalPrice = $product->getData('final_price'); } $basePrice = $finalPrice; if ($product->hasCustomOptions()) { $customOption = $product->getCustomOption('bundle_option_ids'); $customOption = $product->getCustomOption('bundle_selection_ids'); $selectionIds = unserialize($customOption->getValue()); $selections = $product->getTypeInstance(true)->getSelectionsByIds($selectionIds, $product); $selections->addTierPriceData(); Mage::dispatchEvent('prepare_catalog_product_collection_prices', array('collection' => $selections, 'store_id' => $product->getStoreId())); foreach ($selections->getItems() as $selection) { if ($selection->isSalable()) { $selectionQty = $product->getCustomOption('selection_qty_' . $selection->getSelectionId()); if ($selectionQty) { $finalPrice = $finalPrice + $this->getSelectionFinalPrice($product, $selection, $qty, $selectionQty->getValue()); } } } } else { // if ($options = $this->getOptions($product)) { // /* some strange thing // foreach ($options as $option) { // $selectionCount = count($option->getSelections()); // if ($selectionCount) { // foreach ($option->getSelections() as $selection) { // if ($selection->isSalable() && ($selection->getIsDefault() || ($option->getRequired() &&)) { // $finalPrice = $finalPrice + $this->getSelectionPrice($product, $selection); // } // } // } // } // */ // } } $finalPrice = $finalPrice + $this->_applyOptionsPrice($product, $qty, $basePrice) - $basePrice; $product->setFinalPrice($finalPrice); return max(0, $product->getData('final_price')); }
/** * Retrieve product final price * * @param float|null $qty * @param Mage_Catalog_Model_Product $product * @return float */ public function getFinalPrice($qty = null, $product) { if (is_null($qty) && !is_null($product->getCalculatedFinalPrice())) { return $product->getCalculatedFinalPrice(); } $finalPrice = $this->getBasePrice($product, $qty); $product->setFinalPrice($finalPrice); Mage::dispatchEvent('catalog_product_get_final_price', array('product' => $product, 'qty' => $qty)); $finalPrice = $product->getData('final_price'); $finalPrice = $this->_applyOptionsPrice($product, $qty, $finalPrice); $finalPrice = max(0, $finalPrice); $product->setFinalPrice($finalPrice); return $finalPrice; }
/** * Get product final price * * @param double $qty * @param Mage_Catalog_Model_Product $product * @return double */ public function getFinalPrice($qty = null, $product) { if (is_null($qty) && !is_null($product->getCalculatedFinalPrice())) { return $product->getCalculatedFinalPrice(); } $finalPrice = $product->getPrice(); if ($product->hasCustomOptions()) { $customOption = $product->getCustomOption('bundle_option_ids'); $optionIds = unserialize($customOption->getValue()); $customOption = $product->getCustomOption('bundle_selection_ids'); $selectionIds = unserialize($customOption->getValue()); $selections = $product->getTypeInstance()->getSelectionsByIds($selectionIds); foreach ($selections->getItems() as $selection) { if ($selection->isSalable()) { $selectionQty = $product->getCustomOption('selection_qty_' . $selection->getSelectionId()); if ($selectionQty) { $finalPrice = $finalPrice + $this->getSelectionPrice($product, $selection, $selectionQty->getValue()); } } } } else { if ($options = $this->getOptions($product)) { /* some strange thing foreach ($options as $option) { $selectionCount = count($option->getSelections()); if ($selectionCount) { foreach ($option->getSelections() as $selection) { if ($selection->isSalable() && ($selection->getIsDefault() || ($option->getRequired() &&)) { $finalPrice = $finalPrice + $this->getSelectionPrice($product, $selection); } } } } */ } } $finalPrice = $this->_applyTierPrice($product, $qty, $finalPrice); $finalPrice = $this->_applySpecialPrice($product, $finalPrice); $product->setFinalPrice($finalPrice); Mage::dispatchEvent('catalog_product_get_final_price', array('product' => $product)); $finalPrice = $product->getData('final_price'); $finalPrice = $this->_applyOptionsPrice($product, $qty, $finalPrice); return max(0, $product->getData('final_price')); }
/** * Retrieve product final price * * @param integer $qty * @param Mage_Catalog_Model_Product $product * @return float */ public function getFinalPrice($qty = null, $product) { if (is_null($qty) && !is_null($product->getCalculatedFinalPrice())) { return $product->getCalculatedFinalPrice(); } $finalPrice = parent::getFinalPrice($qty, $product); /** * links prices are added to base product price only if they can be purchased separately */ if ($product->getLinksPurchasedSeparately()) { if ($linksIds = $product->getCustomOption('downloadable_link_ids')) { $linkPrice = 0; $links = $product->getTypeInstance(true)->getLinks($product); foreach (explode(',', $linksIds->getValue()) as $linkId) { if (isset($links[$linkId])) { $linkPrice += $links[$linkId]->getPrice(); } } $finalPrice += $linkPrice; } } $product->setData('final_price', $finalPrice); return max(0, $product->getData('final_price')); }
/** * Create Product array from Mage_Catalog_Model_Product * * @param Mage_Catalog_Model_Product $product * @return array */ public function getProductData(Mage_Catalog_Model_Product $product) { try { $data = array('url' => $product->getProductUrl(), 'title' => htmlspecialchars($product->getName()), 'spider' => 1, 'price' => $product->getPrice(), 'description' => urlencode($product->getDescription()), 'tags' => htmlspecialchars($product->getMetaKeyword()), 'images' => array(), 'vars' => array('sku' => $product->getSku(), 'storeId' => '', 'typeId' => $product->getTypeId(), 'status' => $product->getStatus(), 'categoryId' => $product->getCategoryId(), 'categoryIds' => $product->getCategoryIds(), 'websiteIds' => $product->getWebsiteIds(), 'storeIds' => $product->getStoreIds(), 'groupPrice' => $product->getGroupPrice(), 'formatedPrice' => $product->getFormatedPrice(), 'calculatedFinalPrice' => $product->getCalculatedFinalPrice(), 'minimalPrice' => $product->getMinimalPrice(), 'specialPrice' => $product->getSpecialPrice(), 'specialFromDate' => $product->getSpecialFromDate(), 'specialToDate' => $product->getSpecialToDate(), 'relatedProductIds' => $product->getRelatedProductIds(), 'upSellProductIds' => $product->getUpSellProductIds(), 'getCrossSellProductIds' => $product->getCrossSellProductIds(), 'isSuperGroup' => $product->isSuperGroup(), 'isGrouped' => $product->isGrouped(), 'isConfigurable' => $product->isConfigurable(), 'isSuper' => $product->isSuper(), 'isSalable' => $product->isSalable(), 'isAvailable' => $product->isAvailable(), 'isVirtual' => $product->isVirtual(), 'isRecurring' => $product->isRecurring(), 'isInStock' => $product->isInStock(), 'weight' => $product->getSku())); // Add product images if (self::validateProductImage($product->getImage())) { $data['images']['full'] = array("url" => $product->getImageUrl()); } if (self::validateProductImage($product->getSmallImage())) { $data['images']['smallImage'] = array("url" => $product->getSmallImageUrl($width = 88, $height = 77)); } if (self::validateProductImage($product->getThumbnail())) { $data['images']['thumb'] = array("url" => $product->getThumbnailUrl($width = 75, $height = 75)); } return $data; return $data; } catch (Exception $e) { Mage::logException($e); } }
/** * Get product final price * * @param double $qty * @param Mage_Catalog_Model_Product $product * @return double */ public function getFinalPrice($qty = null, $product) { if (is_null($qty) && !is_null($product->getCalculatedFinalPrice())) { return $product->getCalculatedFinalPrice(); } //$finalPrice = $this->getBasePrice($product, $qty); // $product->setFinalPrice($finalPrice); Mage::dispatchEvent('catalog_product_get_final_price', array('product' => $product, 'qty' => $qty)); $finalPrice = 0; //$product->getData('final_price'); $finalPrice = $this->_applyOptionsPrice($product, $qty, $finalPrice); $finalPrice += $this->getTotalBundleItemsPrice($product, $qty); $product->setFinalPrice($finalPrice); if ($this->getTotalBundleItemsPrice($product, $qty) == 0) { return max(0, $product->getData('special_price')); } else { return max(0, $product->getData('final_price')); } }
/** * Get product final price * * @param double $qty * @param Mage_Catalog_Model_Product $product * @return double */ public function getFinalPrice($qty = null, $product) { if (is_null($qty) && !is_null($product->getCalculatedFinalPrice())) { return $product->getCalculatedFinalPrice(); } $finalPrice = $this->getBasePrice($product, $qty); $product->setFinalPrice($finalPrice); Mage::dispatchEvent('catalog_product_get_final_price', array('product' => $product, 'qty' => $qty)); $finalPrice = $product->getData('final_price'); $finalPrice = $this->_applyOptionsPrice($product, $qty, $finalPrice); $isReservation = ITwebexperts_Payperrentals_Helper_Data::getAttributeCodeForId($product->getId(), 'is_reservation'); $bundlePriceType = ITwebexperts_Payperrentals_Helper_Data::getAttributeCodeForId($product->getId(), 'bundle_pricingtype'); if ($isReservation != ITwebexperts_Payperrentals_Model_Product_Isreservation::STATUS_DISABLED) { if ($bundlePriceType == ITwebexperts_Payperrentals_Model_Product_Bundlepricingtype::PRICING_BUNDLE_FORALL) { if (is_object($product->getCustomOption('info_buyRequest'))) { $source = unserialize($product->getCustomOption('info_buyRequest')->getValue()); if (isset($source[ITwebexperts_Payperrentals_Model_Product_Type_Reservation::START_DATE_OPTION])) { $startingDate = $source[ITwebexperts_Payperrentals_Model_Product_Type_Reservation::START_DATE_OPTION]; $endingDate = $source[ITwebexperts_Payperrentals_Model_Product_Type_Reservation::END_DATE_OPTION]; } } if (isset($startingDate) && isset($endingDate)) { $customerGroup = ITwebexperts_Payperrentals_Helper_Data::getCustomerGroup(); $finalPrice = ITwebexperts_Payperrentals_Helper_Price::calculatePrice($product->getId(), $startingDate, $endingDate, $qty, $customerGroup); } } else { $finalPrice = $this->getTotalBundleItemsPrice($product, $qty); } } else { $finalPrice += $this->getTotalBundleItemsPrice($product, $qty); } $product->setFinalPrice($finalPrice); return max(0, $product->getData('final_price')); }