Membuat Modul Custom Odoo 16: Library Book
Alma Laras Bestari — 2206082303 #UniversitasIndonesia #FasilkomUI #sisdm #ERP #Odoo #ctecherp
Membuat Modul Custom Odoo 16: Library Book
Alma Laras Bestari — 2206082303
UniversitasIndonesia #FasilkomUI #sisdm #ERP #Odoo #ctecherp
Halo semua! Pada kali ini kita akan mencoba membuat Modul Custom Odoo. Membuat modul kustom di Odoo memberikan keuntungan karena kita dapat menyesuaikan sistem dengan kebutuhan spesifik bisnis sehingga lebih fleksibel dan dapat mendukung perkembangan bisnis di masa depan. Modul yang kita buat nantinya akan digunakan untuk mengelola data buku di perpustakaan.
Pengembangan Modul Custom Library Book
Sebelumnya, saya menggunakan MacBook Air M1 dengan Odoo Docker, sehingga teknik scaffold tidak dapat di-run pada perangkat saya (karena Odoo saya terinstalasi di Container Docker). Perlu diketahui bahwa scaffold hanya memudahkan pengembangan modul karena terdapat inisialisasi file secara otomatis, kita dapat membuat secara mandiri jika mengetahui struktur modul Odoo jika tidak dapat menggunakan teknik scaffold.
Dengan itu, saya memanfaatkan file custom module yang telah diberikan oleh Bapak Kahfi dari PT. Ismata Nusantara Abadi. Kemudian saya modifikasi sehingga memiliki struktur akhir seperti ini.
library_book/
├── __init__.py
├── __manifest__.py
├── controller/
│ ├── __init__.py
│ └── controllers.py
├── demo/
│ └── demo.xml
├── sercurity/
│ └── ir.model.access.csv
├── models/
│ ├── __init__.py
│ └── library_book.py
├── static/
│ └── description
│ └── icon.png
└── views/
└── library_book_views.xml
Kita tidak akan menggunakan controller dan demo , tetapi kedua folder tersebut merupakan folder default sehingga saya biarkan.
Pertama, kita akan melengkapi __manifest__.py Ubah file tersebut menjadi seperti ini. Modul kita merupakan bagian dari Application Inventory, maka kita tambahkan stock pada 'depends' stock merupakan technical name dari Inventory.
# -*- coding: utf-8 -*-
{
'name': "Library Book",
'summary': """
Modul untuk mengelola data buku di perpustakaan.
""",
'description': """
Modul untuk mengelola data buku mulai dari detail buku hingga status.
""",
'author': "Alma Laras Bestari",
'website': "https://www.yourcompany.com",
# Categories can be used to filter modules in modules listing
# Check https://github.com/odoo/odoo/blob/16.0/odoo/addons/base/data/ir_module_category_data.xml
# for the full list
'category': 'Inventory',
'version': '0.1',
# any module necessary for this one to work correctly
'depends': ['base', 'stock'],
# always loaded
'data': [
#'security/ir.model.access.csv',
],
# only loaded in demonstration mode
'demo': [
'demo/demo.xml',
],
}
Kemudian, kita akan mendefinisikan Model kita sesuai ketentuan soal, yaitu LibraryBook dengan nama libarary.book . Pada folder models, buatlah library_book.pydengan mengikuti kode seperti berikut. Model ini merupakan digunakan untuk menyimpan informasi mengenai buku dalam di perpustakaan kita.
from odoo import models, fields, api
class LibraryBook(models.Model):
_name = 'library.book'
_description = 'Library Book'
name = fields.Char(string='Title', required=True)
author = fields.Char(string='Author')
year = fields.Integer(string='Year')
isbn = fields.Char(string='ISBN')
description = fields.Text(string='Description')
status = fields.Selection([
('available', 'Available'),
('borrowed', 'Borrowed'),
('lost', 'Lost')
], string='Status', default='available')
Setelah membuat model tersebut, jangan lupa untuk menambahkan model tersebut di __init__.py yang sejajar dengan library_book.py, bukan pada toot folder library_book .
# -*- coding: utf-8 -*-
from . import library_book
Kemudian, kita akan membuat tampilan. Pada folder views , buatlah file library_book_views.xml dengan mengikuti kode dibawah ini.
<odoo>
<data>
<!-- Tree View untuk Buku -->
<record id="view_library_book_tree" model="ir.ui.view">
<field name="name">library.book.tree</field>
<field name="model">library.book</field>
<field name="arch" type="xml">
<tree string="Books">
<field name="name"/>
<field name="author"/>
<field name="year"/>
<field name="isbn"/>
<field name="status"/>
</tree>
</field>
</record>
<!-- Form View untuk Buku -->
<record id="view_library_book_form" model="ir.ui.view">
<field name="name">library.book.form</field>
<field name="model">library.book</field>
<field name="arch" type="xml">
<form string="Book Form">
<sheet>
<group>
<field name="name"/>
<field name="author"/>
<field name="year"/>
<field name="isbn"/>
<field name="description"/>
<field name="status"/>
</group>
</sheet>
</form>
</field>
</record>
<!-- Action untuk Membuka Tampilan Buku -->
<record id="action_library_book" model="ir.actions.act_window">
<field name="name">Books</field>
<field name="res_model">library.book</field>
<field name="view_mode">tree,form</field>
</record>
<!-- Struktur Menu -->
<!-- Menu utama di bawah menu Inventory -->
<menuitem id="menu_library_root" name="Library" parent="stock.menu_stock_root" sequence="10"/>
<!-- Submenu untuk Buku -->
<menuitem id="menu_library_books" name="Books" parent="menu_library_root" action="action_library_book" sequence="10"/>
</data>
</odoo>
Pada __manifest__.py root folder, tambahkan views yang dibuat pada data sehingga seperti ini
...
'data': [
#'security/ir.model.access.csv',
'views/library_book_views.xml',
],
...
Kemudian, kita akan mengatur ir.model.access.csv sehingga User tidak perlu menjadi Superuser untuk menggunakan modul kita. Cukup akses ir.model.access.csv pada folder security dan ubah kode pada file tersebut menjadi seperti ini,
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_library_book_user,library_book_user,model_library_book,base.group_user,1,1,1,1
Pada konfigurasi tersebut, kita telah menkonfigurasi bahwa base.group_user , yaitu semua user, dapat melakukan CRUD pada modul Library Book kita. Jangan lupa untuk men-uncomment #’security/ir.model.access.csv’, pada __manifest__.py .
Kemudian, kita akan menambahkan Icon pada modul kita untuk mempercantik tampilan. Saya memanfaatkan website https://spilymp.github.io/ibo/ untuk membuat Icon modul saya. Pada website tersebut, tidak tertera Odoo 16, tetapi bisa menggunakan versi 15. Berikut icon yang saya buat.

