Skip to Content
Menu
This question has been flagged
1 Reply
3590 Views

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
Avatar
Discard

Since you are using store=True then the computed method will be called only if one of the fields mentioned in depend api changed.

Best Answer

Hello,

Try below code:

@api.depends('units_sold')
def _compute_stock(self):
for rec in self:
current_stock = 0.0
if rec.units_sold > 0 and rec.units_entered > 0:
current_stock= rec.product_name.product_quantity - rec.units_sold + rec.units_entered
elif rec.units_sold > 0 and rec.units_entered == 0:
current_stock= rec.product_name.product_quantity - rec.units_sold
elif rec.units_sold == 0 and rec.units_entered > 0:
current_stock= rec.product_name.product_quantity + rec.units_entered
rec.current_stock = current_stock
rec.product_name.product_quantity = current_stock


Avatar
Discard
Related Posts Replies Views Activity
1
Jul 22
4007
1
Jul 21
2511
2
May 24
8672
1
Apr 21
2165
1
Apr 24
1706