Szeto Consultants

Minta Pencerahan: Konsep ‘Model’ di Odoo ERP

Minta Pencerahan: Konsep 'Model' di Odoo ERP

Diposting pada 19 Mar 2026, 10:19
Ditanyakan oleh: Kurniawan

Halo teman-teman praktisi Odoo di sini!

Saya Kurniawan, biasa ngoprek Odoo di kantor. Belakangan ini lagi coba eksplorasi lebih dalam soal kustomisasi atau pengembangan modul nih. Pas lagi baca-baca dokumentasi atau lihat kode di Odoo, sering banget ketemu istilah 'Model'.

Nah, jujur saya masih agak bingung sebenarnya 'Model' itu apa dan perannya di Odoo seberapa krusial. Apakah 'Model' itu semacam tabel di database saja, atau lebih dari itu, kayak representasi bisnis logic dari sebuah data? Misalkan, kalau kita mau bikin modul baru untuk management inventaris atau tracking proyek, 'Model' di Odoo itu fungsinya untuk apa saja ya?

Mungkin ada teman-teman yang bisa bantu kasih pencerahan dengan bahasa yang gampang dicerna, atau contoh sederhana biar saya lebih kebayang di kasus nyata?

Terima kasih banyak sebelumnya atas bantuannya!

Balasan (1)

Admin Odoo ForumAdmin & AI Support19 Mar 2026, 10:19
Halo Mas Kurniawan,

Wah, pertanyaan yang bagus banget nih! Istilah 'Model' ini memang fondasi penting kalau kita mau ngulik Odoo lebih dalam, terutama di sisi kustomisasi atau pengembangan modul. Seringkali memang agak bikin bingung di awal.

Santai saja Mas, saya bantu jelaskan biar lebih kebayang ya!

Secara sederhana, 'Model' di Odoo itu lebih dari sekadar tabel di database. Anggap saja 'Model' itu seperti sebuah kontrak atau blueprint yang mendefinisikan sebuah entitas bisnis lengkap dengan data (kolom di tabel) dan perilakunya (logic/fungsi yang bisa dilakukan).

Jadi, kalau Mas tanya apakah seperti representasi bisnis logic dari sebuah data, jawabannya adalah iya, bahkan lebih! 'Model' di Odoo adalah inti dari yang namanya ORM (Object-Relational Mapping). Ini artinya, Mas tidak perlu berinteraksi langsung dengan database menggunakan query SQL. Cukup panggil objek 'Model' ini di kode Python, dan Odoo akan mengurus komunikasi dengan database-nya secara otomatis.

Lalu, apa saja sih peran krusialnya dan fungsinya kalau kita mau bikin modul baru?

1. Representasi Data (Fields):
Ini bagian yang paling mirip dengan tabel database. Di dalam sebuah Model, Mas akan mendefinisikan 'Fields' (kolom data). Misalnya, untuk produk Mas butuh `nama_produk`, `harga_jual`, `stok_tersedia`. Field ini akan otomatis terpetakan menjadi kolom di tabel database.

2. Logika Bisnis (Methods/Functions):
Ini yang membedakan Model dari sekadar tabel. Di dalam Model, Mas bisa mendefinisikan 'Methods' atau fungsi-fungsi Python. Fungsi inilah tempat Mas menaruh logika bisnis. Contoh: menghitung total harga order, memvalidasi input data, mengubah status dokumen, atau bahkan memicu tindakan lain.

3. Relasi Antar Data (Relationships):
Jarang ada data yang berdiri sendiri. Model memungkinkan Mas mendefinisikan hubungan antar entitas. Contoh: satu produk bisa ada di banyak `sales.order.line` (relasi `one2many`), atau satu `sales.order` dimiliki oleh satu `res.partner` (customer) (relasi `many2one`).

4. Aturan Akses (Access Rights):
Model juga tempat kita mendefinisikan siapa saja yang boleh melihat, membuat, mengubah, atau menghapus data dari Model tersebut. Ini penting untuk keamanan dan pembatasan hak akses pengguna.

5. Validasi Data:
Mas bisa menambahkan aturan validasi pada Field atau di Method untuk memastikan data yang disimpan selalu konsisten dan benar sesuai dengan kebutuhan bisnis.

Agar lebih kebayang di kasus nyata seperti yang Mas tanyakan (manajemen inventaris atau tracking proyek), mari kita ambil contoh sederhana:

Untuk Modul Management Inventaris:
Mas pasti butuh Model untuk 'Produk', misalnya namanya `product.product`.
Fields-nya bisa berupa: `name` (nama produk), `default_code` (kode produk), `qty_available` (jumlah stok tersedia), `list_price` (harga jual), `cost` (harga beli).
Methods-nya bisa berupa: fungsi untuk menghitung ulang `qty_available` setiap ada transaksi, atau fungsi untuk memvalidasi apakah produk sudah ada dalam stok sebelum dijual.
Mas juga butuh Model untuk 'Perpindahan Stok', misalnya `stock.picking`.
Fields-nya bisa berupa: `name` (referensi perpindahan), `partner_id` (customer/vendor), `picking_type_id` (tipe perpindahan, masuk/keluar), `state` (status perpindahan).
Methods-nya bisa berupa: fungsi `action_done` yang akan memproses perpindahan dan otomatis mengubah stok produk.

Untuk Modul Tracking Proyek:
Mas akan butuh Model untuk 'Proyek', misalnya `project.project`.
Fields-nya bisa berupa: `name` (nama proyek), `user_id` (project manager), `date_start` (tanggal mulai), `date_end` (tanggal selesai yang diharapkan), `state` (status proyek).
Methods-nya bisa berupa: fungsi untuk menghitung progres proyek berdasarkan task yang sudah selesai, atau fungsi untuk mengarsipkan proyek.
Mas juga butuh Model untuk 'Task/Tugas', misalnya `project.task`.
Fields-nya bisa berupa: `name` (nama tugas), `project_id` (relasi ke Model Proyek), `user_id` (penanggung jawab), `date_deadline` (batas waktu), `stage_id` (tahap tugas).
Methods-nya bisa berupa: fungsi untuk menandai tugas sebagai selesai, atau fungsi untuk menghitung durasi pengerjaan task.

Intinya, 'Model' ini adalah jantung dari setiap modul Odoo. Dia mendefinisikan struktur data, bagaimana data tersebut berinteraksi satu sama lain, dan bagaimana logika bisnis diterapkan pada data tersebut. Kalau Mas mau kustomisasi atau bikin modul baru, langkah pertamanya pasti mendefinisikan Model apa saja yang dibutuhkan.

Semoga pencerahan ini membantu Mas Kurniawan lebih kebayang ya! Kalau ada pertanyaan lanjutan, jangan sungkan untuk diskusi lagi.

Salam Odoo!

Berikan Tanggapan

⚠️ Anti-Spam Aktif: Dilarang menyertakan tautan/URL di dalam form ini.
Butuh Konsultasi Odoo? 👋
Scroll to Top