OpenERP 5.0.16, 6.0.3, 6.0.4 & 6.1 Technical Tutorial : Memperbaiki Relationship many2one


Ketika membuat sebuah field many2one di OpenERP, terkadang developer salah menuliskan ke object mana many2one tersebut direlasikan. Jika field tersebut sudah terbuat, developer tidak bisa serta-merta mengkoreksi file .py untuk membetulkan relasi tersebut.

CONTOH
class object_contoh(osv.osv):
    _columns = {
               'name' : fields.char(string='Nama', size=100),
               'partner_id' : fields.many2one(obj='account.account', string='Partner'),
               }

Relasi many2one pada baris ke-4 harusnya ke object res.partner

LANGKAH KOREKSI

Continue reading

OpenERP 6.0.3, 6.0.4, & 6.1 Technical Tutorial: Memperlakukan Field Binary Sebagai File


Field binary dalam OpenERP mampu menyimpan data yg bertipe binary. Namun untuk memperlakukan isi dari field tersebut seperti layaknya sebuah file diperlukan penanganan khusus. Sebagai contoh sebuah object yang bernama contoh mempunyai 1 field berjenis binary yang bernama field_binary1.

class contoh(osv.osv):
    _name = 'contoh'
    _description = 'contoh'
    _columns = {
               'field_binary1' : fields.binary('Field Binary 1'),
               }
contoh()

Untuk melakukan method readline misalnya, tidak bisa dilakukan dengan code seperti ini :

res_contoh = obj_contoh.browse(cr, uid, [1])[0]
res_contoh.field_binary1.readline()

Code diatas akan menimbulkan eksepsi. Setelah penulis melakukan percobaan, res_contoh.field_binary1 dideteksi sebagai tipe str, bukan file. Nah untuk memperlakukan field binary sebagai file yang harus dilakukan adalah sebagai berikut :

  1. import tools
  2. import base64
  3. from tempfile import TemporaryFile
  4. Buatlah sebuah variabel TemporaryFile dengan parameter +w
  5. Kemudian tulislah isi dari field binary ke variabel tsb. Gunakan base64.decodestring ketika menulis

Contoh code dapat dilihat dibawah :

Continue reading

OpenERP GTK-Client 5.0.16 Custom Widget : max_float (float dengan decimal separator pada form)


Berdasarkan pengalaman implementasi, klien sering meminta agar widget untuk float diberikan thousand separator. Pada tree hal tersebut tidak menjadi masalah. Namun pada form, widget standar OpenERP yang menangani bilangan float tidak mampu menangani hal tsb dikarenakan widget tsb dibuat dari spinbutton.

Oleh karena itu penulis membuat sebuah widget yang dapat memberikan thousand separator pada bilangan float. Thousand separator dan decimal separator disesuaikan dengan pengaturan locale pada server.

Continue reading

OpenERP 5.0.16, 6.0.3, 6.0.4 & 6.1 Technical Tutorial : Penamaan Relationship Many2many


Field many2many dalam deklarasinya membutuhkan parameter rel yang berupa string (Nama tabel relationship. baca OpenERP technical momento -red).

many2many(obj, rel, field1, field2, ...)

Parameter rel tersebut nantinya akan menjadi nama tabel relationship yang dibuat di postgres. Pembuatan nama tabel tersebut tidak melewati proses lower() atau upper() sehingga nama tabel akan sama persis dengan apa yang tertulis pada parameter rel.

Namun dalam pemanggilannya (melalui method browse atau read), OpenERP melakukan method lower() terhadap nama relationship.

Oleh karena itu, isilah parameter rel dengan lower-case. Karena jika tidak maka akan terjadi exception.

OpenERP 5.0.16, 6.0.3, 6.0.4, & 6.1 Technical Tutorial : Method fetchall


Pada beberapa kesempatan, method search dan browse kurang bisa memenuhi kebutuhan untuk melakukan pencarian dan pengambilan data . Ketika hal itu terjadi biasanya digunakan teknik untuk menggunakan method execute yang diikuti oleh method fetchall milik class cursor (modul psycopg)

Continue reading

OpenERP 5.0.16, 6.0.3, 6.0.4 & 6.1 Technical Tutorial : Pengurutan data tanpa menggunakan method search


Penggunaan method browse atau read biasanya didahului dengan method search. Method search digunakan untuk mendapatkan list dari id resources yang akan dibrowse atau read. Namun pada beberapa kasus dimana data harus diurutkan terlebih dahulu, method search mempunyai keterbatasan. Pengurutan data memang bisa dilakukan pada method search dengan menyertakan parameter order. Namun teknik ini mempunyai kekurangan dimana field yang bisa diurutkan hanya field yang dipunyai oleh object tsb, tidak bisa digunakan untuk mengurutkan field yang berada pada tabel referensi.

Pada kasus kasus seperti ini harus digunakan teknik yang berbeda, yaitu dengan menggunakan sintaks sql langsung untuk mendapatkan list dari id yang akan dibrowse/read

Tutorial selengkapnya dapat dilihat dibawah ini
Continue reading

OpenERP GTK-Client 5.0.16 Widget : custom_float


Widget custom_float adalah widget yang memungkinkan developer untuk mengkustomisasi tampilan field bertipe float.

FUNGSI
  1. Mengubah ukuran font sesuai dengan atribut font_size
  2. Mengubah warna text sesuai dengan atribut font_color
  3. Mengubah warna latar text sesuai dengan atribut bg_color
SCREENSHOT

CONTOH PENGGUNAAN

Widget custom_float dapat digunakan sama seperti penggunaan widget lainnya. Tambahkan attribut widget dengan nilai custom_float pada field berbentuk float. Berikut contohnya :

    <field name="jumlah" string="Bayar" widget="custom_float"/>

Selain itu 3 buah attribut ditambahkan agar bisa digunakan pada elemen field, yaitu (1) font_size, (2) font_color, dan (3) bg_color. Ketiganya merupakan attribut yang opsional. Nilai yang valid untuk font_size adalah integer yang berfungsi untuk merubah ukuran text. Sedangkan nilai yang valid untuk font_color dan bg_color adalah heksadesimal yang melambangkan warna. Contoh penggunaannya :

    <field name="jumlah" string="Bayar" widget="custom_float" font_size="18" font_color="#FF0000" bg_color="#FF00FF"/>