Membuat Module Odoo (Bagian 1 – Kode Minimal)

Module atau addon adalah suatu folder yang berisi file-file tertentu yang dapat menambah atau mengurangi fitur Odoo. Misal module ‘sale’ untuk fitur penjualan, ‘purchase’ untuk pembelian dan lain-lain. Odoo sudah menyediakan module yang cukup lengkap yang langsung bisa kita install dan gunakan pada instalasi odoo default, jika masih kurang kita bisa download module gratisan atau module berbayar di Odoo apps store, github atau situs-situs lain, atau jika tidak ada module/addon yang sesuai dengan kebutuhan kita, kita bisa membuat module sendiri.

Artikel ini adalah bagian pertama dari seri Membuat Module Odoo di blog ini. Pada seri ini saya akan membahas bagaimana membuat module/addon odoo untuk pemula. Mulai dari yang paling sederhana hingga yang sedikit lebih rumit.

Agar bisa mengikuti artikel ini, pastikan anda sudah menginstall odoo di komputer anda. Anda juga harus sudah bisa bagaimana menginstall module/addon, menambah module/addon custom ke instalasi odoo anda, restart service odoo, dan masuk ke mode debug/developer mode. Silakan baca artikel ini untuk mempelajari hal-hal diatas di sistem operasi windows. Atau baca artikel ini jika anda pengguna linux.

Untuk membuat module/addon kita harus membuat sebuah directory dengan nama bebas, asal tidak mengandung spasi atau spesial karakter. Misal custom_sale. Gunakan underscore (_) untuk memisahkan tiap kata, jika nama module yang anda inginkan lebih dari satu kata. Anda bisa meletakkan directory ini di mana saja. Tetapi anda harus mengubah konfigurasi di file odoo.conf, kemudian masukkan nama parent directory dari module anda. Silakan baca tutorial cara install odoo di windows atau linux untuk mengetahui cara melakukan hal ini, dimana linknya dapat anda temukan di paragraf sebelumnya. Jika anda kesulitan menambah directory module custom dengan mengubah konfigurasi odoo di file odoo.conf, letakkan directory module custom anda (dalam artikel ini directory custom_sale) di directory yang sama dimana module/addon asli odoo berada, yaitu directory yang ditandai dengan adanya directory semacam account, sale, purchase, point_of_sale dll. Biasanya directory ini berada di path_instalasi_odoo/odoo-server/addons.

Kemudian buat sebuah file dengan nama __manifest__.py di dalam directory tersebut, dengan isi seperti di bawah ini.

{
    "name": "Custom Sale", # isi bebas
    "author": "Ngasturi", # isi bebas
    "website": "https://ngasturi.id", # isi bebas
    "version": "1.0.0", # isi bebas
    "license": "LGPL-3", # pilih antara GPL-2, GPL-3, AGPL-3, LGPL-3, OEEL-1, OPL-1, atau Other proprietary
    "installable": True # harus True
}

Jika dibuka dari Sublime text editor, tampilan directory tersebut akan terlihat seperti pada gambar di bawah ini.

file manifest addon odoo

Restart service odoo anda, pada odoo masuk mode debug, kemudian buka menu Apps. Pastikan menu Update Apps List sudah tampil. Jika belum tampil ada 2 kemungkinan, yang pertama anda mungkin tidak login sebagai administrator atau anda belum masuk menu debug/developer mode. Klik menu Update Apps List, sebuah dialog akan muncul, klik tombol Update dan tunggu sampai selesai.

Cari directory atau nama module yang telah anda buat di menu apps, seperti pada gambar di bawah ini.

Mencari addon di menu apps odoo

Jika directory/nama module yang anda buat sudah tampil saat anda melakukan pencarian, seperti pada gambar di atas, berarti anda telah berhasil membuat custom module/addon untuk odoo. SELAMAT !!! 🙂 Jika belum tampil, anda harus sabar dan mengulangi tutorial ini dari awal, selamat berusaha.

Untuk membuat custom module/addon untuk odoo, kita hanya perlu membuat sebuah directory dan sebuah file python dengan nama __manifest__.py. Cukup mudah bukan ? Tentu saja hanya dengan sebuah directory dan sebuah file python, module yang kita buat tidak akan memiliki kegunaan sama sekali. Untuk memberi kegunaan atau fungsi pada module custom yang kita buat, kita harus membuat beberapa file lagi, banyak sedikitnya file dan jenis file tergantung dari fungsi module yang akan kita buat.

Sebagai permulaan kita akan mencoba membuat module yang menambah nama makelar pada module Sales, dibawah field Salesperson. Masuk menu Apps lagi kemudian install module Sales atau sale_management. Kemudian edit file __manifest__.py yang telah kita buat untuk menambahkan depedensi ke module sale. Seperti pada code di bawah ini.

{
    "name": "Custom Sale", # isi bebas
    "author": "Ngasturi", # isi bebas
    "website": "https://ngasturi.id", # isi bebas
    "version": "1.0.0", # isi bebas
    "depends": [
        "sale", # depedensi ke module sales
    ],
    "license": "LGPL-3", # pilih antara GPL-2, GPL-3, AGPL-3, LGPL-3, OEEL-1, OPL-1, atau Other proprietary
    "installable": True # harus True
}

