Help

0

Dynamically change website price from website_sale product page

Avatar
Diogo Castro

Hello, everyone!

So, I've been modifying the website_sale module to adapt to my needs. Currently I need to make this module behave in a way that allows the user to be able to contract an insurance, however, my problem is that I need the user to be able to enter the value of the insured product so that the calculation with the website price is done correctly.

There are basically two fundamental fields for this insurance quotation to work, the number of days insured and the value of the insured product, as mentioned earlier, the calculation consists of adding the value of the insured product with the percentage referring to the number of days foreseen for the insurance. I've already managed to do the percentage calculation, but I still need to understand how to make a field inserted by me influence the calculation on the price that will be sent to the cart.

Basically, my question is: is that a way to make some kind of computed field in odoo website?


In the code below is all the logic applied so far, I managed to make price_extra perform the percentage calculation, but I still need to get the value informed within the product_value field to replace the product.product_tmpl_id.list_price


My ensurance.py created on my module

class InheritedProductProduct(models.Model):
_inherit = 'product.product'

product_value = fields.Float(string='Valor do Producto Asegurado') 

@api.depends('attribute_value_ids.price_ids.price_extra',
                'product_value',
                'attribute_value_ids.price_ids.product_tmpl_id')
def _compute_product_price_extra(self):
for product in self:
price_extra = 0.0
for attribute_price in
                product.mapped('attribute_value_ids.price_ids'):
if attribute_price.product_tmpl_id == product.product_tmpl_id:
price_extra += attribute_price.price_extra
product.price_extra = product.product_tmpl_id.list_price *
            (price_extra/100

class InheritedProductTemplate(models.Model):
_inherit = 'product.template'

product_value = fields.Float(string='Valor do producto asegurado')

class InheritedSaleOrderLine(models.Model):
_inherit = 'sale.order'

product_value = fields.Float(string='Valor do producto asegurado')


My inherited templates.xml also created on my module

    <template id="website_sale_inherit" inherit_id="website_sale.product">
<xpath expr="//div[hasclass('js_product')]" position="before">
<t t-set="website_sale_order" t-value="website.sale_get_order()"/>
<strong>Valor do producto asegurado</strong>
<input type="text" required="required"
            name="product_value" t-options="{'widget': 'monetary'}"
</xpath>
</template>
Avatar
Discard