需求:针对登录用户的权限不同,创建价格表时备选显示不同(普通用户只显示自己名下的供应商和产品,管理员可见所有供应商和产品)
方案步骤:
1.找到供应商价格表的代码位置,
经过查找,代码位置为odoo\addons\product\models下的res_partner.py(供应商筛选条件)和product_template.py(产品筛选条件).
2.添加筛选条件
product_template.py(产品筛选条件):
在class ProductTemplate(models.Model)下添加如下代码
@api.model
def name_search(self, name='', args=None, operator='ilike', limit=100):
if self.env.user.login == 'admin':
res = self._name_search(name, args, operator, limit=limit)
return res
else:
res = self.env['product.template'].search([('create_uid','=',self.env.user.id)])
if len(res) == 1:
a = []
a.append(res.id)
a.append(res.name)
b = []
b.append(a)
return b
else:
b = []
for i in res:
a = []
a.append(i.id)
a.append(i.name)
b.append(a)
return b
res_partner.py(供应商筛选条件):
在class Partner(models.Model)下添加如下代码
@api.model
def name_search(self, name='', args=None, operator='ilike', limit=100):
if self.env.user.login == 'admin':
res = self._name_search(name, args, operator, limit=limit)
return res
else:
res = self.env['res.partner'].search([('user_id', '=', self.env.user.id)])
if len(res) == 1:
a = []
a.append(res.id)
a.append(res.name)
b = []
b.append(a)
return b
else:
b = []
for i in res:
a = []
a.append(i.id)
a.append(i.name)
b.append(a)
return b