res.partner中的组按钮在odoo 10中不起作用

时间:2019-07-01 05:50:34

标签: odoo odoo-10

我想向继承的res.partner模型中添加组选择按钮和is_group布尔字段,但是当添加组按钮时,函数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'

我还需要一个公司类型按钮,即组,如果组按钮为TRUE,则需要以合作伙伴的形式相应地更改字段

2 个答案:

答案 0 :(得分:0)

如果要从res.partner重写_compute_company_type函数,则必须从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')

我认为将每个评估为布尔或假的团体或公司作为假或真是一个好主意,这样,如果一个真实,另一个假,则可以保持一致性。

答案 1 :(得分:-2)

您的字段is_group是布尔值。我不知道您所说的if partner.is_group:是什么意思。

布尔字段只有两个值,它们为true或false。如果不选择true或false,就不会有任何结果。

尝试使用是非题,让我知道。

感谢和问候。