Reputation: 1650
I'm looking for a way to add a value to price of configurable product after all required options are selected. I need to match against full SKU of selected simple product so per option prices are not suitable
I've built an JSON with SKU - price pairs and now looking for an JS event to do the task cleanly and also preserve the new price during add to cart and checkout stages
Thanks in advance for any insights
Upvotes: 1
Views: 1595
Reputation: 2493
You can use an observer class to listen to checkout_cart_product_add_after
, and use a product's "Super Mode" to set custom prices against the quote item.
In your /app/code/local/{namespace}/{yourmodule}/etc/config.xml:
<config>
...
<frontend>
...
<events>
<checkout_cart_product_add_after>
<observers>
<unique_event_name>
<class>{{modulename}}/observer</class>
<method>modifyPrice</method>
</unique_event_name>
</observers>
</checkout_cart_product_add_after>
</events>
...
</frontend>
...
</config>
And then create an Observer class at /app/code/local/{namespace}/{yourmodule}/Model/Observer.php
class <namespace>_<modulename>_Model_Observer
{
public function modifyPrice(Varien_Event_Observer $obs)
{
// Get the quote item
$item = $obs->getQuoteItem();
// Ensure we have the parent item, if it has one
$item = ( $item->getParentItem() ? $item->getParentItem() : $item );
// Load the custom price
$price = $this->_getPriceByItem($item);
// Set the custom price
$item->setCustomPrice($price);
$item->setOriginalCustomPrice($price);
// Enable super mode on the product.
$item->getProduct()->setIsSuperMode(true);
}
protected function _getPriceByItem(Mage_Sales_Model_Quote_Item $item)
{
$price;
//use $item and maybe your json object to determine the correct price
return $price;
}
}
This will handle the price changes from the backend. As for the javascript, I'm sorry but I'm not so sure!
Upvotes: 4