Help

1

How to declare this new many2one field with condition?

Avatar
Pascal Tremblay

Hello all,

In the stock.picking model, I want to declare a new field (customer_of_division_id).

If the stock.picking has a value in his sale_id field, I would want to declare the field like this :

customer_of_division_id = fields.Many2one(related="sale_id.customer_of_division_id", 
domain="[('division_of_company_id','=',company_id)]",
string='Customer of the division')
If the stock.picking has NO value in his sale_id field, I would want to declare the field like this :
customer_of_division_id = fields.Many2one(related="partner_id.customer_of_division_id", 
domain="[('division_of_company_id','=',company_id)]",
string='Customer of the division')

How to achieve this?

Thanks all

Avatar
Discard
1 Answer
3
Avatar
Akhil P Sivan
Best Answer

Hi,

I think you may use a compute Many2one field.

For eg:

customer_of_division_id = fields.Many2one(compute='_get_division_id', comodel_name='res.partner', string='Customer of the division', store=True)
 
@api.depends('sale_id','partner_id')
def _get_division_id(self):
    if self.sale_id:
        self.customer_of_division_id = self.sale_id.customer_of_division_id.id
    elif self.partner_id:
        self.customer_of_division_id = self.partner_id.customer_of_division_id.id
3 Comments
Avatar
Discard
Avatar
Pascal Tremblay
-

You are really a beast! I try this and I come back soon! Big thanks (once again)!

Avatar
Pascal Tremblay
-

It works perfectly. Your help is really appreciated here!

Avatar
Akhil P Sivan
-

thank you :)