I have a computed field that computes every time I refresh the page. I tried using api.depends but it computes twice, once when I fill in the dependent field and once when I save. I want to compute the once then never change it again for that record. How can I do that? I have included the code below
product_name = fields.Many2one('product.info', string='Product') units_sold = fields.Integer(string='Units Sold', required = True)
current_stock = fields.Integer("Today's Stock", compute='_compute_stock', store=True)
units_entered = fields.Integer('Stock Entered') @api.depends('units_sold')
def _compute_stock(self):
for rec in self:
if rec.units_sold > 0 and rec.units_entered > 0:
rec.current_stock= rec.product_name.product_quantity - rec.units_sold + rec.units_entered
elif rec.units_sold > 0 and rec.units_entered == 0:
rec.current_stock= rec.product_name.product_quantity - rec.units_sold
elif rec.units_sold == 0 and rec.units_entered > 0:
rec.current_stock= rec.product_name.product_quantity + rec.units_entered
rec.product_name.product_quantity = rec.current_stock
Since you are using store=True then the computed method will be called only if one of the fields mentioned in depend api changed.