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.0for 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_extraproduct.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>