from odoo import api, fields, models class Partner(models.Model): _inherit = "res.partner" equipment_count = fields.Integer(compute="_compute_equipment_count") owned_equipment_ids = fields.One2many( comodel_name="bemade_fsm.equipment", compute="_compute_owned_equipment_ids", 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( 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, ) is_service_site = fields.Boolean( compute="_compute_is_service_site", ) @api.depends("equipment_ids", "child_ids.company_type", "child_ids.equipment_ids") def _compute_owned_equipment_ids(self): for rec in self: ids = rec.equipment_ids | rec.child_ids.mapped("equipment_ids") rec.owned_equipment_ids = ids or False @api.depends("site_ids") def _compute_is_site_contact(self): for rec in self: rec.is_site_contact = rec.site_ids @api.depends("equipment_ids") def _compute_equipment_count(self): for rec in self: all_equipment_ids = self.env["bemade_fsm.equipment"].search( [("partner_location_id", "=", rec.id)] ) rec.equipment_count = len(all_equipment_ids) @api.model def _search_is_site_contact(self, operator, value): return [("site_ids", "!=", False)] def _compute_is_service_site(self): for rec in self: rec.is_service_site = bool(rec.equipment_ids)