Membuat modul khusus (custom module) di Odoo melibatkan beberapa langkah. Odoo adalah platform open-source yang memungkinkan pengembangan dan penyesuaian melalui modul-modul. Berikut adalah panduan untuk membuat custom Odoo module:
- Pastikan anda telah memiliki project dari odoo didalam laptop anda. jika belum ada ada bisa melihat tutorial instalasi odoo pada link dibawah ini : [https://forum.technosstudio.com/d/519-bagaimana-install-odoo-framework-menggunakan-windows-11](https://)
- Lalu buat folder baru didalam folder odoo berinama misalkan custom-addons atau yg lain.
- Buat lagi folder baru berinama mini_project didalam folder custom-addons kita anggap sebagai module baru.
- Kemudian kita buat dua file baru yang wajib ada disetiap module yaitu init.py dan manifest.py.
- Kemudian, buka file manifest.py. kita akan membuat konfigurasi tentang module yang kita buat didalamnya. Dengan mengetikan seperti dibawah ini:
{
"name": "Mini Project",
"version": "1.0",
"website": "Masukan Link website jika ada",
"description": """"
MIni Project module for traning purpose
""",
"category": "sale",
"depends": ["base","mail",'website'],
"demo": [
],
"data": [
#secutiy
#view
],
'assets':{
},
"installable": True,
"application": True,
"license": "LGPL-3"
}
Kemudian kita akan mencoba apakah modul yang kita buat telah ditambahkan. dengan menjalankan perintah dibawah ini menggunakan terminal.
pytuon odoo-bin -r user_odoo -w password_odoo --addons-path=addons --addons-path=C:\Project\tutorial\odoo_project\16\odoo\custom-addons -d test_db_odoo
jika berhasil akan muncul pada menu Apps dengan nama apps sesaui dengan konfigurasi yang dibuat pada file manifest.py. namu belum bisa melakukan aksi apapun didalamnya.
- Selanjutnya, buat folder baru models, security, static, views.
- Terus, kita akan membuat tabel sesaui dengan model yang akan dibuat didalam database. dengan cara buat file baru berinama mini_project.py lalu ketikkan code seperti dibawah ini:
from odoo import fields,models,api
class MiniProject(models.Model):
_name = "mini.project.inventory"
_description = "Mini Project"
name = fields.Char(string="Name")
description = fields.Char(string="Description")
dan jalan lupa daftarkan model tersebut didalam init.py dengan mengetikkan seperti dibawah ini:
from . import mini_project
- Selanjutnya, kita membuat tampilan dengan cara membuat file berinama misalkan main_view_mini_project.xml dengan code seperti dibawah ini:
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
#Form
<record id="mini_project_inventory_form_view" model="ir.ui.view">
<field name="name">mini.project.inventory.form</field>
<field name="model">mini.project.inventory</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="description"/>
</group>
</sheet>
</form>
</field>
</record>
#Tree View
<record id="mini_project_inventory_tree_view" model="ir.ui.view">
<field name="name">mini.project.inventory.tree</field>
<field name="model">mini.project.inventory</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="description"/>
</tree>
</field>
</record>
#action windows
<record id="action_mini_project_inventory" model="ir.actions.act_window">
<field name="name">Mini Project</field>
<field name="res_model">mini.project.inventory</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="mini_project_inventory_tree_view"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Generate Customer Details
</p>
</field>
</record>
</data>
</odoo>
Pada saat module diaktifkan menu atau pilihan tidak otomatis akan dibuatkan. kecuali kita membuatnya sendiri. buat file baru beri nama menu_items.xml dengan code dibawah ini:
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<menuitem name="Mini Project" id="menu_root_mini_project" web_icon="mini_project/static/description/icon.png">
<menuitem id="menu_mini_project_app" name="Mini Project">
<menuitem id="my_menu_mini_project" name="Inventory" action="mini_project.action_mini_project_inventory"/>
</menuitem>
</menuitem>
</odoo>
Karena kita sudah membuat model dan view kita perlu mendaftarkan ke dalam initpy dan manifest.py. folder models kita daftarkan ke init.py dengan mengetikkan :
from . import models
lalu didalam "data":[] yang adalam didalam file manifest.py kita daftarkan view dengan cara menambahkan lokasi file view, seperti dibawah ini:
"data": [
#secutiy
'security/ir.model.access.csv',
#view
'views/main_view_mini_project.xml',
'views/menu_items.xml',
],
Selamat mencoba Guys ....