29 Agustus 2013

Contoh Penggunaan attribut on_change dalam fields

Bismillahirrahmaanirrahiim

Tadi pagi ada yang email nanya sehubungan dengan attribut on_change..
Monggo dicoba.. ini blind code sii.. saya gak nyobain ... mudah2an gak ada yang salah...
kalau ada yang salah baru saya cobain :D

Contoh:
kita punya 3 field dengan tipe char:
field1
field2
field3

dan 1 field yang diharapkan berisi gabungan dari ketiga field di atas. Sebutlah nama fieldnya:
field_gab

Jadi contoh:
di form kita isi field berikut:
field1 = "aku"
field2 = "adalah"
field3 = "saya"

maka harapannya field_gab akan otomatis berisi: "aku adalah saya" dan perubahan isi dari ke-3 field akan otomatis meng-update field_gab tersebut.

bagaimana caranya?
manfaatkan attribut on_change

jadi di form view kita set atribut dari ke-4 field di atas.
<field name="field1" on_change="onchange_fields(field1, field2, field3, field_gab)"/>
<field name="field2" on_change="onchange_fields(field1, field2, field3, field_gab)"/>
<field name="field3" on_change="onchange_fields(field1, field2, field3, field_gab)"/>
<field name="field_gab" on_change="onchange_fields(field1, field2, field3, field_gab)"/>
view raw form hosted with ❤ by GitHub


kemudian di pythonnya kita buat method onchange_fields:
def onchange_date_name(self, cr, uid, ids, field1, field2, field3, field4, field_gab, context=None):
v = {
'field_gab': (field1 or '') + ' ' + (field2 or '') + ' ' + (field3 or ''),
}
return {'value': v}
view raw action hosted with ❤ by GitHub

udah deh selesai.. cona direstart dan diupgrade modulnya...
ohya kenapa field_gab musti ditambahkan on_change juga?
agar tidak dimungkinkan dilakukan perubahan terhadap field tersebut...
jadi field_gab isinya tetap konsisiten gabungan dari ke-3 field sebelumnya..

semoga bermanfaat...