Membuat Module Odoo (Bagian 2 – Menyusun Project)

Pada bagian pertama kita telah membahas 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.

Jadi folder dan file apa saja yang sebaiknya ada di module odoo ?

Struktur ini adalah rekomendasi saya, berdasarkan module-module bawaan odoo yang 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. Pada folder ini paling tidak harus ada file dengan nama __init__.py walaupun kosong. File __init__.py digunakan untuk mengimport model/file python yang sudah kita buat, jika tidak ada model/file python yang perlu kita import biarkan isi file ini kosong.

2. views

Folder ini digunakan untuk menyimpan file xml yang berhubungan dengan tampilan program Odoo. Tidak perlu ada file __init_.py di dalam folder ini, 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 model yang sudah ada dengan kode _inherit, seperti pada bagian pertama, 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 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 dengan fungsi khusus, seperti /web/payment/makelar. Sedangkan jika kita hanya ingin melakukan ajax request ke model tertentu, tidak perlu membuat controller.

Oke, diatas adalah struktur project yang saya sarankan jika kita membuat module Odoo. 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 pertama. Saya sangat menyarankan anda membandingkan isi dari source code tutorial bagian pertama dan bagian kedua ini. Anda mungkin perlu membaca artikel ini untuk melihat perbedaan isi 2 buah file atau folder dengan mudah.

Source Code

Tulisan Serupa

Leave a Reply