Odoo adalah framework ERP yang sangat fleksibel dan berbasis Python, yang memungkinkan pengembangan aplikasi bisnis dengan mudah. Salah satu komponen utama dalam pengembangan Odoo adalah Model, yang bertanggung jawab untuk menangani data dan logika bisnis. Artikel ini akan menjelaskan apa itu model, anatomi model, dan berbagai jenis fields yang digunakan dalam Odoo.
1. Apa Itu Model?
Model dalam Odoo adalah representasi data dari suatu entitas atau tabel dalam database. Model bertugas untuk mendefinisikan struktur data, relasi antar data, dan perilaku data tersebut dalam sistem.
Sebagai contoh, jika Anda ingin mengelola pelanggan, Anda dapat membuat model bernama res.partner yang menyimpan informasi seperti nama, email, nomor telepon, dan sebagainya.
Fungsi Utama Model:
- Mengelola struktur data yang akan disimpan di database.
- Menentukan relasi antar data (misalnya hubungan antara pelanggan dan faktur).
- Menyediakan logika bisnis yang berkaitan dengan entitas tersebut (seperti validasi atau aksi otomatis).
2. Anatomi Model
Setiap model di Odoo adalah subclass dari models.Model dan memiliki beberapa elemen utama. Berikut adalah anatomi dasar dari sebuah model Odoo:
- Import beberapa kode dari odoo, yaitu models, fields, dan api
- Meng-inherit class Models dari odoo, atau bisa dibilang menjadikan turunan
- _name merupakan nama model
- _description merupakan deskripsi model
- Field - field pada model
- Method atau fungsi pada model
3. Fields pada Model Odoo
Fields adalah elemen penting dalam model. Fields digunakan untuk menentukan tipe data yang disimpan dalam database. Berikut adalah beberapa jenis fields yang sering digunakan di Odoo:
a. Fields Dasar:
Tipe Field | Deskripsi | Contoh Penggunaan |
fields.Char | Teks pendek (maks. 255 karakter) | Nama pelanggan, kode produk |
fields.Text | Teks panjang | Deskripsi produk |
fields.Integer | Angka bulat | Jumlah stok |
fields.Float | Angka desimal | Harga produk, diskon |
fields.Boolean | Nilai benar/salah | Status aktif/nonaktif |
fields.Date | Tanggal | Tanggal lahir |
fields.Datetime | Tanggal dan waktu | Tanggal transaksi |
fields.Selection | Pilihan dari daftar nilai tetap | Status pesanan (Draft, Confirmed, Done) |
b. Fields Relasi
Tipe Field | Deskripsi | Contoh Penggunaan |
fields.Many2one | Relasi ke satu record lain | Pelanggan pada faktur |
fields.One2many | Relasi ke banyak record lain | Daftar produk dalam pesanan |
fields.Many2many | Relasi ke banyak record tanpa batasan | Kategori produk, hak akses pengguna |
c. Fields Khusus
Tipe Field | Deskripsi | Contoh Penggunaan |
fields.Html | Menyimpan data HTML | Deskripsi dengan format kaya teks |
fields.Binary | File biner | Gambar produk, lampiran file |
fields.Monetary | Nilai mata uang | Harga produk dengan mata uang spesifik |
Properti pada Fields
Setiap field dapat memiliki properti tambahan untuk menentukan perilaku dan validasi data:
- string: Label untuk field.
- required: Apakah field wajib diisi.
- default: Nilai default field.
- readonly: Apakah field hanya-baca.
- help: Bantuan atau deskripsi tambahan untuk pengguna.
Contoh Field dengan Properti:
name = fields.Char(string="Name", required=True, help="Nama lengkap pelanggan")
price = fields.Float(string="Price", default=0.0, required=True)
is_available = fields.Boolean(string="Available", default=True)
Kesimpulan
Model di Odoo adalah fondasi utama dalam pengelolaan data dan logika bisnis. Dengan memahami anatomi model dan jenis-jenis fields yang tersedia, Anda dapat mendesain aplikasi yang efisien dan sesuai dengan kebutuhan bisnis. Field memberikan fleksibilitas untuk menangani berbagai tipe data, sementara logika pada model memungkinkan Anda menerapkan aturan bisnis dengan mudah.
Jika Anda baru memulai, pastikan untuk memahami konsep dasar ini sebelum melanjutkan ke fitur-fitur yang lebih kompleks seperti views, controllers, dan modules lainnya. Happy coding!