# -*- 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.model def partner_actions(self): """ Return action for active partner and its parent """ active_id = self._context.get('active_id') partner = self.env['res.partner'].browse(active_id) 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)) return {'type': 'ir.actions.act_window', 'name': _('Actions'), 'view_mode': 'tree,form,calendar', 'res_model': 'crm.action', 'context': {'default_partner_id': partner.id}, 'domain': domain}