from odoo import api, fields, models, Command class Partner(models.Model): _inherit = 'res.partner' equipment_count = fields.Integer(compute='_compute_equipment_count', string='Equipment Count') owned_equipment_ids = fields.One2many(comodel_name="bemade_fsm.equipment", inverse_name="partner_id", string="Owned Equipments") equipment_ids = fields.One2many(comodel_name='bemade_fsm.equipment', inverse_name='partner_location_id', string='Site Equipment') is_site_contact = fields.Boolean(string='Is a site contact', compute="_compute_is_site_contact", search="_search_is_site_contact",) site_ids = fields.Many2many(string='Work Sites', comodel_name='res.partner', relation='res_partner_site_contact_rel', column1='site_contact_id', column2='site_id', tracking=True) site_contacts = fields.Many2many(string='Site Contacts', comodel_name='res.partner', relation='res_partner_site_contact_rel', column1='site_id', column2='site_contact_id', domain=[('is_company', '=', False)], tracking=True) work_order_contacts = fields.Many2many(string='Work Order Recipients', comodel_name='res.partner', relation='res_partner_work_order_contacts_rel', column1='res_partner_id', column2='work_order_contact_id', domain=[('is_company', '=', False)], tracking=True) @api.depends('site_ids') def _compute_is_site_contact(self): for rec in self: rec.is_site_contact = rec.site_ids is not False @api.depends('equipment_ids') def _compute_equipment_count(self): for rec in self: all_equipment_ids = self.env['bemade_fsm.equipment'].search([('partner_id', '=', rec.id)]) rec.equipment_count = len(all_equipment_ids) @api.model def _search_is_site_contact(self, operator, value): return [('site_contacts', '!=', False)]