Setiap fungsionalitas di Odoo dikemas dalam sebuah modul. Anggap saja modul adalah sebuah "kotak" berisi semua yang dibutuhkan untuk sebuah fitur: file Python π untuk logika dan file XML π untuk tampilan.
Memahami struktur dasar sebuah modul adalah langkah pertama yang paling penting dalam perjalanan Anda menjadi seorang Odoo Developer.
Setiap modul Odoo, sekecil apapun, harus memiliki struktur dasar ini:
nama_modul/
βββ __init__.py (File Python)
βββ __manifest__.py (File Python)
nama_modul/: Folder utama yang namanya menjadi ID teknis modul Anda.__init__.py: File ini memberitahu Python bahwa direktori ini adalah sebuah "paket". Isinya seringkali digunakan untuk mengimpor file-file Python lain di dalam modul.__manifest__.py: Ini adalah jantung β€οΈ dari modul Anda. File ini berisi semua informasi (metadata) tentang modul Anda.__manifest__.pyFile ini seperti "KTP" modul Anda. Odoo membacanya untuk tahu semua tentang modul tersebut.
# -*- coding: utf-8 -*-
{
'name': "Nama Modul Keren Saya", # Nama yang tampil di UI Odoo
'version': '16.0.1.0.0',
'summary': "Ringkasan singkat fitur modul ini.",
'description': """
Deskripsi yang lebih panjang dan mendetail.
Bisa beberapa baris.
""",
'author': "Nama Anda",
'website': "<https://www.websiteanda.com>",
'category': 'Services/Extra Tools',
'depends': ['base'], # Modul lain yang jadi prasyarat
'data': [
# 'security/ir.model.access.csv',
# 'views/nama_view.xml',
# 'views/templates.xml',
],
'demo': [
# 'demo/demo.xml',
],
'installable': True,
'application': False,
'auto_install': False,
}
Seiring pertumbuhan modul, Anda butuh lebih banyak "laci" untuk menyimpan file dengan rapi. Ini adalah struktur yang sangat umum dan direkomendasikan:
nama_modul/
βββ __init__.py
βββ __manifest__.py
βββ π controllers/
β βββ __init__.py
β βββ main.py
βββ πΎ data/
β βββ nama_data.xml
βββ π demo/
β βββ nama_demo.xml
βββ π i18n/
β βββ id.po
βββ π§ models/
β βββ __init__.py
β βββ nama_model.py
βββ π security/
β βββ ir.model.access.csv
βββ πΌοΈ static/
β βββ description/
β β βββ icon.png
β βββ src/
β β βββ js/
β β βββ css/
β β βββ xml/
βββ π¨ views/
β βββ nama_view.xml
βββ β¨ wizards/
βββ __init__.py
βββ nama_wizard.py
π Penjelasan Setiap "Laci"
controllers/: Untuk membuat halaman web publik, portal, atau API.data/: Untuk memuat data awal yang wajib ada (misal: kategori produk).demo/: Sama sepertidata/, tapi hanya untuk data contoh (demo).i18n/: File terjemahan (.po) agar modul Anda bisa "berbicara" banyak bahasa.models/: Direktori paling penting! Di sinilah Anda mendefinisikan struktur database dan semua logika bisnis.security/: Mengatur siapa boleh melakukan apa. Berisi file hak akses (.csv) dan grup keamanan (.xml).static/: Untuk file-file yang diakses langsung oleh browser (CSS, JavaScript, gambar). Di sinilah ikon modul Anda (icon.png) disimpan.views/: Mendefinisikan semua antarmuka pengguna (UI): form, list, kanban, dll.wizards/: Untuk membuat popup interaktif yang memandu pengguna melakukan sesuatu.
Dengan mengikuti struktur ini, modul Anda akan rapi, mudah dirawat, dan dicintai oleh sesama developer Odoo. π