我正在尝试在sale.order的树视图中显示一个res.partner
字段,称为phone
。
但它没有显示任何内容,只是没有数据的字段的名称。这是我在sale.order
phone : fields.char('Telefono del Cliente'),
此字段的Onchange功能:
def onchange_phone(self, cr, uid, ids, phone, context=None):
res = {}
if phone:
obj = self.pool.get('res.partner')
browse(cr, uid, phone)
res['phone'] = obj.phone
return {'value' : res}
在res.partner
上,该字段也称为phone
,显然是客户端的电话,我需要在sale.order
树视图上显示,这是我{{1}上的代码}:
sale_view.xml
有什么想法吗?
提前致谢。
答案 0 :(得分:1)
作为建议,如果你想要合作伙伴的电话号码,那么你不应该创建on_change的电话字段。您可以通过两种方式获得电话号码。
第一种方式和最佳方式,在sale.order中,onchange_partner_id()
方法是他们的,您需要覆盖该方法并使用合作伙伴的电话号码更新val。
第二种方式,您可以覆盖create()
方法和write()
销售方式。订单。
create()方法技巧:
vals.get('partner_id')
write()方法技巧:
答案 1 :(得分:1)
正如Odedra建议的那样,你应该这样做(这是从sale.py文件中获取的):
def onchange_partner_id(self, cr, uid, ids, part, context=None):
if not part:
return {'value': {'partner_invoice_id': False, 'partner_shipping_id': False, 'payment_term': False, 'fiscal_position': False}}
part = self.pool.get('res.partner').browse(cr, uid, part, context=context)
addr = self.pool.get('res.partner').address_get(cr, uid, [part.id], ['delivery', 'invoice', 'contact'])
pricelist = part.property_product_pricelist and part.property_product_pricelist.id or False
payment_term = part.property_payment_term and part.property_payment_term.id or False
fiscal_position = part.property_account_position and part.property_account_position.id or False
dedicated_salesman = part.user_id and part.user_id.id or uid
phone = part.phone or False
val = {
'partner_invoice_id': addr['invoice'],
'partner_shipping_id': addr['delivery'],
'payment_term': payment_term,
'fiscal_position': fiscal_position,
'user_id': dedicated_salesman,
'phone': phone,
}
if pricelist:
val['pricelist_id'] = pricelist
return {'value': val}
请注意,您不应该在基本模块上执行此操作,而是创建自己的模块并将其继承到sale.order模型。更重要的是,onchange不能在树视图上工作(就像你建议的那样),但是你可以很容易地在树上显示它 - 你必须首先将它放在你提供onchange的表单上,然后修改树形视图以显示电话号码。