Dokumen tersebut memberikan panduan lengkap untuk membuat aplikasi baru di Odoo, mulai dari membuat folder, file manifest, menu, model, view, hingga pengaturan akses security. Langkah-langkahnya meliputi pembuatan folder dan file manifest, membuat menu baru, membuat security group, membuat model, membuat view, dan membuat file CSV untuk mengatur akses.
1. Creating New Application
in Odoo
Aziz Adi Nugroho M.Kom
www.linkedin.com/in/azizadingrh/
Telegram @azizadingrh
Whatsapp 085156129054
1
2. • SMA N 11 Semarang
• S.Kom in Information System with GPA 3.57 of 4.0
Dian Nuswantoro University
• M.Kom in Computer Science with GPA 3.83 of 4.0
Dian Nuswantoro University
• Core Competency in Enterprise Architecture,
Software Engineering and Machine Learning
• Laboratory Assistant Computer Network
• Software Engineer and Lead Engineer – PT PCI
Business Solution (Port Cities)
• System Analyst, Project Manager and Development Manager – PT Brainmatics Cipta
Informatika (Brainmatics) dan PT IlmuKomputerCom Braindevs Sistema (Braindevs)
• Professional Trainer at Brainmatics
• Lecturer at Universitas Indraprasta PGRI (Unindra)
• Industrial IT Training and Certifications: Data Mining, System Analyst and Design with
UML, BPMN and Enterprise Architecture Development Practice
• IT Consultant: TNP2K, Kemensos, BPS, KPK, INSW, Kemenkeu, FIF, PLN, PJB, Pertamina EP,
Lazada, Paragon, Elizabeth Bags, HIJUP, Ethnicraft, TLI, Ayam Brand etc
Aziz Adi Nugroho
2
3. • Mampu memahami arsitektur Odoo
• Mampu memahami struktur modul pada aplikasi Odoo
• Mampu memahami struktur file pada aplikasi Odoo
• Mampu memahami dan mengaplikasikan security
group
• Mampu memahami dan mengaplikasikan model layer
• Mampu memahami dan mengaplikasikan view layer
• Mampu memahami dan mengaplikasikan Access
Control Security (ACL)
• Mampu memahami dan membuat aplikasi baru di
Odoo
Objectives
3
6. Odoo Architecture
6
The Model Layer mendefinisikan struktur data dari aplikasi
The View Layer mendeskripsikan user interface
The Controller Layer mengelola business logic dari aplikasi
11. Ketika membuka menu Apps di Odoo, secara default
(filter) akan menampilkan aplikasi-aplikasi yang
tersedia di Odoo.
Struktur Modul Odoo – Applications
11
12. Struktur Modul Odoo – Module, Sub Module,
etc…
12
Odoo
Application
Module Module
Sub
Module
….. …..
Application
Module
Module
Application
Module
Sub
Module
….. …..
13. Ketika menghapus filter Apps dan menambahkan filter
Application is false, maka akan menampilkan turunan
dari aplikasi yaitu modul, sub modul, sub sub modul, dst.
Struktur Modul Odoo – Module, Sub Module,
etc…
13
14. • Application adalah aplikasi induk yang sudah
disediakan oleh Odoo ataupun dapat kita buat
sendiri, tanpa memiliki dependensi (atau
dependensi ke base) ke aplikasi atau modul lain.
• Modul adalah aplikasi yang sudah disediakan oleh
Odoo ataupun dapat kita buat sendiri, yang
memiliki dependensi ke aplikasi atau modul lain.
• Namun secara umum penjelasan diatas hanyalah
konsep. Dalam implementasinya, aplikasi ataupun
modul biasa disebut sebagai modul (module).
Perbedaan Application dan Module
14
17. • __init__.py
File ini merupakan inisialisasi dari modul. File tersebut
bertindak sebagai constructor seperti di java. Berisi
pernyataan impor yang menghubungkan folder dan file dalam
modul.
• __manifest__.py
File ini merupakan manifest dari modul. Berisi berbagai
informasi tentang modul seperti judul, deskripsi, versi, author
dll
• models
Folder ini berisi semua file yang berbentuk file python (.py)
yang dibuat ataupun hasil inherit.
• views
Folder ini berisi semua file view (.xml). File tampilan dapat
berisi form, tree/list, action dll.
Penjelasan Struktur File pada Modul
17
18. • static
Folder ini digunakan untuk menyimpan data terkait
situs web
• src
• Js – berisi file .js
• Img – berisi images
• Css – berisi file css untuk mendesain
• Xml – Digunakan untuk qweb templates
• Font – berisi file font
• Lib – Digunakan untuk mengimplementasikan library dari pihak
ke-3 seperti Combobox library atau Google Maps library
• description – berisi file index.html untuk memberikan
pengantar grafis ke modul. Selain itu, berisi icon.png
yang ditetapkan sebagai logo pada modul.
Penjelasan Struktur File pada Modul
18
19. • data
Berisi file data (.xml). Terkadang, data perlu diisi secara
default setiap kali menginstal modul.
• demo
Berisi file data demo (.xml). Data ini berguna ketika ingin
memperlihatkan kepada pengguna sekilas tentang
bagaimana entri data pada modul tersebut
• security
Folder ini digunakan untuk memberikan user roles dan
permission (.xml/.csv).
• controller
Folder ini berisi file python (.py) yang menjalankan
perintah-perintah yang berfungsi untuk memproses dan
mengirimkan data ke halaman web.
Penjelasan Struktur File pada Modul
19
20. • wizard
Folder ini berisi transient models beserta view-nya.
Data disimpan sementara dalam model/tabel dan
dihapus secara berkala (otomatis)
• test
Berisi file python (.py) untuk membuat test cases.
• report
Berisi file (.xml dan .py) yang mendeskripsikan
laporan (qweb report).
• i18n
Berisi file .po yang digunakan untuk menterjemahkan
text.
Penjelasan Struktur File pada Modul
20
22. Pada tutorial sebelumya, kita sudah berhasil
menginstall Odoo pada Ubuntu dengan WSL2.
Apabila belum melakukan instalasi, silahkan ikuti
tutorial tersebut. Apabila link tersebut tidak
berfungsi, anda dapat mencarinya di
linkedin.com/in/azizadingrh artikel tentang Instalasi
Odoo di Windows Subsystem for Linux (WSL).
22
23. 1. Buat folder baru
2. Buat menu baru.
3. Buat Security Groups.
4. Buat Models.
5. Buat Views.
6. Buat Security Access Control Model (ACL) CSV.
Tahapan Membuat Aplikasi Baru di Odoo
23
24. 1.1 Buat folder library_app
(/opt/custom_modules/library_app)
1.2 Buat file __init__.py dan __manifest__.py
didalam folder library_app
1.3 Isi file __manifest__.py tersebut dengan:
{
'name': 'Library Management',
'description': ‘ Pengelolaan Perpustakaan',
'author’: ‘brainmatics',
'depends': ['base'],
'application': True,
}
Untuk file __init__.py dapat dikosongkan terlebih
dahulu
1. Buat Folder Baru
24
25. • Atribut depends diisi dengan modul yang memiliki
dependensi terhadap modul yang dibuat. Jika tidak
terdapat dependensi apapun, maka dapat diisi dengan
modul base.
• Atribut lain yang bisa ditambahkan, yaitu:
• Summary: menampilkan sub judul dari modul
• Version: secara default 1.0. seharusnya mengikuti aturan
semantic versioning (semver.org)
• License: secara default LGPL-3
• Website: informasi url
• Category: mengelompokan modul berdasarkan
fungsionalitasnya
• Installable: secara default ‘true’, namun dapat diset ‘false’
untuk disable modul
• Auto_install: jika diset ‘true’, maka modul akan terinstall
secara otomatis
Penjelasan Attribute pada Manifest
25
26. Coba instal modul yang baru kita buat, untuk
mengetahui apakah ada kendala atau tidak.
• Buka terminal, lalu ketikan script berikut:
sudo su odoo13 -s /bin/bash
• Tambahkan script addons path ketika menjalankan
service supaya modul dapat terdeteksi pada Odoo
Apps.
/opt/odoo13/odoo/odoo-bin --addons-
path=/opt/odoo13/odoo/addons,/home/azizadingrh/cust
om_addons/ --http-port=8069
Jalankan Service Odoo
26
27. • Buka Odoo, localhost:8069. Login dan aktifkan
developer mode.
Note: Menu untuk mengaktifkan developer mode
pada Odoo 13 tidak bisa diakses apabila belum ada
satupun aplikasi yang terinstal. Oleh karena itu, disini
akan terlebih dahulu menginstall modul Contacts.
27
28. • Aktifkan fitur developer mode. Pilih menu tanda
di pojok kiri atas, lalu pilih menu setting. Scroll ke
bawah dan cari Developer Tools. Pilih Active the
developer mode.
28
29. • Pilih menu , lalu pilih menu Apps.
• Pilih menu Update Apps List, lalu Update. Hal
tersebut dilakukan setiap kita membuat modul
baru, supaya modul yang baru dibuat dapat terbaca
di menu Apps.
• Lalu cari modul Library Management, dan instal.
29
30. 2.1 Buat file library_menu.xml di dalam folder views
(library_app/views/library_menu.xml)
2.2 Tambahkan script berikut pada __manifest__.py
'data':['views/library_menu.xml']
2. Buat Menu Baru
30
31. • Sebelum aplikasi diakses oleh pengguna, hak akses
perlu didefinisikan terlebih dahulu (security groups)
• Secara umum, Odoo menyediakan dua security
groups yaitu level user (pengguna biasa) dan level
manager (akses ke konfigurasi)
3. Buat Security Groups
31
32. 3.1 Buat file library_security.xml di dalam folder
security
3.2 Definisikan kategori security
3.3 Definisikan hak akses untuk kategori tersebut
32
33. Keterangan
• name: judul grup
• category_id: field untuk memanggil security category
yang didefinisikan sebelumnya
• implied_ids: user pada grup ini secara otomatis akan
mewarisi grup lain yang didefinisikan
• Users: memberikan hak istimewa pada grup. Misal
pengguna pada grup sales manager dapat melihat
menu sale configuration
33
35. • Model pada Odoo mendeskripsikan business
objects, seperti opportunity, sales order, partner
dll. Setiap model memiliki sejumlah atribut
• Model diimplementasikan menggunakan python
class yang berasal dari Odoo template class. Lalu
diterjemahkan ke database objects, dan Odoo
secara otomatis menangani hal tersebut ketika
menginstal atau melakukan upgrade modul.
Mekanisme tersebut dikelola oleh Object Relational
Model (ORM) bawaan Odoo
4. Buat Models (The Model Layer)
35
36. 4.1 Buat file library_book.py didalam folder models
4.2 Isi dengan script berikut
4.3 Buat file __init__.py didalam folder models
Isi dengan script berikut
from . import library_book
4. Buat Models (The Model Layer)
36
37. 4.4 buka file __init__.py yang ada di dalam folder
library_apps dan isi dengan code berikut:
from . import models
37
38. • Baris pertama merupakan penanda bahwa pada file
tersebut memiliki UTF-8 sehingga dapat menangani
karakter non-ASCII
• Baris kedua merupakan deklarasi untuk import models
dan fields yang berasal dari sistem core Odoo
• Baris ketiga menyatakan model baru yang dibuat
• Baris keempat menyatakan nama dari class/model yang
dibuat. Nama ini nantinya akan otomatis terbentuk
sebagai nama tabel pada PostgreSQL
• Baris kelima menyatakan deskripsi dari class/model
yang dibuat (not mandatory)
• Baris berikutnya merupakan deklarasi field-field pada
model. Field tersebut nantinya akan otomatis terbentuk
sebagai column pada PostgreSQL
38
41. Note:
• Apabila terdapat perubahan (source code) pada file
.xml, kita hanya perlu melakukan upgrade modul
kita dari Odoo.
• Apabila terdapat perubahan (source code) pada file
.py, kita hanya perlu melakukan restart service di
terminal (ctrl+c, lalu jalankan lagi service-nya).
• Apabila terdapat perubahan (source code) pada file
.xml dan .py, kita harus melakukan upgrade modul
dan restart service odoo.
41
42. 42
Cek di database structure, apakah model yang baru dibuat sudah
masuk.
• Buka Setting->Technical->Database Structure->Models->cari
library.book
43. Tampilan pada Odoo didefinisikan dengan
menggunakan xml
5.1 Buat folder views dan isi dengan file
library_menu.xml
5. Buat View (The View Layer)
43
44. Keterangan
• Elemen <action window> mendefinisikan client-side window
action yang akan menampilkan tampilan tree atau form
pada model library.book
• Elemen <menuitem> memanggil action yang sebelumnya
didefinisikan untuk menampilkan menu
44
45. 6.1 Buat file csv bernama ‘ir.model.access.csv’ pada
folder security
• id: unique id sebagai identifier
• name, atribut yang mendeskripsikan judul. Usahakan
tetap unique
• model_id, identifier untuk mengenali model yang
sudah dibuat (XML ids)
• group_id, identifier untuk mendefinisikan Batasan
akses berdasarkan grup user
• Perm, mendefinisikan akses read, write, create dan
unlink (delete).
6. Buat Access Security Control (ACL) CSV
45
46. 6.2 Tambahkan script berikut pada __manifest__.py
6.3 Restart service dan upgrade modul
46