Magento – how to change custom option price by query in magento

magento-1.8

I have 32000 products in Magento,

When I added them I have set custom option attribute to products they work perfectly, but now I want to change the price of custom option attribute of all products.

enter image description here

Is there any way to change price by query or any other tricks ??

Best Answer

<?php

$magePath = 'app/Mage.php'; 

require_once $magePath;

Varien_Profiler::enable(); 

Mage::setIsDeveloperMode(true); 

ini_set('display_errors', 1);

umask(0);

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

$product_ids = array(2);
//Product Id = 2, you can use any product id
$productmodel = Mage::getModel('catalog/product');

foreach ($product_ids as $product_id) { 

/**i use this two arrays for collecte value because i uses inside setData of 
current option*/

$cos=array();
$co=array();

$product = $productmodel->load($product_id);

$options = $product->getProductOptionsCollection();

if (isset($options)) { 

foreach ($options as $o) { 

$title = $o->getTitle();

/**
this block is for changing information of specific option from collection options inside
current product
the save method for this option in end of code
*/

if ($title == "Line 1/Front") { 

$o->setProduct($product); 

$o->setTitle("Line 1/Ftont"); 

$o->setType("drop_down"); 

$o->setIsRequire(1);

$o->setSortOrder(0);


}

/**
this block for update or add information of specific value inside current option
*/

$optionType = $o->getType(); 

//test type

if ($optionType == "drop_down") { 

//getting collection of value related to current option

$values = $o->getValuesCollection(); 

$found = false; 

foreach ($values as $k => $v) { 

//test existing of value for update

if (1 == preg_match("/said$/i", $v->getTitle())) { 

//update and save

$v->setTitle("morad")

->setSku("kk")

->setPriceType("fixed")

->setSortOrder(0)

->setPrice(floatval(13.0000));

$v->setOption($o)->save();

/**
this ligne is important i collecte all value required for normalize save function 
related to current option
*/

$cos[]=$v->toArray($co);

} 
} 


/**
create new value object you can use $option->getValueInstance() for working with 
getSingleton
*/

$value = Mage::getModel('catalog/product_option_value'); 

$value->setOption($o) 

->setTitle('valueiwant') 

->setSku("nn")

->setPriceType("fixed")

->setSortOrder(1)

->setPrice(12)

/**
this ligne is important (relation forigien key) for related this new value
to specific option
*/

->setOptionId($o->getId());

$value->save();

/**
this ligne is important i collecte all value required for normalize save function   
related to current option
*/

$cos[]=$value->toArray($co);
} 


$o->setData("values",$cos)->save();

//var_dump($cos);

}


}
}
Related Topic