Sebelum Simpan
Anda telah memasang modul hr
pada OpenERP dimana sistem diharapkan dapat memperbaiki nama pegawai dengan ketentuan:
- Semua huruf besar.
- Tidak ada awalan dan akhiran spasi.
- Tidak ada spasi ganda.
Berarti ketentuan ini disemat sesaat sebelum data disimpan ke database. Bagaimana caranya ?
OpenERP memiliki event yang tertuang pada fungsi create()
dan write()
. Keduanya boleh dikatakan sebagai saat INSERT dan saat UPDATE. Mereka adalah fungsi yang dimiliki setiap ORM (Object Relational Model). Oleh karena itu Anda bisa menulis ulang keduanya. Teknik ini biasa disebut sebagai overriding.
Melanjutkan modul hr_custom
pada tulisan http://opensipkd.com/aagusti/query, buatlah file addons/hr_custom/hr_custom.py
:
def one_space(s):
while s.find(' ') > -1:
s = s.replace(' ', ' ')
return s
def good_name(s):
s = s.strip().upper()
return one_space(s)
class hr_custom(osv.osv):
_inherit = 'hr.employee'
def good_vals(self, vals):
if 'name' in vals:
vals['name'] = good_name(vals['name'])
return vals
def create(self, cr, uid, vals, context=None):
vals = self.good_vals(vals)
return super(hr_custom, self).create(cr, uid, vals, context)
def write(self, cr, uid, ids, vals, context=None):
vals = self.good_vals(vals)
return super(hr_custom, self).write(cr, uid, ids, vals, context)
hr_custom()
Kemudian pada addons/hr_custom/__init__.py
tambahkan:
Selanjutnya restart daemon OpenERP. Tidak perlu lakukan update jika Anda telah memasangnya. Lalu cobalah membuat data pegawai baru dan mengubahnya. Tulislah semua dengan huruf kecil. Seharusnya setelah Anda klik Simpan nama pegawai menjadi huruf besar semua.
Selamat mencoba.
Referensi: