Membuat Module Odoo (Bagian 2 – Menyusun Project)

Pada bagian pertama telah kita bahas bagaimana membuat module odoo dengan kode minimal. Pada bagian kedua ini kita akan membahas bagaimana menyusun project. Terutama menyusun folder yang baik agar kode lebih terorganisir. Memang sih ini tidak wajib, karena Odoo membebaskan bagaimana kita menyusun project, yang penting jalan. Jadi tulisan ini tidak wajib anda ikuti.

Folder dan file apa saja yang sebaiknya ada di module odoo ? Struktur ini adalah rekomendasi saya, terdiri dari beberapa folder dengan tujuan yang berbeda, folder ini tidak perlu semua ada, atau tidak semuanya perlu diisi. Jika tidak ada isinya juga tidak masalah.

1. models

Folder ini digunakan untuk menyimpan semua model / file python kita. Pada folder ini paling tidak ada file __init__.py walaupun kosong. File __init__.py digunakan untuk mengimport model / file python yang sudah kita buat, jika tidak ada model / file python biarkan kosong.

2. views

Folder ini digunakan untuk menyimpan file xml yang berhubungan dengan tampilan program Odoo. Tidak perlu ada file __init_.py, karena file xml diimport langsung lewat file __manifest__.py di root folder. Jika tidak memiliki file xml, biarkan kosong.

3. static

Pada folder ini setidaknya ada 3 folder lagi yaitu :

  • description

    Folder ini digunakan untuk mengatur tampilan module jika dibuka lewat menu Apps, misal jika mau install atau upgrade module. Paling tidak tempatkan gambar perusahaan anda dengan nama icon.png sebagai identitas module anda.

  • css dan js

    Folder ini digunakan untuk menaruh file css dan javascript. Ingat, file css dan js yang ditempatkan di folder ini tidak secara langsung dieksekusi oleh Odoo, perlu proses untuk mengeksekusinya. Proses ini akan dibahas lain kali.

4. data

Folder ini digunakan untuk menyimpan file xml yang berisi data default. Misal jika module ini diinstall, secara otomatis Odoo akan membuat produk dengan nama tempe dan tahu. Kosongkan jika tidak memiliki data default.

5. security

Folder ini digunakan untuk mengatur hak akses. Misal user A hanya bisa lihat tapi tidak bisa edit. Sedangkan user B bisa lihat dan edit tetapi tidak bisa hapus. Kode yang berhubungan dengan security wajib ada jika kita membuat model baru. Sedangkan jika hanya mengoveride module yang sudah ada dengan kode _inherit, seperti pada bagian 1, tidak wajib ada.

6. reports

Seperti namanya, untuk menyimpan file report. Baik yang berupa tampilan interactive dengan html atau pdf.

7. wizard

Folder ini digunakan untuk menyimpan file yang menangani antar 2 proses yang berbeda. Misal pada module sales, saat kita akan menekan tombol buat invoice, akan muncul pilihan apa yang akan diinvoicekan, apakah proses penjualannya atau buat uang muka. Pilihan inilah yang disebut wizard.

8. controllers

Folder ini digunakan untuk menulis controller, biasanya jika ingin membuat url custom sendiri dengan fungsi khusus, seperti /web/payment/makelar. Sedangkan jika kita hanya ingin melakukan ajax request saja, tidak perlu membuat controller.

Oke, diatas adalah struktur project yang saya sarankan jika kita membuat module Odooo. Tentu saja ada hal yang harus disesuaikan jika kita mengubah struktur folder project, terutama kode untuk mengimport file python dan xml. Link dibawah ini adalah source code dengan struktur folder seperti yang saya tulis diatas, dengan fungsi seperti pada bagian 1. Silakan lihat perbedaaanya.

Source Code

Leave a Reply

Your email address will not be published. Required fields are marked *