2014-11-07 3 views
0

Я не программист, поэтому я был бы очень признателен, если бы кто-то мог исправить код для работы модуля в odoo 8, который был создан для openerp 6.1 Модуль должен получить инкотермс от поставщиков и отобразить их в заказе на поставку.преобразование модуля openerp7 для 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' 
+0

Если вы хотите преобразовать это в новый API (v8.0), прочитайте это [doc] (https://www.odoo.com/documentation/8.0/) –

ответ

1

Вы можете продолжить с записью в старом стиле АФИ в odoo v8, это совершенно нормально. Попробуйте изменить «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_order_form зрения. Метод on_change принимает два параметра:

  1. ID партнера; и
  2. Context из XML-файл

и вы не включили, что последний параметр context в вашем определении.

+0

Привет Хардик и большое спасибо за ваш ответ , Я больше не получаю ошибку, но Incoterm не извлекается в po. Я не изменил файл представления purchase_order_form. Вы хотите увидеть файл view.xml модуля? – Mangofunky

+0

Hi Mangofunky, Выбрасываете ли вы какие-либо ошибки при получении инкотерм. Вы отметили, что полевое инкотермс добавлено в базу данных или нет. Сообщите мне, мы можем обсудить это –

+0

Привет Хардик, да колонка incoterm_id добавляется в обе таблицы базы данных res_partner и purchase_order. Спасибо, что посмотрели на это. – Mangofunky

Смежные вопросы