Selamat datang di repositori Learn Odoo Python. Proyek ini berfungsi sebagai modul portofolio dan ruang kerja untuk mempelajari konsep pengembangan Odoo 16, mulai dari dasar hingga tingkat menengah.
Tujuan utama dari modul ini adalah untuk mengimplementasikan berbagai fitur umum Odoo secara modular, menciptakan basis kode yang bersih dan dapat dipelajari, serta mendokumentasikan proses pembelajaran.
- Untuk panduan instalasi dan setup lingkungan development, silakan merujuk ke file SETUP_LOKAL.md.
- Untuk catatan pembelajaran, penjelasan konsep mendalam, dan log troubleshooting, silakan merujuk ke file KONSEP_BELAJAR.md.
- Untuk detail implementasi proyek end-to-end "Modul Perpustakaan", silakan merujuk ke file PERPUSTAKAAN_PROJECT.md.
Modul ini (learn-odoo-python) berisi fitur-fitur berikut yang dibangun dari nol atau melalui pewarisan (inheritance) dari modul standar Odoo.
Sebuah model Odoo baru yang dibuat dari awal untuk mengelola data kursus.
- Model & Fields:
name,description, dll. - Relasi Data:
Many2onekeres.partneruntuk menunjuk seorang Pengajar.Many2manykeres.partneruntuk mendaftarkan banyak Siswa.
- Tampilan (Views): Form, Tree, dan Search view kustom.
- Menu & Action: Menu utama "Courses" untuk akses mudah.
- Logika Bisnis:
- Computed Field: Menghitung jumlah siswa (
student_count) secara otomatis. - Python Constraint: Memastikan setiap kursus memiliki nama yang unik.
- On-Change Event: Memperbarui field deskripsi secara dinamis saat pengajar diubah.
- Computed Field: Menghitung jumlah siswa (
- Keamanan:
- Access Control List (ACL): Mengatur izin CRUD melalui
ir.model.access.csv. - Grup Keamanan Kustom: Grup "Course / Manager" untuk hak akses khusus.
- Record Rules: Membatasi akses data sehingga hanya manajer yang bisa melihat semua kursus.
- Access Control List (ACL): Mengatur izin CRUD melalui
- Data Demo: Menyediakan data awal untuk mempermudah pengujian.
Memperluas fungsionalitas modul Sales standar melalui view & model inheritance.
- Penambahan Field: Menambahkan field boolean
is_special_orderdanx_is_online_order. - Modifikasi Tampilan:
- Menampilkan field baru di Form dan Tree View.
- Mengubah label field yang sudah ada (misalnya, "Customer" -> "Pelanggan").
- Tombol & Aksi:
- Tombol di header Form View untuk menjalankan logika Python (
action_toggle_special_order). - Visibilitas tombol dinamis menggunakan
attrs="{'invisible': ...}". - Integrasi dengan Chatter (
message_post) untuk mencatat aktivitas.
- Tombol di header Form View untuk menjalankan logika Python (
- Aksi Massal:
- Server Action: Aksi "Toggle Special Follow-Up" untuk mengubah status beberapa order sekaligus dari Tree View.
- Automated Action: Mengubah status order menjadi "Special Order" secara otomatis jika total melebihi nilai tertentu.
Membuat pop-up interaktif untuk memandu pengguna melakukan operasi massal.
- Wizard "Update Special Status": Memungkinkan pengguna memilih status baru dari pop-up dan menerapkannya ke semua Sales Order yang dipilih.
- Transient Model: Menggunakan
models.TransientModeluntuk menampung input pengguna sementara.
Membuat laporan PDF dinamis dari data yang ada.
- Action Report: Mendaftarkan laporan "Course Certificate" untuk model
course.course. - Template QWeb: Mendesain layout laporan menggunakan HTML/XML, menampilkan data kursus, pengajar, dan daftar siswa dalam format tabel.
Membuka Odoo untuk komunikasi dengan sistem eksternal.
- Endpoint HTML Sederhana: Membuat URL publik (
/course/hello) yang mengembalikan pesan HTML. - Endpoint API (JSON): Membuat URL publik (
/api/courses) yang mengambil data dari database dan mengembalikannya dalam format JSON, efektif menciptakan API read-only sederhana.
Sebuah proyek mandiri yang mensimulasikan pengembangan modul Odoo dari awal hingga akhir, mencakup beberapa model yang saling terhubung.
- Model & Relasi:
library.book: Mengelola data buku (judul, penulis, status).library.loan: Mencatat transaksi peminjaman (peminjam, tanggal pinjam, tanggal kembali).- Relasi
Many2oneantara peminjaman dan buku.
- Logika Bisnis & Tombol Aksi:
- Otomatisasi perubahan status buku saat dipinjam atau dikembalikan.
- Tombol "Return Book" dengan visibilitas dinamis untuk memproses pengembalian.
- Keamanan Lanjutan:
- Grup keamanan "Librarian" untuk akses eksklusif ke menu peminjaman.
- Record Rules: Memastikan pengguna biasa hanya dapat melihat buku yang tersedia (
state='available'), sedangkan Pustakawan dapat melihat semua buku.
- Laporan PDF (QWeb): Membuat laporan "Loan Card" untuk mencetak detail setiap transaksi peminjaman.