This question has been flagged

Hi,

I have a payment acquirer addon version 14, which we want to upgrade and be compatible with Odoo CE version 15.


When installing a version 14 addon on Odoo CE version 15, i am getting the following error message;

=================================================================

RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
File "/opt/meraodoo/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
result = request.dispatch()
File "/opt/meraodoo/odoo/http.py", line 687, in dispatch
result = self._call_function(**self.params)
File "/opt/meraodoo/odoo/http.py", line 359, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/meraodoo/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/meraodoo/odoo/http.py", line 348, in checked_call
result = self.endpoint(*a, **kw)
File "/opt/meraodoo/odoo/http.py", line 916, in __call__
return self.method(*args, **kw)
File "/opt/meraodoo/odoo/http.py", line 535, in response_wrap
response = f(*args, **kw)
File "/opt/meraodoo/addons/web/controllers/main.py", line 1336, in call_button
action = self._call_kw(model, method, args, kwargs)
File "/opt/meraodoo/addons/web/controllers/main.py", line 1324, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/opt/meraodoo/odoo/api.py", line 461, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/opt/meraodoo/odoo/api.py", line 448, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "", line 2, in button_immediate_install
File "/opt/meraodoo/odoo/addons/base/models/ir_module.py", line 74, in check_and_log
return method(self, *args, **kwargs)
File "/opt/meraodoo/odoo/addons/base/models/ir_module.py", line 483, in button_immediate_install
return self._button_immediate_function(type(self).button_install)
File "/opt/meraodoo/odoo/addons/base/models/ir_module.py", line 600, in _button_immediate_function
registry = update_module=True)
File "/opt/meraodoo/odoo/modules/registry.py", line 87, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/opt/meraodoo/odoo/modules/loading.py", line 474, in load_modules
processed_modules += load_marked_modules(cr, graph,
File "/opt/meraodoo/odoo/modules/loading.py", line 363, in load_marked_modules
loaded, processed = load_module_graph(
File "/opt/meraodoo/odoo/modules/loading.py", line 179, in load_module_graph
load_openerp_module(package.name)
File "/opt/meraodoo/odoo/modules/module.py", line 396, in load_openerp_module
__import__('odoo.addons.' + module_name)
File "/opt/meraodoo/all_addons/razorpay_payment/__init__.py", line 6, in
from import create_missing_journal_for_acquirers
Exception
odoo.addons.payment.models.payment_acquirer
The above exception was the direct cause of the following exception:
modules.registry.Registry.new(self._cr.dbname,
Traceback (most recent call last):
File "/opt/meraodoo/odoo/http.py", line 643, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/meraodoo/odoo/http.py", line 301, in _handle_exception
raise exception.with_traceback(None) from new_cause
ImportError: cannot import name 'create_missing_journal_for_acquirers' from ' (/opt/meraodoo/addons/payment/models/payment_acquirer.py)
odoo.addons.payment.models.payment_acquirer'

===========================================================


Any help or guidance in resolving direction will be really appreciated.


Thanks in advance…

Avatar
Discard
Best Answer

Hi tabkad,

The API that allows integrating payment providers in Odoo has undergone quite some change in version 15.0. You can find more information about this refactor here: https://github.com/odoo/odoo/pull/56187

We plan to add a "migration guide for payment acquirers" page in the documentation but it is not available yet. Until then, the best would be to look at already migrated modules to see how it's done. For example, you can check Buckaroo's implementation which is fairly straightforward.

About your question: since PR odoo/odoo#67331, multiple acquirers can share the same journal. Your acquirer must thus override _get_payment_method_information on the account.payment.method model.

Avatar
Discard

Thanks for this info Antoine. I have a v14 payment acquirer app that will be affected. Please let us know as soon as the migration guide is ready, or in draft form!

This might take a few months so if you need to migrate your acquirer faster than that I'd recommend reading the code of the `payment` module. It is now thoroughly documented and business methods are sorted according to the payment flow.
Also, I honestly don't think I'll remember to let you know when it's deployed 😬. It might be best to check the "Developer" section of the documentation from time to time. I'll publish the guide in the incoming new section "Howto's" (or similar) under "Developer".

Author Best Answer

I have the following import statement in my __init__.py

===============================================

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.

from . import controllers
from . import models
from odoo.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers

============================================================================


Maybe " from odoo.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers" requires to be changed as it is not compatible with version 15.


Any assistance/guidance will be really appreciated.

Avatar
Discard