Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openerp Odoo 8:onchange多人不工作_Openerp_Onchange_Odoo 8_Invoice_Accounting - Fatal编程技术网

Openerp Odoo 8:onchange多人不工作

Openerp Odoo 8:onchange多人不工作,openerp,onchange,odoo-8,invoice,accounting,Openerp,Onchange,Odoo 8,Invoice,Accounting,在accounting->invoice下,我试图在从列表中选择一个客户(字段:partner\u id:manyOne)时触发onchange uppon,但失败了,而在字段“origin”(类型:char)上添加onchange decorator正常工作。有人能帮忙吗 注意:在Odoo调试模式下,在客户字段上拖动鼠标时显示的帮助消息绑定到一个名为:onchange\u partner\u id(type,…)的onchange函数,我想知道这是否是问题的原因 代码如下:我从原始发票模型继承

在accounting->invoice下,我试图在从列表中选择一个客户(字段:partner\u id:manyOne)时触发onchange uppon,但失败了,而在字段“origin”(类型:char)上添加onchange decorator正常工作。有人能帮忙吗

注意:在Odoo调试模式下,在客户字段上拖动鼠标时显示的帮助消息绑定到一个名为:onchange\u partner\u 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

一旦更改合作伙伴id已存在,您需要覆盖它,不要再次定义它。和\u onchange\u 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

一旦更改合作伙伴id已存在,您需要覆盖它,不要再次定义它。和\u onchange\u origin在您的案例中起作用,因为它还不存在。

我找到了解决问题的替代方案(不理想)。我将整个函数从account_invoice core过渡到从它继承的自定义模块,然后在其中添加自定义代码。这样就可以正常触发partner on change函数(省略超级调用)


我已经找到了解决我的问题的替代方案(不理想)。我将整个函数从account_invoice core过渡到从它继承的自定义模块,然后在其中添加自定义代码。这样就可以正常触发partner on change函数(省略超级调用)


感谢Emipro,此函数在partner_id更改时触发,但现在我遇到了以下错误:[返回新的_api(self,*args,**kwargs)类型错误:onchange_partner_id()为关键字参数“date_invoice.”获取了多个值。请注意,我使用的是Pyhon 2.7,我还验证了超类中的方法签名及其7参数。在打开新发票(解析默认值上的代码)时会触发此错误。您能给我看一下您的代码吗?如果你能将它添加到问题中就好了。我在方法调用中添加了self,犯了一个小错误,我刚刚从超级方法参数列表中删除了它,现在检查一下。技术,它工作了,谢谢。请注意,我是Python初学者,在调用onchange\u partner\u id时将self从参数列表中排除有点令人困惑,而self是在该函数的实现中声明的。然而,这就是Python的工作原理!感谢Emipro,此函数在partner_id更改时触发,但现在我遇到了以下错误:[返回新的_api(self,*args,**kwargs)类型错误:onchange_partner_id()为关键字参数“date_invoice.”获取了多个值。请注意,我使用的是Pyhon 2.7,我还验证了超类中的方法签名及其7参数。在打开新发票(解析默认值上的代码)时会触发此错误。您能给我看一下您的代码吗?如果你能将它添加到问题中就好了。我在方法调用中添加了self,犯了一个小错误,我刚刚从超级方法参数列表中删除了它,现在检查一下。技术,它工作了,谢谢。请注意,我是Python初学者,在调用onchange\u partner\u id时将self从参数列表中排除有点令人困惑,而self是在该函数的实现中声明的。然而,这就是Python的工作原理!调用super总是明智的,因为您永远不知道该方法将从多少个位置被调用,所以请尽量避免完全重写,除非有必要。因为您认为您已经在函数中添加了它的基本代码,但它永远不会向前传递,并且会中断该执行通道。调用super始终是明智的,因为您永远不知道该方法将被调用多少个位置,所以请尽量避免完全重写,除非必要。因为您认为您已经在函数中添加了它的基本代码,但它永远不会向前传递,并且会中断执行通道。