Pada saat tertentu didalam project yang kita buat bisa menambah atau mengubah modul tertentu agar dapat memenuhi kebutuhan fitu yang kita buat. misalkan, fitur tersebut menambahkan field baru yang orang lain buat. agar dapat tidak mengganggu fungsi yang telah dibuatkan. kita dapat menambahkan fitur dari modul dari project yang dibuat. caranya seperti berikut:
1. Pertama, setup dulu project odoo yang akan dibuat, bisa project tersebut dapat diclone dari link ini : https://github.com/minhng92/odoo-17-docker-compose
2. Kemudian, folder baru didalam addons folder berinama modul_modification.
3. Selanjutnya, kita buat file baru. beri nama
__manifest__.py
4. Lalu, ketikan code berikut :
{
'name': "Modul Modification",
'version': '1.0',
'depends': ['base','hr'],
'author': "TECHNO'S STUDIO",
'category': 'Human Resources',
'description': """Aplikasi Absensi Pegawai""",
# data files always loaded at installation
'data': [
'views/res_company.xml',
],
# data files containing optionally loaded demonstration data
'installable': True,
'auto_install': False,
}
5. Lalu, buat model baru pada project yang kita buat. Dengan mengetikan kode berikut
from odoo import fields, models, api
class res_company(models.Model):
_name = "res.company"
_inherit = "res.company"
radius = fields.Char(string="Radius Absen", default=0)
titik_kordinat = fields.Char(string="Titik Kordinat")
Catatan:
name dan inherit harus sama dengan nama model dari modul yang kita modifikasi.
Field baru yang kita tambahkan pada model res.company adalah radius dan titik_kordinat
6. selanjutnya, kita buat views baru dengan nama res_company.xml yang dimana field yang baru saja kita buat itu akan tampil pada halaman company. Dengan mengetikkan code dibawah ini:
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<data>
<record id="absen_ts_res_company_tree" model="ir.ui.view">
<field name="inherit_id" ref="base.view_company_tree"/>
<field name="model">res.company</field>
<field name="arch" type="xml">
<field name="partner_id" position="after">
<field name="radius" />
<field name="titik_kordinat"/>
</field>
</field>
</record>
<record id="absen_ts_res_company_form" model="ir.ui.view">
<field name="inherit_id" ref="base.view_company_form"/>
<field name="model">res.company</field>
<field name="arch" type="xml">
<field name="currency_id" position="after">
<field name="radius"/>
<field name="titik_kordinat"/>
</field>
</field>
</record>
</data>
</odoo>
Bisa diperhatikan ada baris code
<field name="inherit_id" ref="base.view_company_tree"/>
Dan
<field name="inherit_id" ref="base.view_company_form"/>
“ref” yang dimasukan itu merujuk pada external_id yang bisa dilihat pada debug mode -> Edit views
7. setelah, jangan lupa tambahkan nama res_company.xml pada array data pada manifest , bisa dilihat pada poin 4.