odoo8的openerp7模块转换

odoo8的openerp7模块转换,openerp,Openerp,我不是一个程序员,所以如果有人能修改模块的代码,使其在为OpenERP6.1和7构建的ODOO8中工作,我将不胜感激 该模块应从供应商处检索国际贸易术语解释通则,并将其显示在采购订单上 以下是module.py的代码: import time from openerp.osv import fields, osv class res_partner(osv.osv): _inherit = 'res.partner' _columns = { 'incoter

我不是一个程序员,所以如果有人能修改模块的代码,使其在为OpenERP6.1和7构建的ODOO8中工作,我将不胜感激 该模块应从供应商处检索国际贸易术语解释通则,并将其显示在采购订单上

以下是module.py的代码:

import time

from openerp.osv import fields, osv

class res_partner(osv.osv):
    _inherit = 'res.partner'
    _columns = {
        'incoterm_id': fields.many2one(
                'stock.incoterms',
                'Incoterms',
                help="Incoterm which stands for 'International Commercial"
                     "terms' implies its a series of sales terms which are"
                     "used in the commercial transaction."
                ),
        }
res_partner()

class purchase_order(osv.osv):
    _inherit = 'purchase.order'
    _columns = {
        'incoterm_id': fields.many2one(
                'stock.incoterms',
                'Incoterms',
                help="Incoterm which stands for 'International Commercial"
                     "terms' implies its a series of sales terms which are"
                     "used in the commercial transaction."
                ),
        }
    def onchange_partner_id(self, cr, uid, ids, part):
        res = super(purchase_order,self).onchange_partner_id(cr, uid, ids, part)
        if not part:
            return res
        part = self.pool.get('res.partner').browse(cr, uid, part)
        res['value'].update({'incoterm_id':part.incoterm_id.id or False})
        return res
purchase_order()`
这是我在odoo 8中得到的错误消息:

Traceback (most recent call last):
  File "/opt/odoo/openerp/http.py", line 500, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/odoo/openerp/http.py", line 517, in dispatch
result = self._call_function(**self.params)
  File "/opt/odoo/openerp/http.py", line 283, in _call_function
return checked_call(self.db, *args, **kwargs)
  File "/opt/odoo/openerp/service/model.py", line 113, in wrapper
return f(dbname, *args, **kwargs)
  File "/opt/odoo/openerp/http.py", line 280, in checked_call
return self.endpoint(*a, **kw)
  File "/opt/odoo/openerp/http.py", line 733, in __call__
return self.method(*args, **kw)
  File "/opt/odoo/openerp/http.py", line 376, in response_wrap
response = f(*args, **kw)
  File "/opt/odoo/addons/web/controllers/main.py", line 948, in call_kw
return self._call_kw(model, method, args, kwargs)
  File "/opt/odoo/addons/web/controllers/main.py", line 940, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/opt/odoo/openerp/api.py", line 237, in wrapper
return old_api(self, *args, **kwargs)
  File "/opt/odoo/openerp/api.py", line 360, in old_api
result = method(recs, *args, **kwargs)
  File "/opt/odoo/openerp/models.py", line 5727, in onchange
record._onchange_eval(name, field_onchange[name], result)
  File "/opt/odoo/openerp/models.py", line 5661, in _onchange_eval
method_res = getattr(self._model, method)(*args)
  File "/opt/odoo/openerp/api.py", line 237, in wrapper
return old_api(self, *args, **kwargs)
  File "/opt/odoo/addons/warning/warning.py", line 101, in onchange_partner_id
result =  super(purchase_order, self).onchange_partner_id(cr, uid, ids, part, context=context)
  File "/opt/odoo/openerp/api.py", line 237, in wrapper
return old_api(self, *args, **kwargs)
TypeError: onchange_partner_id() got an unexpected keyword argument 'context'

您可以继续在OdooV8中以旧的api风格编写,这是完全正确的。 尝试更改“onchange”方法,如下所示:

def onchange_partner_id(self, cr, uid, ids, part,context=None):
    res = super(purchase_order,self).onchange_partner_id(
            cr, uid, ids, part, context=context,
            )
我认为您缺少了最后一个参数
context
,它是在
purchase\u order\u form
视图的视图文件中提供的。更改上的
方法正在接收两个参数:

  • 合作伙伴ID;及
  • xml文件中的上下文

  • 您还没有在定义中包含最后一个参数
    context

    如果您想将其转换为新的API(v8.0),请阅读此Hi Hardik,非常感谢您的回答。我不再收到错误,但采购订单中未检索到国际贸易术语解释通则。我尚未修改采购订单表单视图文件。您想改为查看模块的view.xml文件吗?Hi Mangofunky,它在获取incoterm时是否会引发任何类型的错误。您是否检查了数据库中是否添加了《国际贸易术语解释通则》字段。让我知道,我们可以讨论这个Hi Hardik,是的,incoterm_id列添加在数据库res_partner和采购订单的两个表中。谢谢你花时间研究这个。嗨,Mangofunky,如果可能的话,分享你的“.py”和“.xml”文件,我会研究这个,让你知道。嗨,Hardik,我在上面的问题帖子中发布了所有的文件。非常感谢