openerp - res.partner:默认值取决于公司类型

时间:2016-03-17 11:49:53

标签: python xml openerp odoo-9

创建新联系人时,我想设置"客户"真实的"供应商"如果联系人是"个人"反之亦然:如果联系人是公司:设置"客户"为假和"供应商"真的。

到目前为止,我已尝试在xml文件中进行一些更改,但没有什么可以做的......

<field name="supplier">{[('is_company','=', True)],'default_customer': 0,'default_supplier': 1} </field>

有什么建议吗?

提前谢谢

此后我的.py

# -*- coding: utf-8 -*-
from openerp.osv import fields, osv
import time
import datetime
from datetime import datetime, date, time
from openerp import api 


class mypartner_custom(osv.osv):
    _inherit = 'res.partner'

    _columns = {

            'plafond_credit' : fields.float(string = 'Plafond Crédit',digits=(6,2)),
            'cin' : fields.char(string = 'CIN', size=15),


            }
mypartner_custom()

@api.onchange('is_company')
def change_company_type(self):
   if self.is_company == True:
      self.customer = False
      self.supplier = True
   else :
      self.customer = True
      self.supplier = False

3 个答案:

答案 0 :(得分:0)

使用onchange方法:

@api.onchange('company_type')
def change_company_type(self):
   if self.company_type == 'person':
      self.customer = True
      self.supplier = False
   else :
      self.customer = True
      self.supplier = True

不要忘记默认值,因为只有在更改company_type值时才执行此方法。

答案 1 :(得分:0)

您正在使用旧的api,请改用此方法:

def onchange_company_type(self, cr, uid, ids, company_type, context=None):
  return {'value': {'customer': False, 'supplier': True}} if company_type=='person' else {'value': {'customer': True, 'supplier': False}}

在xml文件的company_type字段中添加此属性

on_change="onchange_company_type(company_type)"

答案 2 :(得分:-1)

覆盖create方法,检查相应的值,并按您的要求进行设置:

def create(self, cr, uid, vals, context=None):
    if vals['contact'] == "Individual":
        vals['customer'] = True
        vals['supplier'] = False
    elif vals['contact'] == "Company":
        vals['customer'] = False
        vals['supplier'] = True
    return super(res_partner, self).create(cr, uid, vals, context=context)