I need solution for this : Changing price is not reflecting for configurable products so as suggested by @Arjen Miedema,
I followed : Magento Configurable Product Price Overriding Simple Product Price
1)when i used only git hub extension referred by @Pronto= > worked fine in view page, but not in cart page.
2)when i used only @Alan answer = > worked fine in cart page, but not in view page.
than i override the price.php of an extension using @Alan answer, than in cart page i saw following error
Fatal error: Call to a member function getFinalPrice() on a non-object in
app/code/core/Mage/Catalog/Model/Product.php on line 717
this is line 717 : return $this->getPriceModel()->getFinalPrice($qty, $this);
and view page is showing blank now.
I am using following code in
Price.php
app/code/community/OrganicInternet/SimpleConfigurableProducts/Catalog/Model/Product/Type/Configurable/Price.php
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2014 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/**
* Product type price model
*
* @category Mage
* @package Mage_Catalog
* @author Magento Core Team <[email protected]>
*/
class Mage_Catalog_Model_Product_Type_Configurable_Price extends Mage_Catalog_Model_Product_Type_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();
}
$basePrice = $this->getBasePrice($product, $qty);
$finalPrice = $basePrice;
$product->setFinalPrice($finalPrice);
Mage::dispatchEvent('catalog_product_get_final_price', array('product' => $product, 'qty' => $qty));
$finalPrice = $product->getData('final_price');
$finalPrice += $this->getTotalConfigurableItemsPrice($product, $finalPrice);
$finalPrice += $this->_applyOptionsPrice($product, $qty, $basePrice) - $basePrice;
$finalPrice = max(0, $finalPrice);
$product->setFinalPrice($finalPrice);
return $finalPrice;
}
/**
* Get Total price for configurable items
*
* @param Mage_Catalog_Model_Product $product
* @param float $finalPrice
* @return float
*/
public function getTotalConfigurableItemsPrice($product, $finalPrice)
{
$price = 0.0;
$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());
}
foreach ($attributes as $attribute) {
$attributeId = $attribute->getProductAttribute()->getId();
$value = $this->_getValueByIndex(
$attribute->getPrices() ? $attribute->getPrices() : array(),
isset($selectedAttributes[$attributeId]) ? $selectedAttributes[$attributeId] : null
);
$product->setParentId(true);
if ($value) {
if ($value['pricing_value'] != 0) {
$product->setConfigurablePrice($this->_calcSelectionPrice($value, $finalPrice));
Mage::dispatchEvent(
'catalog_product_type_configurable_price',
array('product' => $product)
);
$price += $product->getConfigurablePrice();
}
}
}
return $price;
}
/**
* Calculate configurable product selection price
*
* @param array $priceInfo
* @param decimal $productPrice
* @return decimal
*/
protected function _calcSelectionPrice($priceInfo, $productPrice)
{
if($priceInfo['is_percent']) {
$ratio = $priceInfo['pricing_value']/100;
$price = $productPrice * $ratio;
} else {
$price = $priceInfo['pricing_value'];
}
return $price;
}
protected function _getValueByIndex($values, $index) {
foreach ($values as $value) {
if($value['value_index'] == $index) {
return $value;
}
}
return false;
}
}
please help me where i am missing now?
getPriceModel()
and check what's going there, what it's returning, and debug it there in a way that you prefer (it can even be a var_dump + die).