Gunakan tanda [] untuk mencari tag gan! contoh [flutter, javascript]

Odoo - Inheritance Model

Odoo - Inheritance Model

Artikel ini dibukukan pada buku Odoo ERP Development
access_time 29 Jan 2025 remove_red_eye 494 Kali spellcheck 380 Kata, 3137 Karakter
#odoo #python

Inheritance atau pewarisan dalam Odoo adalah mekanisme yang memungkinkan pengembang untuk memperluas atau memodifikasi model yang sudah ada tanpa mengubah struktur dasarnya. Odoo menyediakan tiga jenis inheritance utama:

  1. Classical Inheritance (Pewarisan Klasik)
  2. Extension Inheritance (Pewarisan Ekstensi)
  3. Delegation Inheritance (Pewarisan Delegasi)

Mari kita bahas satu per satu.

1. Classical Inheritance (Pewarisan Klasik)

Classical inheritance di Odoo mirip dengan konsep pewarisan dalam bahasa pemrograman berorientasi objek. Dalam metode ini, model baru dibuat dengan mewarisi model yang sudah ada, memungkinkan penggunaan ulang metode dan atributnya.

Contoh Classical Inheritance

from odoo import models, fields

class ResPartnerInherited(models.Model):
    _inherit = 'res.partner'

    partner_code = fields.Char(string='Partner Code')

Pada contoh di atas, model res.partner diwarisi, dan field baru partner_code ditambahkan tanpa mengubah definisi model aslinya.

2. Extension Inheritance (Pewarisan Ekstensi)

Extension inheritance digunakan ketika kita ingin menambahkan atau memodifikasi field dan metode dari model yang sudah ada tanpa mendefinisikan model baru. Ini dilakukan dengan menggunakan _inherit tanpa mendeklarasikan _name.

Contoh Extension Inheritance

from odoo import models, fields

class ResPartnerExtended(models.Model):
    _inherit = 'res.partner'

    is_verified = fields.Boolean(string='Verified')

    def verify_partner(self):
        for record in self:
            record.is_verified = True

Di sini, field is_verified dan metode verify_partner ditambahkan ke model res.partner tanpa mengubah struktur model aslinya.

3. Delegation Inheritance (Pewarisan Delegasi)

Delegation inheritance digunakan ketika kita ingin membuat hubungan antara dua model tanpa menggabungkan field atau metode mereka. Ini dilakukan dengan menggunakan field Many2one ke model yang diwarisi.

Contoh Delegation Inheritance

from odoo import models, fields

class CompanyBranch(models.Model):
    _name = 'company.branch'
    _inherits = {'res.partner': 'partner_id'}

    partner_id = fields.Many2one('res.partner', required=True, ondelete='cascade')
    branch_code = fields.Char(string='Branch Code')

Pada contoh di atas, model company.branch mewarisi res.partner melalui field partner_id. Dengan demikian, semua field dan metode dari res.partner dapat diakses di company.branch, tetapi tabel database tetap terpisah.

Kapan Menggunakan Setiap Jenis Inheritance?

  • Classical Inheritance: Digunakan jika ingin membuat model baru yang sepenuhnya mewarisi model lain.
  • Extension Inheritance: Cocok untuk menambahkan atau mengubah field/metode pada model yang sudah ada.
  • Delegation Inheritance: Berguna jika ingin membuat relasi antara model tanpa menggabungkan field mereka.

Kesimpulan

Inheritance dalam Odoo adalah fitur yang sangat fleksibel yang memungkinkan pengembang untuk memperluas dan menyesuaikan fungsionalitas aplikasi tanpa harus mengubah kode inti Odoo. Dengan memahami perbedaan antara tiga jenis inheritance ini, pengembang dapat mengoptimalkan struktur aplikasi mereka sesuai dengan kebutuhan bisnis.

Artikel ini dibukukan pada buku Odoo ERP Development
Navigasi Konten