icon.png
Untuk menggunakan Icon tersebut pada custom modul kita, kita akan membuat folder static yang letaknya sejajar dengan folder models , kemudian buat folder description dalam folder static yang telah dibuat. Kemudian, kita akan memasukkan Icon yang dibuat pada folder description tersebut. Untuk memudahkan, kita dapat rename Icon kita menjadi icon.png .
Setelah itu, pada __manifest__.py kita dapat menambahkan potongan kode berikut
...
# only loaded in demonstration mode
'demo': [
'demo/demo.xml',
],
'images': ['static/description/icon.png'], # TO-DO: Tambahkan kode ini
}
Dengan ini, Custom Modul Library Book sudah selesai kita kembangkan dan siap untuk dimasukkan ke addons Odoo
Penggunaan Custom Modul Library Book
Instalasi custom modul kurang lebih sama dengan modul-modul ekstra yang sudah kita instalasi. Kita akan menambahkan folder library_book ke folder addons Odoo Docker kita (karena saya menggunakan Odoo Docker). Kemudian, kita akan menjalankan command docker-compose up seperti biasa dan akses localhost:8069 .
Buatlah database baru khusus untuk modul kita dan login sebagai admin.

Kemudian, buka Apps dan klik tab Update App List > UPDATE. Oleh karena modul kita bergantung kepada modul Inventory, maka kita akan mengaktifkan modul Inventory terlebih dahulu. Klik tombol ACTIVATE.

Setelah itu, kita dapat menginstal modul custom yang telah kita buat dengan klik tombol ACTIVATE.



Setelah selesai menginstalasi, kita dapat mencoba menggunakan modul yang telah kita buat. Buka Inventory, perhatikan pada tab Inventory, sudah ada Library dan jika kita klik, terdapat submenu Books.

Berikut tampilan saat Books di klik. Ini merupakan tampilan tree yang telah kita definisikan pada views.

Kita dapat menambahkan buku pada perpustakaan kita dengan klik tombol NEW.



Berikut tampilan list Books kita setelah sudah ditambahkan.

Dengan ini, kita dapat mengambil konklusi bahwa pembuatan modul custom kita berhasil dibuat ^^
Semoga artikel ini dapat bermanfaat. Terima kasih :D
UniversitasIndonesia #FasilkomUI #sisdm #ERP #Odoo #ctecherp
메타데이터
- post_id
- 259be1535464
- slug
- membuat-modul-custom-odoo-16-library-book-259be1535464
- url
- https://medium.com/@almalaras.b/membuat-modul-custom-odoo-16-library-book-259be1535464
- canonical_url
- https://medium.com/@almalaras.b/membuat-modul-custom-odoo-16-library-book-259be1535464
- author_url
- https://medium.com/@almalaras.b
- status
- ok
- fetched_at
- 2026-08-26 14:23:47