Membatasi Input Field Many2One Sebelum Field Lain Diisi

Terkadang sebuah field (kita sebut field dependent) harus menunggu field lain (kita sebut field independent) agar bisa diisi. Ketika field independent belum diisi dan user ingin mengisi field dependent harusnya muncul peringatan yang memberitahukan user bahwa ia harus mengisi field independent terlebih dahulu. Contoh:

#1 Ketika membuat sale order, seharusnya user memilih customer terlebih dahulu sebelum memilih invoice address. Karena alamat yang harusnya muncul adalah alamat dari customer yang membeli.

#2 State harusnya tidak bisa dipilih sebelum country dipilih

Langkah-langkah yang harus untuk membuat hal di atas adalah :

#1 Buat method onchange dengan parameter field-field independent

#2 Cek terlebih dahulu apakah parameter yang meneruskan nilai dari field – field independent tersebut sudah diisi atau belum (belum berarti parameter tersebut bernilai null)

#3 Jika bernilai null maka jalankan osv.raise_osv

#4 Gunakan method tersebut agar dijalankan ketika event onchange dari field dependent terjadi

Kasus

Pada Sale Order, Invoice Address tidak bisa dipilih (raise error) ketika Customer belum dipilih.

Solusi

#1 Buat method on_change untuk field partner_invoice_id dengan parameter untuk nilai dari partner_id. Jika partner_id tidak ada (null) maka raise error

def onchange_partner_invoice_id(self, cr, uid, ids, partner_id):
    if not partner_id:
        raise osv.except_osv('Peringatan', 'Pilih konsumen terlebih dahulu')

#2 Gunakan method tersebut untuk on_change dari field partner_invoice_id di xml

<field name="partner_invoice_id" on_change="onchange_partner_invoice_id(partner_id)"/>
No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s