2

I want to change each and every selected bundle items price on addtocart

How can I do this.

At present I am doing like below :

$item = $observer->getQuoteItem();
if ($item->getParentItem()) {$item = $item->getParentItem();}
$item->setCustomPrice(10);
$item->setOriginalCustomPrice(10);
$item->getProduct()->setIsSuperMode(true);

By doing above, it only change Parent Bundle product Price.

Please check screenshot :

enter image description here

So is there any posibility to change price of bundle items with custom price which will display properly even after order place in order view page. I have go through the code and find that "Bundle Items's" price are saved in infobuyrequest.

$sel_bundle_options = $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());
$sel_bundle_options['bundle_options'];

So is it possible to change price directly into that ? But after placing an order if we check on order view pages,it will display.

4
  • I would recommend using a total model instead of wasting time on editing the buyrequest.
    – adjco
    Commented Oct 6, 2016 at 21:48
  • Can you please elaborate ?
    – Krupali
    Commented Oct 7, 2016 at 5:22
  • Can someone Please help on this issue? Commented Mar 21, 2017 at 18:09
  • @MagentoTeam please look my answer.
    – Krupali
    Commented Apr 4, 2017 at 11:33

1 Answer 1

2

You can do below code while adding product to the cart.

$cart = Mage::helper('checkout/cart')->getCart()->getQuote()->getAllItems();
$price = '';
foreach ($cart as $i)
{
  if ($i->getId() == '') // Dont getting id for currently adding bundle item.
  {  
     $options = $i->getOptions();
     foreach ($options as $option)
     {
        if ($option->getCode() == 'bundle_selection_attributes')
        {
           $unserialized = unserialize($option->getValue());
           $price = 10; // YOUR CUSTOM PRICE
           $unserialized['price'] = number_format($price, 2, '.', ',');
           $option->setValue(serialize($unserialized));
        }
     }
     try
     {
        $i->setOptions($options)->save();
     }
     catch (Exception $e)
     {}
     $i->setCustomPrice($price);
     $i->setOriginalCustomPrice($price);
  }
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.