SlideShare a Scribd company logo
1 of 48
Download to read offline
Creating New Application
in Odoo
Aziz Adi Nugroho M.Kom
www.linkedin.com/in/azizadingrh/
Telegram @azizadingrh
Whatsapp 085156129054
1
• 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
• 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
Textbook
4
Arsitektur Odoo
5
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
Struktur Modul Odoo
7
Struktur Modul Odoo
8
Odoo
Application
Module Module
Sub
Module
….. …..
Application
Module
Module
Application
Module
Sub
Module
….. …..
Struktur Modul Odoo – Applications
9
Odoo
Application
Module Module
Sub
Module
….. …..
Application
Module
Module
Application
Module
Sub
Module
….. …..
Struktur Modul Odoo – Applications
10
Ketika membuka menu Apps di Odoo, secara default
(filter) akan menampilkan aplikasi-aplikasi yang
tersedia di Odoo.
Struktur Modul Odoo – Applications
11
Struktur Modul Odoo – Module, Sub Module,
etc…
12
Odoo
Application
Module Module
Sub
Module
….. …..
Application
Module
Module
Application
Module
Sub
Module
….. …..
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
• 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
Struktur File pada Modul
15
Module
__init__.py
__manifest__.py
models
views
statics
description
src
.js
img
css
xml
font
wizard
data
demo
test
security
controller
i18n
Struktur File pada Modul
16
https://www.odoo.com/documentation/13.0/reference/guidelines.html
• __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
• 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
• 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
• 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
Membuat Aplikasi Baru
21
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
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
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
• 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
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
• 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
• 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
• 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
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
• 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
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
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
3.4 Tambahkan script berikut pada __manifest__.py
34
• 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
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
4.4 buka file __init__.py yang ada di dalam folder
library_apps dan isi dengan code berikut:
from . import models
37
• 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
• https://odoo-new-api-guide-
line.readthedocs.io/en/latest/fields.html#
• https://www.odoo.com/documentation
• Odoo 12 Development Essentials (Hal 159)
Fields Type
39
4.5 restart service dan upgrade module
40
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
Cek di database structure, apakah model yang baru dibuat sudah
masuk.
• Buka Setting->Technical->Database Structure->Models->cari
library.book
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
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
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
6.2 Tambahkan script berikut pada __manifest__.py
6.3 Restart service dan upgrade modul
46
Hasil
47
1. Marianne Bradford, Modern ERP Third Edition, NC, 2015
2. Daniel Reis, Odoo 10 Development Essentials, Packt, 2016
3. Daniel Reis, Odoo 11 Development Essentials Thirtd Edition, Packt, 2017
4. Daniel Reis, Odoo 12 Development Essentials Fourth Edition, Packt, 2018
5. Odoo S.A., Odoo Developer Documentation, odoo.com/documentation/13.0, 2020
References
48

More Related Content

What's hot

Modul One Day Workshop Proxmox Automation With Ansible
Modul One Day Workshop Proxmox Automation With AnsibleModul One Day Workshop Proxmox Automation With Ansible
Modul One Day Workshop Proxmox Automation With AnsibleI Putu Hariyadi
 
Contoh Proposal Web Design
Contoh Proposal Web DesignContoh Proposal Web Design
Contoh Proposal Web DesignJarvis AI
 
Modul Workshop Mikrotik Bandwidth Management
Modul Workshop Mikrotik Bandwidth ManagementModul Workshop Mikrotik Bandwidth Management
Modul Workshop Mikrotik Bandwidth ManagementI Putu Hariyadi
 
Sistem informasi manajemen rumah sakit
Sistem informasi manajemen rumah sakitSistem informasi manajemen rumah sakit
Sistem informasi manajemen rumah sakitYuliyanita Mulyadi
 
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVCrizki adam kurniawan
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktoprizki adam kurniawan
 
03 enkapsulasi
03 enkapsulasi03 enkapsulasi
03 enkapsulasiKuliahKita
 
