Как переопределить метод мастера на odoo 12

Я пытаюсь переопределить единственный метод класса мастера, который запускается, когда пользователь нажимает кнопку "Отправить".

account_consolidation_custom / wizard / CustomClass.py

class AccountConsolidationConsolidate(models.TransientModel):
    _name = 'account.consolidation.consolidate_custom'
    _inherit = 'account.consolidation.base'

    def get_account_balance(self, account, partner=False, newParam=False):
    ....my custom code...

account_consolidation_custom / __ manifest_.py

{
    'name': "account_consolidation_custom",

    'summary': """""",

    'description': """
    """,

    'author': "My Company",
    'website': "http://www.yourcompany.com",

    'category': 'Uncategorized',
    'version': '0.1',

    'depends': ['base','account_consolidation'],

    # always loaded
    'data': [],
}

Имя метода точно такое же, как и у оригинала, но когда я нажимаю кнопку отправки, кажется, ничего не происходит, метод все еще вызывается из базового модуля, а не из пользовательского.

Вы знаете, как перезаписать только один метод вместо всего класса мастера?

2 ответа

Решение

Вы создаете новую модель мастера / переходного процесса при присвоении различных значений частным атрибутам _name а также _inherit. Вместо этого вы должны использовать оригинальное название модели odooaccount.consolidation.consolidate к обоим атрибутам или просто удалите _name атрибут полностью.

Odoo имеет собственный механизм наследования, управляемый тремя атрибутами класса. _name, _inherit а также _inherits.

Мне удалось заставить его работать, используя следующий код:

class AccountConsolidationConsolidate(models.TransientModel):
    _inherit = 'account.consolidation.consolidate'

   def get_account_balance(self, account, partner=False, newParam=False):
    ....my custom code...

После этого я смог перезаписать базовые методы.

Другие вопросы по тегам