Assalamu'alaikum Warrahmatullah Wabarakatuh
Bismillahirrahmanirrahim
Pada Odoo 12, untuk dapat menambahkan custom config
pada setting
, adalah sebagai berikut.
Pertama adalah dengan membuat fields
pada res.config.settings
class ResConfigCustom(models.TransientModel):
_inherit = 'res.config.settings'
custom_field = fields.Char('Custom Config')
Karena model
dari res.config.settings
merupakan TransientModel
, data yang dimasukkan tidak dapat disimpan dalam model
tersebut. Sehingga data tersebut harus disimpan pada model
lainnya. Contohnya, data akan disimpan pada res.company
. Maka harus dibuatkan field untuk menyimpan data tersebut.
class ResCompanyCustom(models.Model):
_inherit = 'res.company'
custom_field = fields.Char('Custom Config')
Untuk menyimpan data pada model
yang sudah disiapkan, buat akses untuk memanggil fungsi save
pada res.config.settings
. Tidak seperti model
pada umumnya yang menggunakan write
, res.config.settings
menggunakan create
waktu memanggil fungsi save
. Maka panggil fungsi create
pada model res.config.settings
. Dalam fungsi tersebut panggil fungsi untuk menyimpan data yang ada pada model
yang dituju. Karena data yang akan disimpan berada pada field custom_field
, maka ambil values
yang dijalankan ketika melakukan proses create
dan simpan pada model
yang dituju, yaitu res.company
.
@api.model
def create(self, values):
res = super(ResConfigCustom, self).create(values)
self.env.user.company_id.write({'custom_field': values['custom_field']})
return res
Sekarang data telah tersimpan pada model
yang dituju.
Lalu bagaimana cara agar data tersebut dapat ditampilkan pada res.config.settings
? Caranya adalah dengan memanggil fungsi default_get
yang dijalankan setiap kali sistem mau menampilkan config settings
. Fungsi ini akan memasukkan data pada parameter fields
pada res.config.settings
. Langsung masukkan saja data yang mau ditampilkan pada fields
yang dituju.
@api.model
def default_get(self, fields):
res = super(ResConfigCustom, self).default_get(fields)
res['custom_field'] = self.env.user.company_id.custom_field
return res
Maka secara otomatis, res.config.settings
akan menampilkan data yang sebelumnya disimpan pada res.company