Virtualisasi & Cloud Computing
Virtualisasi & Cloud ComputingVirtualisasi & Cloud Computing
Virtualisasi & Cloud ComputingFaisal Reza
 
Use case specification dan activity diagram [INTERNAL EDUCATIONAL PURPOSED]
Use case specification dan activity diagram [INTERNAL EDUCATIONAL PURPOSED]Use case specification dan activity diagram [INTERNAL EDUCATIONAL PURPOSED]
Use case specification dan activity diagram [INTERNAL EDUCATIONAL PURPOSED]Theo Pratama
 
Sistem Basis Data(PPT)
Sistem Basis Data(PPT)Sistem Basis Data(PPT)
Sistem Basis Data(PPT)tafrikan
 
Laporan Praktikum Web dengan PHP
Laporan Praktikum Web dengan PHPLaporan Praktikum Web dengan PHP
Laporan Praktikum Web dengan PHPOkta Riveranda
 
Pertemuan 11 thread dan asyntask
Pertemuan 11 thread dan asyntaskPertemuan 11 thread dan asyntask
Pertemuan 11 thread dan asyntaskheriakj
 
Materi struktur hirarki basis data
Materi struktur hirarki basis dataMateri struktur hirarki basis data
Materi struktur hirarki basis dataMutiara Ayu
 
Soal + jawaban PAT PBO Kelas XI RPL 2021.docx
Soal + jawaban PAT PBO Kelas XI RPL 2021.docxSoal + jawaban PAT PBO Kelas XI RPL 2021.docx
Soal + jawaban PAT PBO Kelas XI RPL 2021.docxSaprudin Eskom
 
Presentasi konsep dasar html
Presentasi konsep dasar htmlPresentasi konsep dasar html
Presentasi konsep dasar htmlDedy Setiawan
 
Presentasi modul 12 keamanan komputer
Presentasi modul 12 keamanan komputerPresentasi modul 12 keamanan komputer
Presentasi modul 12 keamanan komputerParis Dkc
 

What's hot (20)

Modul One Day Workshop Proxmox Automation With Ansible
Modul One Day Workshop Proxmox Automation With AnsibleModul One Day Workshop Proxmox Automation With Ansible
Modul One Day Workshop Proxmox Automation With Ansible
 
Contoh Proposal Web Design
Contoh Proposal Web DesignContoh Proposal Web Design
Contoh Proposal Web Design
 
[PBO] Pertemuan 5 - Polymorphism
[PBO] Pertemuan 5 - Polymorphism[PBO] Pertemuan 5 - Polymorphism
[PBO] Pertemuan 5 - Polymorphism
 
Modul Workshop Mikrotik Bandwidth Management
Modul Workshop Mikrotik Bandwidth ManagementModul Workshop Mikrotik Bandwidth Management
Modul Workshop Mikrotik Bandwidth Management
 
Sistem informasi manajemen rumah sakit
Sistem informasi manajemen rumah sakitSistem informasi manajemen rumah sakit
Sistem informasi manajemen rumah sakit
 
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop
 
Google hacking 2015
Google hacking 2015Google hacking 2015
Google hacking 2015
 
03 enkapsulasi
03 enkapsulasi03 enkapsulasi
03 enkapsulasi
 
Virtualisasi & Cloud Computing
Virtualisasi & Cloud ComputingVirtualisasi & Cloud Computing
Virtualisasi & Cloud Computing
 
Use case specification dan activity diagram [INTERNAL EDUCATIONAL PURPOSED]
Use case specification dan activity diagram [INTERNAL EDUCATIONAL PURPOSED]Use case specification dan activity diagram [INTERNAL EDUCATIONAL PURPOSED]
Use case specification dan activity diagram [INTERNAL EDUCATIONAL PURPOSED]
 
Sistem Basis Data(PPT)
Sistem Basis Data(PPT)Sistem Basis Data(PPT)
Sistem Basis Data(PPT)
 
Laporan Praktikum Web dengan PHP
Laporan Praktikum Web dengan PHPLaporan Praktikum Web dengan PHP
Laporan Praktikum Web dengan PHP
 
