Odoo 8:onchange many2one 不工作
Odoo 8: onchange many2one not working
在会计->发票下,我试图在从列表中选择一个客户(字段:partner_id:many2one)时触发onchange upon,但它失败了,而在字段上添加onchange装饰器"origin"(类型:char)正常工作。有人可以帮忙吗?
注意:在 Odoo 调试模式下,在客户字段上拖动鼠标时显示的帮助消息表明它绑定到一个名为 onchange_partner_id(type,...) 的 onchange 函数,我想知道这是不是问题原因
这是代码:我继承了原始发票模型而不是添加 onchange 函数
class stock_picking(models.Model):
_inherit = "account.invoice"
#NOT triggered
@api.onchange('partner_id')
def _onchange_customer(self):
print("debug:y_account_invoice: _onchange_customer:selected")
#triggered successfully
@api.onchange('origin')
def _onchange_origin(self):
print("debug:y_account_invoice: _onchange_origin")
你只需要在py中覆盖这个方法即可。
@api.multi
def onchange_partner_id(self, type, partner_id, date_invoice=False, payment_term=False, partner_bank_id=False, company_id=False):
res = super(classname, self).onchange_partner_id(type, partner_id, date_invoice=date_invoice,payment_term=payment_term, partner_bank_id=partner_bank_id, company_id=company_id)
#### Update your code
# If you want to set any fields value then just simply update it in res and return res
res['value'].update({'account_id': new_value,})
return res
onchange_partner_id 已经存在,您需要覆盖它,不要再次定义它。并且 _onchange_origin 在您的情况下工作,因为它还不存在。
我找到了解决我的问题的替代方案(不理想)。我已经覆盖了从 account_invoice 核心到继承自它的自定义模块的整个功能,然后在其上添加了我的自定义代码。使partner on change函数正常触发。(省略super调用)
#overwritten function
@api.multi
def onchange_partner_id(self, type, partner_id, date_invoice=False,
payment_term=False, partner_bank_id=False, company_id=False):
#KEEP the Core Code
#custom code
#add the sales person to the result in case it was not False
if user_id_sales_per != False:
print("Debug:account.invoice.onchange_partner_id(): my custom code")
在会计->发票下,我试图在从列表中选择一个客户(字段:partner_id:many2one)时触发onchange upon,但它失败了,而在字段上添加onchange装饰器"origin"(类型:char)正常工作。有人可以帮忙吗?
注意:在 Odoo 调试模式下,在客户字段上拖动鼠标时显示的帮助消息表明它绑定到一个名为 onchange_partner_id(type,...) 的 onchange 函数,我想知道这是不是问题原因
这是代码:我继承了原始发票模型而不是添加 onchange 函数
class stock_picking(models.Model):
_inherit = "account.invoice"
#NOT triggered
@api.onchange('partner_id')
def _onchange_customer(self):
print("debug:y_account_invoice: _onchange_customer:selected")
#triggered successfully
@api.onchange('origin')
def _onchange_origin(self):
print("debug:y_account_invoice: _onchange_origin")
你只需要在py中覆盖这个方法即可。
@api.multi
def onchange_partner_id(self, type, partner_id, date_invoice=False, payment_term=False, partner_bank_id=False, company_id=False):
res = super(classname, self).onchange_partner_id(type, partner_id, date_invoice=date_invoice,payment_term=payment_term, partner_bank_id=partner_bank_id, company_id=company_id)
#### Update your code
# If you want to set any fields value then just simply update it in res and return res
res['value'].update({'account_id': new_value,})
return res
onchange_partner_id 已经存在,您需要覆盖它,不要再次定义它。并且 _onchange_origin 在您的情况下工作,因为它还不存在。
我找到了解决我的问题的替代方案(不理想)。我已经覆盖了从 account_invoice 核心到继承自它的自定义模块的整个功能,然后在其上添加了我的自定义代码。使partner on change函数正常触发。(省略super调用)
#overwritten function
@api.multi
def onchange_partner_id(self, type, partner_id, date_invoice=False,
payment_term=False, partner_bank_id=False, company_id=False):
#KEEP the Core Code
#custom code
#add the sales person to the result in case it was not False
if user_id_sales_per != False:
print("Debug:account.invoice.onchange_partner_id(): my custom code")