Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Magento - reloadPrice() modifications

My client needs to make an operation on products custom options.

Using Magento CE, I create a product, and give it some custom options from within the built-in left hand side menu in "Manage products" > "Add new product", such as "mm" (millimeters) and "mt" (meters)

This product will have both radio options and a textbot input.

Let's say we have

Base price: 0 

MM:
Radio option A which costs 0,9
Radio option B which costs 1,2
Radio option C which costs 2,3 

MT:
Textbox value = unknown yet

Let's say user chooses Radio option B and enters 10 in the textfield

Price should be updates as such:

1,2 * 10 + 0

Which is

radio value cost * textbox value + base price 

Is there any way to tell the code to take the value of the radio button, multiply it for the value of the textbox and sum it all to the base price?

Where could I look to see the current behavior of a product's custom options?

EDIT

I saw that whenever a value is selected, the reloadPrice() function is called.

I thought to check if both inputs are radio and text, then get the value of the text and multiply it for the value of the radio.

Is that right? Can you point me better?

like image 605
Phillip Avatar asked May 03 '15 17:05

Phillip


1 Answers

This helps me, I hope this will also helps you

 initialize : function(config){
                this.config = config;
                this.reloadPrice();
                document.observe("dom:loaded", this.reloadPrice.bind(this));

            },
            reloadPrice : function(){
               price = new Number();
                config = this.config;
                skipIds = [];
                skipIds = [];
                relatedword = [];
                relatedvalue = [];
                relatedid = [];
                counter_each=0;
                counter=1;
                first=0;
                areaValue=1;
                submitbutton=true;

                $$('body .product-custom-option').each(function(element){
                    var optionId = 0;
                    element.name.sub(/[0-9]+/, function(match){
                        optionId = match[0];
                    });
                    if (this.config[optionId]) {
                        if (element.type == 'checkbox' || element.type == 'radio') 
                        {
                            if (element.checked) 
                            {
                                if (config[optionId][element.getValue()]) 
                                {
                                    <?php if(Mage::getVersion() >= 1.7): ?>
                                        price += parseFloat(config[optionId][element.getValue()].price);
                                    <?php else: ?>
                                        price += parseFloat(this.config[optionId][selectOption.value]);
                                    <?php endif; ?>  
                                }
                            }
                        }
}
like image 97
Ravi Mule Avatar answered Nov 18 '22 21:11

Ravi Mule