Pendahuluan
ERP Odoo adalah sistem ERP (Enterprise Resource Planning) berbasis open-source yang dirancang dengan arsitektur modular sehingga, setiap modul memiliki fungsi yang berbeda - beda namun, tetap terintegrasi. Arsitektur modular memungkinkan ERP Odoo untuk memberikan kebebasan bagi developer untuk menambah, mengubah, atau menghapus fitur sesuai kebutuhan tanpa mempengaruhi keseluruhan sistem.
Oleh karena itu, pemahaman yang baik terhadap struktur dasar modul serta alur development merupakan hal penting yang perlu kita ketahui sebagai ERP Odoo developer. Artikel ini akan membahas struktur modul, fungsi masing-masing direktori atau file di dalam modul ERP Odoo serta alur development modul Odoo secara garis besar.
A. Modul ERP Odoo
Modul di dalam istilah ERP Odoo adalah kumpulan beberapa fitur yang dikelompokkan berdasarkan tujuannya sehingga dapat ditambahkan, diaktifkan, atau dikembangkan. Modul ERP Odoo dibagi menjadi dua jenis, yaitu :
Modul default adalah modul yang development oleh ERP Odoo (contoh: CRM, Inventory, Sales).
Modul custom adalah modul yang development oleh pihak lain selain Odoo.
B. Struktur Modul ERP Odoo
Setiap modul ERP Odoo memiliki struktur nya masing - masing, tergantung pada kebutuhan dari dibentuknya modul tersebut, sehingga struktur dari suatu modul Odoo akan berbeda dengan struktur modul lainnya. Namun, ada struktur yang umum digunakan oleh developer dalam development Odoo. Berikut adalah contoh struktur yang umum digunakan dalam development modul Odoo:
__init__.py/
File tersebut digunakan untuk mengimpor Python package di dalam modul Odoo / folder sehingga, file tersebut wajib ada di setiap modul / folder. File tersebut dapat diletakkan di folder utama dan di dalam folder yang memiliki file Python seperti models, wizard, dan report.
Berikut adalah contoh isi dari file __init__.py :
__manifest__.py/
File tersebut berisi metadata modul seperti nama modul (name), versi (version), kategori modul (category), penjelasan modul (summary), nama pembuat modul (author), dependencies ke modul lainnya (depends), data yang dimuat (data), data demo (demo) dan sebagainya.
Berikut adalah contoh isi dari file __manifest__.py :
models/
Folder tersebut digunakan untuk menyimpan file init dan file Python yang mendefinisikan model (kelas) dan logika bisnis.
Berikut adalah contoh model dari file Python:
views/
Folder tersebut digunakan untuk menyimpan file XML yang berisi definisi tampilan antarmuka (UI) modul, seperti:
Form view
Tree (list) view
Search view
Menu dan action
Berikut adalah contoh view dari file XML:
security/
Folder tersebut digunakan untuk menyimpan file yang berkaitan dengan hak akses pengguna terhadap model.
Berikut adalah contoh security dari file CSV:
data/
Folder tersebut digunakan untuk menyimpan data - data awal atau statis yang perlu dimuat saat modul di instal. Misalnya:
Default configuration
Sequence
Record type ir.cron, ir.actions, dan lainnya
Berikut adalah contoh data dari file XML:
wizard/
Folder tersebut digunakan untuk menyimpan file Python (Transient Model) atau XML yang biasa digunakan untuk membuat wizard (popup form interaktif).
Berikut adalah contoh wizard dari file Python:
report/
Folder tersebut digunakan untuk menyimpan file untuk membuat laporan.
Berikut adalah contoh report dari file XML:
static/
Folder tersebut digunakan untuk menyimpan aset statis seperti gambar, file JS, CSS, dan lainnya.
Berikut adalah contoh static dari file JS:
i18n/
Folder ini menyimpan file terjemahan (translation) untuk modul. Biasanya menggunakan ekstensi .pot, .po, atau .mo.
Berikut adalah contoh i18n dari file POT:
C. Alur Development Modul Odoo
Berikut alur yang umum digunakan saat membuat modul baru di Odoo:

1. Persiapan Lingkungan Development
Sebelum memulai development modul Odoo, kita perlu menginstal Odoo dengan versi yang diinginkan dan membuat virtual environment Python agar lingkungan developement stabil dan terisolasi sehingga package yang dibutuhkan Odoo tidak bercampur dengan sistem utama. Langkah tersebut memastikan proses development berjalan lancar tanpa konflik dependensi. Berikut adalah cuplikan dalam persiapan lingkungan development
2. Membuat Modul Odoo
ERP Odoo menyediakan fitur scaffold yang sangat membantu developer dalam membuat struktur modul secara otomatis. Dengan satu perintah ./odoo-bin scaffold NAMA_MODUL PATH_MODUL, kita dapat langsung menghasilkan folder dan file dasar seperti __init__.py, __manifest__.py, serta direktori models, views, dan lainnya. Hal ini menghemat waktu dan membuat struktur modul yang konsisten. Berikut adalah contoh dalam menggunakan perintah scaffold.
3. Memodifikasi Metadata
File __manifest__.py adalah pusat informasi dari sebuah modul. Di dalamnya terdapat detail seperti nama modul, versi, dependensi, dan file data yang akan diload Odoo. Memahami dan memodifikasi file ini dengan benar adalah langkah penting agar modul bisa dikenali dan dijalankan oleh Odoo. Berikut adalah contoh dari file __manifest__.py.
4. Membuat Model atau Tampilan
Setelah struktur dasar dibuat, kita dapat mulai membuat logika bisnis di folder models/ menggunakan class Python, serta membuat antarmuka pengguna (UI) di folder views/ dengan XML. Model mendefinisikan struktur data dan perilaku, sedangkan view mengatur bagaimana data tersebut ditampilkan di UI Odoo. Berikut adalah contoh dari view di Odoo.
5. Menambahkan Hak Akses
Setiap model baru yang dibuat perlu diberikan hak akses agar dapat digunakan oleh pengguna. Hal ini dilakukan melalui file ir.model.access.csv di dalam folder security/. Tanpa konfigurasi ini, pengguna tidak akan bisa melihat, membuat, atau mengedit data dari model yang dibuat. Berikut adalah contoh dari akses di ERP Odoo.
6. Menginstal Modul dari UI / Terminal
Setelah modul dikembangkan, langkah selanjutnya adalah menginstalnya agar bisa digunakan. Proses instalasi bisa dilakukan dari antarmuka pengguna (UI) melalui modul Apps yang telah disediakan oleh ERP Odoo, atau melalui terminal dengan perintah tertentu. Hal tersebut akan memuat semua file yang telah didaftarkan dan mengaktifkan fitur modul di dalam sistem. Berikut adalah tampilan modul Apps Odoo.