Cara mengganti metode wizard di odoo 12

Saya mencoba mengganti satu metode pada kelas penyihir yang dieksekusi ketika pengguna mengklik kirim.

akun_konsolidasi_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...

akun_konsolidasi_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': [],
}

Nama metodenya sama persis dengan aslinya, tetapi ketika saya mengklik tombol kirim, sepertinya tidak terjadi apa-apa, masih memanggil metode dari modul dasar, bukan dari modul khusus.

Tahukah Anda cara agar hanya satu metode yang ditimpa, bukan seluruh kelas penyihir?


person czuniga    schedule 14.01.2020    source sumber


Jawaban (2)


Anda membuat model wizard/sementara baru saat memberikan nilai berbeda pada atribut pribadi _name dan _inherit. Sebaliknya Anda harus menggunakan nama model odoo asli account.consolidation.consolidate untuk kedua atribut atau hapus saja atribut _name sepenuhnya.

Odoo memiliki mekanisme pewarisannya sendiri, yang dikelola oleh tiga atribut kelas _name, _inherit dan _inherits.

person CZoellner    schedule 14.01.2020
comment
Terima kasih atas tanggapan Anda, masih sama setelah melakukan perubahan tersebut, metode dasar masih dijalankan, bukan kustom. - person czuniga; 14.01.2020
comment
Apakah Anda memiliki semua __init__.py file? - person CZoellner; 14.01.2020
comment
Ya, saya memiliki __init__.py di dalam folder wizard dengan nama file yang diimpor, dan kemudian saya memanggil wizard from . import wizard di __init__.py utama - person czuniga; 14.01.2020
comment
Ehrm, model aslinya bukan Transient melainkan abstractModel. - person CZoellner; 14.01.2020
comment
Ah, dan Anda harus memperluas model sementara yang diwarisinya account.consolidation.consolidate. Saya telah mengubah jawabannya. - person CZoellner; 14.01.2020
comment
Terima kasih atas dukungan Anda, saya dapat mewujudkannya dengan yang berikut: class AccountConsolidationConsolidate(models.TransientModel): _inherit = 'account.consolidation.consolidate' , saya menghargai bantuan Anda! - person czuniga; 14.01.2020

Saya dapat membuatnya berfungsi menggunakan kode berikut:

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

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

Setelah itu saya bisa menimpa metode dasar.

person czuniga    schedule 14.01.2020