Pada OpenERP memiliki field yang unik yaitu field function, dimana field tersebut dapat dimasukkan fungsi dan hasil akhirnya dapat disimpan atau tidak (hanya untuk view).

Cara Penggunaan :

* Fungsi  _jumlah_pendapatan, untuk mendapatkan hasil dari perhitungan  rincian_1,  rincian_2 dengan kondisi  dari rincian_2_persentase

def _jumlah_pendapatan(self, cr, uid, ids, field_name, arg, context):   

res={}

for detail_pendapatan in self.browse(cr, uid, ids):

if (detail_pendapatan.rincian_2 == 0.0):

res[detail_pendapatan.id] = detail_pendapatan.rincian_1

else:

if (detail_pendapatan.rincian_2_persentase == True):

res[detail_pendapatan.id] = round(detail_pendapatan.rincian_1 * (detail_pendapatan.rincian_2 / 100), 0)

else:

res[detail_pendapatan.id] = round(detail_pendapatan.rincian_1 * detail_pendapatan.rincian_2, 0)

return res

 

* Fungsi  _rincian_2_deskripsi, hanya digunakan untuk mendapatkan deskripsi rincian 2 yang lebih lengkap pada 1 field, misal : 30 Hari / 2% / 28.25 Jam

def _rincian_2_deskripsi(self, cr, uid, ids, field_name, arg, context):

res={}

for detail_pendapatan in self.browse(cr, uid, ids):

if (detail_pendapatan.rincian_2 <> 0.0):

if (detail_pendapatan.rincian_2_persentase == True):

res[detail_pendapatan.id] = str(detail_pendapatan.rincian_2) + ‘ %’

else:

res[detail_pendapatan.id] = str(detail_pendapatan.rincian_2) + ‘ ‘ + detail_pendapatan.rincian_2_satuan

return res

* Column / Field-Field yang digunakan.

_columns = {

‘gaji_id’ : fields.many2one(‘regal.gaji’, ‘# Gaji’, required=True),
‘jenis_pendapatan_id’ : fields.many2one(‘regal.jenis_pendapatan’, ‘Jenis Pendapatan’, required=True),
‘rincian_1’ : fields.float(‘Detail Nilai 1’, required=True),
‘rincian_2’ : fields.float(‘Detail Nilai 2’),
‘rincian_2_persentase’ : fields.boolean(‘Detail Persentase ?’),
‘rincian_2_satuan’ : fields.char(‘Detail Satuan’, size=100),
rincian_2_deskripsi‘ : fields.function(_rincian_2_deskripsi, method=True, type=’char’, size=100, string=’Deskripsi Rincian 2′),
jumlah‘ : fields.function(_jumlah_pendapatan, method=True, type=’float’, string=’Jumlah’, store=True),

}