13 Juni 2012

Pesan Warning/Error ketika salah input field

Bismillahirrahmaanirrahiim

Karena saya orangnya sangat pelupa tapi tidak berminta untuk menghapal sintax code sama sekali, maka lebih baik saya posting saja apa2 yang sering saya gunakan di sini.

Ini code untuk mengeluarkan pesan error/warning ketika input sesuatu.
Biasanya saya pakai di method on_change suatu field.

Contoh:
Lihat layar wizard berikut:


Ketika input field date_stop (As Of) 03/01/2012 , akan otomatis mengisi field fiscalyear 2012 dan date_start 01/01/2012
Namun, ketika memasukkan tanggal di tahun 2013, akan muncul warning, karena belum dibuat fiscalyear tahun 2013


Terus bagaimana caranya,
tentunya pertama kali di field As Of, ditambahkan atribut on_change seperti berikut:
<field name="date_to" string="As of" on_change="onchange_asof(date_to)" required="1" colspan="4"/>
Lalu method untuk menjalankan aksi on_change nya seperti berikut:
    def onchange_asof(self, cr, uid, ids, date_to, context=None):
        value = {}
        fiscalyear_pool = self.pool.get('account.fiscalyear')
        if date_to:
            fiscalyear_id = fiscalyear_pool.search(cr, uid, [('date_start','<=',date_to),('date_stop','>=',date_to)])
            if fiscalyear_id:
                fiscalyear = fiscalyear_pool.browse(cr, uid, fiscalyear_id)[0]
                value = {'date_from': fiscalyear.date_start, 'fiscalyear_id': fiscalyear.id}
                return {'value': value}
            else:
                value = {'date_from':False, 'fiscalyear_id':False}
                return {'value': value, 'warning':{'title':'Warning','message':'No fiscal year for your choosen date! Choose another "As Of" date'}}     
Nah perhatikan saja perbedaan yg saya highlight kuning dengan biru

Oke begitu saja...

Semoga bermanfaat..

07 Juni 2012

IntegrityError: duplicate key value violates unique constraint "table_name_pkey"

Bismillahirrahmaanirrahiim

Pernah mengalami masalah seperti ini?
Gagal ketika mau buat data baru di suatu form ... dengan error:
contoh:

IntegrityError: duplicate key value violates unique constraint "ir_module_module_dependency_pkey"

padahal kemaren2 bisa??

terus kenapa ini?

Saya mengalami masalah ini beberapa minggu lalu... 

Ketika itu saya sedang tidak masuk kantor, dan team saya hubungi saya masalah ini...
Dia bilang, setelah diklik berkali2 baru bisa...

kenapakah?

Setelah mencari beberapa sumber, saya menemukan link berikut:

Selidik punya selidik, ternyata team saya sempat melakukan ketidaksengajaan,
yaitu restore database produksi dengan data backup database sebelumnya... Whoaaa 
kacau balau deh...

Akibatnya yaitu deh, banyak tabel yang nilai next sequence nya tidak sesuai... 
karena restore database yang sudah terisi pasti gagal, tapi ternyata ada beberapa data yang terestore... diantaranya nilai sequence dari tabel berubah sesuai dengan nilai sequence data backup..

AKhirnya kacau..
COntoh tabel ir_module_module_dependency. 
nilai max(id) nya 384. nilai ini diperoleh dengan jalankan query;

SELECT max(id) from ir_module_module_dependency;

tapi nilai next sequencenya yang didapatkan dari query berikut
select nextval('ir_module_module_dependency_id_seq');
masih 190, padahal seharusnya 385 kan?

terus solusinya bagaimana?
sesuai dengan link yang saya sampaikan sebelumnya, maka solusinya adalah update nilai next sequence dari tabel yang bermaslah tersebut;

caranya dengan jalankan query berikut:
SELECT setval('ir_module_module_dependency_id_seq', (SELECT MAX(id) FROM ir_module_module_dependency)+1);

habis itu coba, jalankan lagi query:

select nextval('ir_module_module_dependency_id_seq');

pasti nilainya sudah berubah jadi 385..

Selesai deh...
masalahnya banyak sekali tabel yang terpengaruh...
akhirnya yaa perbaiki setiap terjadi masalah saja...

ohya jangan lupa backup database nya dulu ya......

Semoga membantu