# -*- coding: utf-8 -*- # Copyright 2017 Fabien Bourgeois # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . """ Partner adaptations """ from odoo import models, fields, api, _ class ResPartner(models.Model): """ Partner adaptations """ _inherit = 'res.partner' action_count = fields.Char(compute='_compute_action_count') @api.multi def _compute_action_count(self): for partner in self: domain = [('partner_id', '=', partner.id)] if partner.parent_id or partner.child_ids: domain.insert(0, '|') if partner.parent_id: domain.append(('partner_id', '=', partner.parent_id.id)) elif partner.child_ids: domain.append(('partner_id', 'in', partner.child_ids.ids)) action_count = self.env['crm.action'].search_count(domain) if action_count: domain.append(('state', '=', 'draft')) draft_count = self.env['crm.action'].search_count(domain) else: draft_count = 0 partner.action_count = u'{} / {}'.format(draft_count, action_count) @api.multi def partner_actions(self): """ Return action for active partner and its parent and childs """ self.ensure_one() partner = self[0] parent_id = partner.parent_id.id if partner.parent_id else partner.id domain = [('partner_id', 'child_of', parent_id)] return {'type': 'ir.actions.act_window', 'name': _('Actions'), 'view_mode': 'tree,form,calendar', 'res_model': 'crm.action', 'context': {'default_partner_id': partner.id, 'search_default_draft_only': 1}, 'domain': domain}