Как переопределить метод мастера на odoo 12 - PullRequest
1 голос
/ 14 января 2020

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

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 ]

2 голосов
/ 14 января 2020

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

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

1 голос
/ 14 января 2020

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

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

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

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

...