diff options
Diffstat (limited to 'helpdesk_mgmt/models/res_partner.py')
| -rw-r--r-- | helpdesk_mgmt/models/res_partner.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/helpdesk_mgmt/models/res_partner.py b/helpdesk_mgmt/models/res_partner.py new file mode 100644 index 0000000..51cb48f --- /dev/null +++ b/helpdesk_mgmt/models/res_partner.py @@ -0,0 +1,47 @@ +from odoo import fields, models + + +class Partner(models.Model): + _inherit = "res.partner" + + helpdesk_ticket_ids = fields.One2many( + comodel_name="helpdesk.ticket", + inverse_name="partner_id", + string="Related tickets", + ) + + helpdesk_ticket_count = fields.Integer( + compute="_compute_helpdesk_ticket_count", string="Ticket count" + ) + + helpdesk_ticket_active_count = fields.Integer( + compute="_compute_helpdesk_ticket_count", string="Ticket active count" + ) + + helpdesk_ticket_count_string = fields.Char( + compute="_compute_helpdesk_ticket_count", string="Tickets" + ) + + def _compute_helpdesk_ticket_count(self): + for record in self: + ticket_ids = self.env["helpdesk.ticket"].search( + [("partner_id", "child_of", record.id)] + ) + record.helpdesk_ticket_count = len(ticket_ids) + record.helpdesk_ticket_active_count = len( + ticket_ids.filtered(lambda ticket: not ticket.stage_id.closed) + ) + count_active = record.helpdesk_ticket_active_count + count = record.helpdesk_ticket_count + record.helpdesk_ticket_count_string = "{} / {}".format(count_active, count) + + def action_view_helpdesk_tickets(self): + return { + "name": self.name, + "view_type": "form", + "view_mode": "tree,form", + "res_model": "helpdesk.ticket", + "type": "ir.actions.act_window", + "domain": [("partner_id", "child_of", self.id)], + "context": self.env.context, + } |
