bemade-addons/bemade_fsm/models/res_partner.py
2024-06-19 09:47:49 -04:00

84 lines
2.5 KiB
Python

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)