Presentasi ERD
Presentasi ERDPresentasi ERD
Presentasi ERD
 
Pertemuan 11 thread dan asyntask
Pertemuan 11 thread dan asyntaskPertemuan 11 thread dan asyntask
Pertemuan 11 thread dan asyntask
 
Bab 2
Bab 2Bab 2
Bab 2
 
Materi struktur hirarki basis data
Materi struktur hirarki basis dataMateri struktur hirarki basis data
Materi struktur hirarki basis data
 
Soal + jawaban PAT PBO Kelas XI RPL 2021.docx
Soal + jawaban PAT PBO Kelas XI RPL 2021.docxSoal + jawaban PAT PBO Kelas XI RPL 2021.docx
Soal + jawaban PAT PBO Kelas XI RPL 2021.docx
 
Presentasi konsep dasar html
Presentasi konsep dasar htmlPresentasi konsep dasar html
Presentasi konsep dasar html
 
Presentasi modul 12 keamanan komputer
Presentasi modul 12 keamanan komputerPresentasi modul 12 keamanan komputer
Presentasi modul 12 keamanan komputer
 

Similar to Membuat Aplikasi/Modul di Odoo ERP

Slide struktur codeigneter
Slide struktur codeigneterSlide struktur codeigneter
Slide struktur codeigneterCecilia Cintahta
 
Tugas resume aplinet (edi,vani,risky)
Tugas resume aplinet (edi,vani,risky)Tugas resume aplinet (edi,vani,risky)
Tugas resume aplinet (edi,vani,risky)Koplak Koplakan
 
Resa ari siswo[1210652011], rico nilar hartono[1210652008]
Resa ari siswo[1210652011], rico nilar hartono[1210652008]Resa ari siswo[1210652011], rico nilar hartono[1210652008]
Resa ari siswo[1210652011], rico nilar hartono[1210652008]resaarisiswo
 
Codeigniter lanjut helper dan library
Codeigniter lanjut helper dan libraryCodeigniter lanjut helper dan library
Codeigniter lanjut helper dan libraryboys of separato
 
Modul 05 Framework CodeIgniter.pdf
Modul 05 Framework CodeIgniter.pdfModul 05 Framework CodeIgniter.pdf
Modul 05 Framework CodeIgniter.pdfSetiya Nugroho
 
Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.
Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.
Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.Aldion Amirrul
 
meet_05 - MDPL - INF Kls A.pptx
meet_05 - MDPL - INF Kls A.pptxmeet_05 - MDPL - INF Kls A.pptx
meet_05 - MDPL - INF Kls A.pptxAndraAnonimus
 
Codeigniter framewrok
Codeigniter framewrokCodeigniter framewrok
Codeigniter framewrokmuamarsidik
 
Menggunakan database di android
Menggunakan database di androidMenggunakan database di android
Menggunakan database di androidInto Setiawan
 
Chapter 1 perkenalan code igniter 2.0
Chapter 1 perkenalan code igniter 2.0Chapter 1 perkenalan code igniter 2.0
Chapter 1 perkenalan code igniter 2.0Andarias Jacob Calvyn
 
Modul1 Penjelasan Mengenai Codeigniter
Modul1 Penjelasan Mengenai CodeigniterModul1 Penjelasan Mengenai Codeigniter
Modul1 Penjelasan Mengenai CodeigniterRiki Afriansyah
 
Slide-INS106-INS106-Slide-01.ppt
Slide-INS106-INS106-Slide-01.pptSlide-INS106-INS106-Slide-01.ppt
Slide-INS106-INS106-Slide-01.pptjoko p
 

Similar to Membuat Aplikasi/Modul di Odoo ERP (20)

Slide struktur codeigneter
Slide struktur codeigneterSlide struktur codeigneter
Slide struktur codeigneter
 
Kelompok 7
Kelompok 7Kelompok 7
Kelompok 7
 
Technical Odoo 15 Sesi 1.pptx
Technical Odoo 15 Sesi 1.pptxTechnical Odoo 15 Sesi 1.pptx
Technical Odoo 15 Sesi 1.pptx
 
