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:

from osv import fields, osv

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:

import hr_custom

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: