Link Penting
- https://www.odoo.com/documentation/16.0/developer/tutorials/getting_started.html
- https://www.odoo.com/slides/all
-
Instal Python 3.8.10
- Install Python 3.8.10 dari Microsoft Store.
- Buka Command Prompt (CMD) dan ketikkan perintah berikut untuk memastikan Python telah terdaftar pada sistem:
python --version
-
Instal PostgreSQL versi 15
- Download dan install PostgreSQL versi 15.
- Saat instalasi, pilih password yang mudah diingat.
- Setelah PostgreSQL terinstal, tambahkan folder
C:\Program Files\PostgreSQL\<version>\bin
danC:\Program Files\PostgreSQL\<version>\lib
PostgreSQL ke Path Environment Variables windows. - Untuk memastikan PostgreSQL berhasil terinstal, ketikkan perintah berikut di CMD:
postgres --version
-
Konfigurasi PostgreSQL
- Buka Command Promt atau cmd.
- Masuk ke PostgreSQL dengan perintah:
psql -U postgres
- Masukkan password PostgreSQL yang telah Anda setup selama instalasi.
- Setelah berhasil masuk, buat user baru dengan perintah berikut:
CREATE USER odoo_user WITH PASSWORD 'odoo_user' CREATEDB CREATEROLE LOGIN;
- Untuk memastikan user telah dibuat dengan role yang benar, ketikkan perintah:
\du
-
Install Git
- Download dan install Git dari Git Downloads.
-
Clone Repository Odoo
- Buat folder baru bernama
Training
. - Buka Command Prompt didalam folder
Training
:cd Training
- Clone repository Odoo dari GitHub dengan perintah:
git clone --branch 16.0 --depth 1 https://github.com/odoo/odoo.git
- Buat folder baru bernama
-
Setup Virtual Environment
- Buat virtual environment dengan Python:
python -m venv env-odoo16
- Aktifkan virtual environment:
env-odoo16\Scripts\activate
- Masuk ke folder
odoo
:cd odoo
- Install dependencies
setuptools
danwheel
:pip install setuptools wheel
- Install dependencies dari
requirements.txt
:pip install -r requirements.txt
- Buat virtual environment dengan Python:
- Masuk ke folder Training
- Buka CMD di folder tersebut
- Lalu aktifkan virtual environment dengan menggunakan command:
env-odoo16\Scripts\activate
- Masuk ke folder odoo
cd odoo
- Running odoo dengan command
python odoo-bin -r dbuser -w dbpassword --addons-path=addons -d mydb
- Buka odoo pada browser di localhost:8069 untuk login kita menggunakan: email:admin password:admin
pada bagian extension cari dan instal:
- Rainbow CSV
- python Debugger
- Arkademy - Odo Technical Training
- Odoo Code Snippets by Michell Stuttgart
- Pada folder Training, Buat sebuah folder untuk meletakkan module atau addons custom yang akan dibuat example: training_module
- Lalu kembali ke folder Training dan buat folder
conf
- Dalam folder conf tersebut buat sebuah file dengan extension .conf (example : training.conf). didalam file tersebut copy konfigurasi berikut:
[options]
addons_path = C:\Users\firwin\Documents\Training\training_module,C:\Users\firwin\Documents\Training\odoo\addons
admin_passwd = odoo
db_host = localhost
db_name = False
db_password =odoo_user
db_port = 5432
db_user =odoo_user
dbfilter =
http_port = 8010
xmlrpc_port = 8010
list_db = True
log_db = False
log_db_level = warning
log_handler = :INFO
log_level = info
logfile =
default_productivity_apps = True
ket:
- addons_path = berisi semua folder addons/ module yang akan digunakan pada odoo, pada contoh diatas addonsnya berada pada folder training_module dan addons
- Masuk ke folder Training
- Buka CMD
- Aktifkan virtual environment
- Masuk ke folder odoo
- buat module baru dengan command
odoo-bin scaffold <nama module> <path folder dimana module akan diletakkan>
- buka vscode
- lalu pada menu Run and Debug
klik create a lunch.json file
- pilih folder tempat custom module kita. disini saya menggunakan folder
training module
- pilih python debugger
- pilih python file, akan muncul sebuah file launch.json
- lalu copy-kan konfigurasi berikut pada file launch.json tersebut:
{
"version": "0.2.0",
"configurations": [
{
"name": "Training Odoo 16",
"type": "debugpy",
"request": "launch",
"stopOnEntry": false,
"console": "integratedTerminal",
// untuk python isikan path python yang ada pada foder virtual environment
"python": "C:/Users/firwin/Documents/Training/env-odoo16/Scripts/python",
// untuk python isikan path file odoo-bin yang ada di folder odoo "program": "C:/Users/firwin/Documents/Training/odoo/odoo-bin",
"args": [
// untuk config isikan file conf yang ada pada folder conf
"--config=C:/Users/firwin/Documents/Training/conf/training.conf",
"--dev=xml",
// "--database=odoo16_arkana_training",
]
},
]
}
Disclaimer : install module real_estate terlebih dahulu
- buat file dengan extension .py pada module real_estate>models example : estate_property.py
- tambahkan juga pada file
__init__.py
yang ada di dalam folder models tersebut
from . import estate_property
- buka file estate_property.py tadi tambahkan script python berikut untuk menambahkan models
from odoo import models
class EstateProperty(models.Model):
_name = 'estate.property'
_description = 'Estate Property'
- buka odoo di browser
- pergi ke apps
- lalu cari module real_estate
- pada pojok kanan atas pada module tersebut klik titik tiga lalu pilih upgrade.
- cek apakah model berhasil tergenerate di odoo dengan cara
- pilih
- pilih setting
- pilih technical
- lalu pilih models
- cari model yang sudah kita buat tadi
example : estate_property
- jika ditemukan berarti model berhasil tergenerate
- buka file python estate_property.py tadi
- tambahkan fields yang diinginkan seperti contoh script python dibawah ini: untuk jenis fields apa saja yang dapat ditambahkan dapat dilihat di text
from odoo import models, fields
class EstateProperty(models.Model):
_name = 'estate.property'
_description = 'Estate Property'
name = fields.Char(string='Name')
description = fields.Text(string='Description')
postcode = fields.Char(string='Postcode')
date_availability = fields.Date(string='Date Availability')
expected_price = fields.Float(string='Expected Price')
selling_price = fields.Float(string='Selling Price')
bedrooms = fields.Integer(string='Bed rooms')
living_area = fields.Integer(string='Living Area')
facades = fields.Integer(string='Facades')
garage = fields.Boolean(string='Garage')
garden = fields.Boolean(string='Garden')
garden_area = fields.Integer(string='Garden Area')
garden_orientation = fields.Selection(string='Garden Orientation',
selection=[('n', 'N'),
('s', 'S'),
('e', 'E'),
('w', 'W'),])
- lalu restart odoo
- upgrade module
- untuk check field berhasil tergenerate buka setting>technical>models, lalu cari model yang tadi dibuat. example : estate_property
- double click pada model tersebut, lihat apakah fieldnya ada didalam model tersebut.
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<record id="module_category_real_estate" model="ir.module.category">
<field name="name">Real Estate</field>
<field name="sequence">10</field>
</record>
<record id="group_real_estate_user" model="res.groups">
<field name="name">User</field>
<field name="category_id" ref="module_category_real_estate"/>
<field name="implied_ids" eval="[(6, 0, [ref('base.group_user')])]"/>
</record>
<record id="group_real_estate_administrator" model="res.groups">
<field name="name">Administrator</field>
<field name="category_id" ref="module_category_real_estate"/>
<field name="implied_ids" eval="[(6, 0, [ref('group_real_estate_user')])]"/>
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
</record>
</odoo>
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_estate_property,access.estate.property,model_estate_property,real_estate.group_real_estate_administrator,1,1,1,1
access_estate_property_type,access.estate.property.type,model_estate_property_type,real_estate.group_real_estate_administrator,1,1,1,1
access_estate_property_tag,access.estate.property.tag,model_estate_property_tag,real_estate.group_real_estate_administrator,1,1,1,1
access_estate_property_offer,access.estate.property.offer,model_estate_property_offer,real_estate.group_real_estate_administrator,1,1,1,1
access_estate_property_user,access.estate.property,model_estate_property,real_estate.group_real_estate_user,1,0,0,0
access_estate_property_offer_user,access.estate.property.offer.user,model_estate_property_offer,real_estate.group_real_estate_user,1,0,1,0
access_estate_property_type_user,access.estate.property.type,model_estate_property_type,real_estate.group_real_estate_user,1,0,0,0
access_estate_property_tag_user,access.estate.property.tag,model_estate_property_tag,real_estate.group_real_estate_user,1,0,0,0