Как переопределить метод мастера на 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': [],
}

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

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


person czuniga    schedule 14.01.2020    source источник


Ответы (2)


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

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

person CZoellner    schedule 14.01.2020
comment
Спасибо за ваш ответ, после внесения этих изменений он остается прежним, базовый метод все еще выполняется, а не настраивается. - person czuniga; 14.01.2020
comment
У вас есть все __init__.py файлы? - person CZoellner; 14.01.2020
comment
Да, у меня есть __init__.py внутри папки мастера с импортированным именем файла, а затем я вызываю мастер from . import wizard на главном __init__.py - person czuniga; 14.01.2020
comment
Эээ, исходная модель - это не переходная, а абстрактная модель. - person CZoellner; 14.01.2020
comment
Ах, и вы должны расширить его наследующую переходную модель account.consolidation.consolidate. Я изменил ответ. - person CZoellner; 14.01.2020
comment
Спасибо за вашу поддержку, мне удалось заставить это работать со следующим: class AccountConsolidationConsolidate(models.TransientModel): _inherit = 'account.consolidation.consolidate' , я ценю вашу помощь! - person czuniga; 14.01.2020

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

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

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

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

person czuniga    schedule 14.01.2020