yaltik_odoo_custom/yaltik_crm_action/models/res_partner.py

66 lines
2.6 KiB
Python

# -*- coding: utf-8 -*-
# Copyright 2017 Fabien Bourgeois <fabien@yaltik.com>
#
# 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 <http://www.gnu.org/licenses/>.
""" 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 and childs """
active_id = self._context.get('active_id')
partner = self.env['res.partner'].browse(active_id)
if partner.parent_id:
partner_ids = [partner.parent_id.id] + partner.parent_id.child_ids.ids
domain = [('partner_id', 'in', partner_ids)]
elif partner.child_ids:
partner_ids = [partner.id] + partner.child_ids.ids
domain = [('partner_id', 'in', partner_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}