pbo-2.pdf
pbo-2.pdfpbo-2.pdf
pbo-2.pdf
 
Tugas resume aplinet (edi,vani,risky)
Tugas resume aplinet (edi,vani,risky)Tugas resume aplinet (edi,vani,risky)
Tugas resume aplinet (edi,vani,risky)
 
Resa ari siswo[1210652011], rico nilar hartono[1210652008]
Resa ari siswo[1210652011], rico nilar hartono[1210652008]Resa ari siswo[1210652011], rico nilar hartono[1210652008]
Resa ari siswo[1210652011], rico nilar hartono[1210652008]
 
Pengenalan code igniter
Pengenalan code igniterPengenalan code igniter
Pengenalan code igniter
 
Codeigniter lanjut helper dan library
Codeigniter lanjut helper dan libraryCodeigniter lanjut helper dan library
Codeigniter lanjut helper dan library
 
Modul 05 Framework CodeIgniter.pdf
Modul 05 Framework CodeIgniter.pdfModul 05 Framework CodeIgniter.pdf
Modul 05 Framework CodeIgniter.pdf
 
Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.
Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.
Fundamental Django, dan Contoh Program CRUD Katalog Buku Perpustakaan.
 
meet_05 - MDPL - INF Kls A.pptx
meet_05 - MDPL - INF Kls A.pptxmeet_05 - MDPL - INF Kls A.pptx
meet_05 - MDPL - INF Kls A.pptx
 
Bab ii ana
Bab ii anaBab ii ana
Bab ii ana
 
Kajian4 Kelompok 6
Kajian4 Kelompok 6Kajian4 Kelompok 6
Kajian4 Kelompok 6
 
Codeigniter framewrok
Codeigniter framewrokCodeigniter framewrok
Codeigniter framewrok
 
Pengenalan Framework CodeIgniter
Pengenalan Framework CodeIgniterPengenalan Framework CodeIgniter
Pengenalan Framework CodeIgniter
 
Bab 03-program-program my sql
Bab 03-program-program my sqlBab 03-program-program my sql
Bab 03-program-program my sql
 
Menggunakan database di android
Menggunakan database di androidMenggunakan database di android
Menggunakan database di android
 
Chapter 1 perkenalan code igniter 2.0
Chapter 1 perkenalan code igniter 2.0Chapter 1 perkenalan code igniter 2.0
Chapter 1 perkenalan code igniter 2.0
 
Modul1 Penjelasan Mengenai Codeigniter
Modul1 Penjelasan Mengenai CodeigniterModul1 Penjelasan Mengenai Codeigniter
Modul1 Penjelasan Mengenai Codeigniter
 
Slide-INS106-INS106-Slide-01.ppt
Slide-INS106-INS106-Slide-01.pptSlide-INS106-INS106-Slide-01.ppt
Slide-INS106-INS106-Slide-01.ppt
 

Membuat Aplikasi/Modul di Odoo ERP

  • 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
  • 8. Struktur Modul Odoo 8 Odoo Application Module Module Sub Module ….. ….. Application Module Module Application Module Sub Module ….. …..
  • 9. Struktur Modul Odoo – Applications 9 Odoo Application Module Module Sub Module ….. ….. Application Module Module Application Module Sub Module ….. …..
  • 10. Struktur Modul Odoo – Applications 10
  • 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
  • 15. Struktur File pada Modul 15
  • 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
  • 34. 3.4 Tambahkan script berikut pada __manifest__.py 34
  • 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
  • 40. 4.5 restart service dan upgrade module 40
  • 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
  • 48. 1. Marianne Bradford, Modern ERP Third Edition, NC, 2015 2. Daniel Reis, Odoo 10 Development Essentials, Packt, 2016 3. Daniel Reis, Odoo 11 Development Essentials Thirtd Edition, Packt, 2017 4. Daniel Reis, Odoo 12 Development Essentials Fourth Edition, Packt, 2018 5. Odoo S.A., Odoo Developer Documentation, odoo.com/documentation/13.0, 2020 References 48