Групповая кнопка в res.partner не работает в odoo 10 - PullRequest
0 голосов
/ 01 июля 2019

Я хочу добавить кнопку выбора группы и логическое поле is_group к унаследованной модели res.partner, но при добавлении кнопки группы функция compute_company_type не работает. Мой код:

class Partner(models.Model):
_inherit = 'res.partner'

company_type = fields.Selection(selection_add=[('group', 'Group')])
refered = fields.Many2one('res.partner',string="Refered By")
import1 = fields.Float(string="Import")
temp_import = fields.Float(string="Temporary Import")
export = fields.Float(string="Export")
temp_export = fields.Float(string="Temporary Export")
transit = fields.Float(string="Transit")
group_id = fields.Many2one('res.group', string='Related Group', index=True)
is_group = fields.Boolean(string='Is a group', default=False)
is_company = fields.Boolean(string='Is a company', default=False)

@api.depends('is_company', 'is_group')
def _compute_company_type(self):
    for partner in self:
        if partner.is_group:
            partner.company_type = 'group'
        elif partner.is_company:
            partner.company_type = 'company'
        else:
            partner.company_type = 'person'

def _write_company_type(self):
    for partner1 in self:
        if partner1.company_type == 'group':
            partner1.is_group = partner1.company_type
        elif partner1.company_type == 'company':
            partner1.is_company = partner1.company_type
        else:
            partner1.company_type = 'person'   

@api.onchange('company_type')
def onchange_company_type(self):
    for partner in self:
        if partner.company_type == 'group':
            partner.is_group = (partner.company_type == 'group')
        elif partner.company_type == 'company':
            partner.is_company = (partner.company_type == 'company')
        else:
            partner.company_type = 'person'

Мне нужен еще один тип компании.кнопка т.е. группа, если кнопка группы ИСТИНА, необходимо изменить поля соответственно в форме res.partner

1 Ответ

0 голосов
/ 09 июля 2019

Если вы хотите переписать функцию _compute_company_type из res.partner, вы должны наследовать свою пользовательскую модель от res.partner, что-то вроде этого:

from odoo.addons.base.res import res_partner as res_partner


class CRMLeadPropertyMulti(res_partner.Partner):
    _inherit = 'res.partner'
    ## Your Code ##
    @api.depends('is_company', 'is_group')
    def _compute_company_type(self):
        for partner in self:
            partner.company_type = 'company' if partner.is_company else 'group' if partner.is_group else 'person'

    @api.onchange('company_type')
    def onchange_company_type(self):
        self.is_company = (self.company_type == 'company')
        self.is_group = (self.company_type == 'group')

Я думаю, что было бы хорошей идеей делать ложное или истинное в каждом случае, оценивая как bool, если это группа или компания, таким образом, если одно верно, а другое ложно, это может защитить последовательность.

...