Saat kita ingin mengubah fitur suatu module yang sudah ada, pastikan kita sudah memasukkan nama module/directory tersebut ke bagian depends di file __manifest__.py di module custom kita. Jika tidak, bakal ada kemungkinan module kita tidak akan berjalan dengan semestinya, misal tidak bisa mengakse field dan lain-lain. Anda mungkin bertanya kenapa di file __manifest__.py saya memasukkan module sale di bagian depedensi, padahal di paragraf sebelumnya saya meminta anda untuk menginstall module sale_management. Hal ini saya lakukan karena module sale adalah module dimana fungsi utama fitur penjualan ditulis, sedangkan module sale_management juga inherit ke module sale. Saya ingin menunjukkan pada anda bahwa dalam satu fitur penjualan, tidak semua kodenya ditulis dalam satu module. Odoo kadang memisah-misah kode suatu fitur (dalam contoh kali ini adalah fitur penjualan) menjadi beberapa modul. Silakan lihat daftar module/addon odoo 14 di halaman github ini dan silakan hitung sendiri module-module yang memiliki nama dengan prefix sale_ seperti module sale_coupon dan lain-lain. Belum termasuk module dengan prefix website_sale_. Tetapi jika anda ingin menulis module sale_management sebagai depedensi di file __manifest__.py juga tidak apa-apa.

Selanjutnya masih di directory custom_sale buat sebuah file python dengan nama custom_sale.py atau dengan nama lain sesuai keinginan anda, dengan isi sebagai berikut :

# -*- coding: utf-8 -*-
# import module default odoo
from odoo import api, fields, models, exceptions, _

# buat class baru
# nama class bebas asalkan extends ke class Model
class sale_order(models.Model):
    # _inherit digunakan jika kita akan mengoveride model yang sudah ada
    # model sale.order terdapat di module sale bawaan Odoo
    # jika model tidak tersedia / belum terinstall akan menyebabkan error
    _inherit = 'sale.order'

    # buat kolom database dengan nama makelar, type data varchar dan wajib diisi
    # type data lainnya akan dijelaskan pada tulisan berikutnya
    makelar = fields.Char("Makelar", required=True)

Kemudian buat sebuah file python lagi dengan nama __init__.py untuk mengimport file python yang telah kita buat di atas. Karena di tutorial ini nama file yang saya buat adalah custom_sale.py, maka saya bisa menggunakan kode seperti di bawah ini untuk mengimport file tersebut di file __init__.py.

# import file python yang sudah kita buat
from . import custom_sale

Buat sebuah file xml dengan nama bebas, tetapi pada tutorial ini saya menggunakan nama file custom_sale_view.xml dengan isi sebagai berikut :

<?xml version="1.0"?>
<odoo>
    <data>
        <!-- script diatas ini adalah script default -->
        <!-- menambah field makelar dibawah field salesperson -->
        <record id="view_order_form_inherit" model="ir.ui.view">
            <field name="name">sale.order.form</field>
            <field name="model">sale.order</field>
            <field name="inherit_id" ref="sale.view_order_form"/>
            <field name="arch" type="xml">
                <field name="user_id" position="after">
                    <field name="makelar" />
                </field>
            </field>
        </record>
     <!-- script dibawah ini adalah script default -->
    </data>
</odoo>

Terakhir, update file __manifest__.py dan masukkan nama file xml di atas kebagian data. Sehingga isi file __manifest__.py akan terlihat seperti pada kode di bawah ini.

{
    "name": "Custom Sale", # isi bebas
    "author": "Ngasturi", # isi bebas
    "website": "https://ngasturi.id", # isi bebas
    "version": "1.0.0", # isi bebas
    "depends": [
        "sale", # depedensi ke module sales
    ],
    "data": [
        "custom_sale_view.xml"
    ],
    "license": "LGPL-3", # pilih antara GPL-2, GPL-3, AGPL-3, LGPL-3, OEEL-1, OPL-1, atau Other proprietary
    "installable": True # harus True
}

Restart service odoo anda. Ingat saat anda melakukan perubahan pada file apapun anda harus selalu merestart service odoo.

Setelah service odoo selesai anda restart, buka menu Apps kemudian cari nama directory/module yang telah anda buat, kemudian klik tombol Install atau Upgrade. Jika anda berhasil mengikuti tutorial ini dengan benar dan module/addon custom yang anda buat tidak ada kesalahan, saat anda membuka menu Sales lebih tepatnya di tab Other Info anda akan melihat sebuah field dengan nama Makelar seperti pada gambar di bawah ini.

Menambah field di menu sales odoo

Coba anda isi field tersebut kemudian simpan dengan cara menekan tombol Save.

Selamat anda telah berhasil membuat module/addon custom odoo pertama anda, yang benar-benar memiliki kegunaan atau fungsi. Mudah bukan ? Hanya dengan sebuah directory yang terdiri dari tiga buah file python dan sebuah file xml anda telah berhasil menambah field baru di menu Sales.

Download Source Code
Tulisan Serupa

One Reply on “Membuat Module Odoo (Bagian 1 – Kode Minimal)”

Leave a Reply