Technical Training -Part 1-

Bismillahirrahmanirrahim …

Penulis akan mencoba memulai tutorial technical training yang in syaa Allah diharapkan teman-teman semua dapat mengambil manfaatnya secara maksimal dan dapat menjadi ‘bekal’ untuk melakukan implementasi -khususnya technical- OpenERP dimanapun berada.

Mengingat panjangnya pembahasan ini, jadi tutorial ini akan dibuat bertahap agar tutorial ini juga dapat dipahami & dicoba semaksimal mungkin disamping kesempatan ilmu dan waktu yang terbatas. Untuk tahap awal, mungkin kita akan mengenal teori-teori atau istilah-istilah yang digunakan oleh OpenERP dan mempelajari hal-hal yang berkaitan dengannya.

Awalan kita jelajahi composisi dari sebuah modul OpenERP seperti gambar dibawah ini:

modul

Sebuah modul OpenERP biasanya mengandung element-element dibawah ini :

1. Object = Class python yang ‘mengextend’ OpenObject class osv.osv
2. Data = File dengan ekstensi .xml atau .csv yang berisi meta-data dan berfungsi sebagai configurasi data & demo data
3. Wizards = Interaktif form yang membantu user untuk melakukan banyak action
4. Report = File report yang terdiri dari rml, mako, dan lainnya

Sebelum kita coding, ada baiknya kita mengenal daftar attribut-attribut yang bisa digunakan pada setiap class osv.osv, diantaranya adalah :


_name = # Mendefinisikan nama object/tabel suatu class (dengan titik sebagai separatornya)
_columns = # Mendefinisikan field/kolom yang diinginkan
_defaults = # Nilai default dari field ketika object ingin dibuat, bisa berupa method.
_auto = # Secara default bernilai True, otomatis akan membuat ORM pada object/table
_inherit = # Nama parent object yang akan diinherit
_inherits = # Untuk menginherite banyak object/table
_constraints = # Membuat constraints table dengan method python
_sql_constraints = # Membuat SQL constraint
_log_access = # Secara default bernilai True, yang akan membuat 4 fields (create_uid, create_date, write_uid, write_date) digunakan untuk merecord log operasi dan dapat diakses dengan method perm_read()
_order = # Nama field/kolom yang digunakan untuk proses sorting, secara default field id
_rec_name = # Field/kolom alternatif untuk memberikan nama dari sebuah record, defaultnya field name
_sql = # Berisi SQL code untuk membuat table/view jika attribut _auto bernilai False
_table = # Berisi SQL nama table yang akan mereplace nama tabel pada attribut _name

Setelah kita mengetahui attribut-attribut dari sebuah class, kemudian kita berkenalan dengan attribut-attribut default pada setiap field, yaitu :


string: # Label sebuah field
help: # Menambahkan hints/tooltip yang berisi keterangan dari sebuah field
required: # Jika bernilai True, maka field wajib diisi (mandatory)
readonly: # Jika bernilai True, maka field tidak bisa diedit
states: # Untuk mendinamiskan sebuah field berdasarkan statenya, biasanya digunakan untuk readonly
select: # Jika bernilai True maka memudahkan kita untuk proses filter pada tampilan list
domain: # Digunakan untuk memfilter nilai dari field, biasanya digunakan untuk field relational
invisible: # Untuk menyembunyikan inputan user, biasanya digunakan untuk password
change_default: # Jika bernilai True maka field akan digunakan sebagai kondisi untuk nilai default
size: # Digunakan untuk membatasi nilai dari sebuah field, biasanya digunakan untuk field interger & char
context: # Memberikan parameter-parameter tertentu untuk field relational (many2one, one2many, & many2many)

Yang terakhir kita harus mengetahui field-field apa aja yang tersedia pada OpenERP, diantaranya adalah :


Boolean = # Field ini bernilai True atau False, berbentuk cekbox pada tree/list ataupun form. ex :
'active': fields.boolean('Active'),

Integer = # Field dengan nilai bilangan bulat. ex : 
'week': fields.integer('Week'),

Float = # Field dengan nilai bilangan decimal. ex : 
'kurs': fields.float('Kurs', digits=(12,6), select=True),

Char = # Field free character, biasanya digunakan untuk inputan string. ex : 
'name': fields.char('Name', size=64, select=True),

Text = # Field untuk inputan text tanpa batas. ex : 
'note': fields.text('Notes'),

Date = # Field inputan tanggal. ex : 
'date': fields.date('Date', required=True),

Datetime = # Field inputan tanggal dan waktu. ex : 
'create_date': fields.datetime('Create Date', readonly=True),

Binary = # Field untuk menyimpan sebuah data file. ex : 
'data_file': fields.binary('File'),

Selection = # Field bernilai pilihan yang telah ditentukan berbentuk combobox. ex : 
'type': fields.selection((('eks','Export'), ('imp','Import')), 'Type'),

Many 2 One = # Sama seperti field selection tetapi nilainya diambil dari sebuah object/tabel. ex : 
'tabel' : fields.many2one('ir.model', 'Object Model', required=True),

One 2 Many = # Field berbentuk tabel pada sebuah form. ex : 
'order_line': fields.one2many('sale.order.line', 'order_id', 'Order Lines', readonly=True),

Many 2 Many = # Field yang hampir mirip dengan One2May dengan sedikit perbedaan. ex :
'journal': fields.many2many('account.analytic.journal', 'ledger_journal_rel', 'ledger_id', 'journal_id', 'Journals'),

In syaa Allah bersambung …

sumber : https://doc.openerp.com/v6.1/developer/03_modules_2/

Advertisements

7 thoughts on “Technical Training -Part 1-

  1. Assalamu’alaikum Warahmatullahi Wabarakatuh

    Afwan akh, ana mau tanya mengenai gambaran technical openerp.

    1. Apakah kalau kita ingin meng-customize openerp diperkenankan alter table di postgres-nya, jika ia cukup ribet juga ya, dikarenakan kita harus tahu relasi antar table.

    2. Apakah diopenerp disediakan semacam modul Application Dictionary seperti di adempiere dan SAP

    Itu dulu yang saya ingin tanyakan, sebelumnya saya ucapkan JAzakallah khoiron Katsiron

    Wassalamu’alaikum Warahmatullahi Wabarakatuh

    • Wa’alaikumussalamwarohmatullahwabarokatuh …

      DIantara salah satu kelebihan OpenERP adalah dibangun dengan framework bernama OpenObject yang memiliki fitur Object Service (OSV), dimana fitur ini memberikan kemudahan untuk membuat ORM layer dan ‘membebaskan’ programmer untuk memanage database dengan sql seperti pengaturan relation antar table, alter table dan lainnya.

      Dengan fitur ini, layer ORM menjadi ‘tersembunyi’. Programmer cukup mendefinisikan class python dengan menginherite lib osv.osv dan menambahkan field-field serta method-method didalamnya, seketika itu juga ORM akan tercipta secara otomatis.

      Untuk application dictionary saya blum mengetahuinya, mungkin bisa dikasih ‘bocoran’ disini mas 🙂

      • Mantap Mas, masalah application dictionary sy juga baru tahu dari inet, bentuknya seperti apa blm pernah coba :), nah yg saya masih bingung kita kan tetap harus tahu jika kita akan membuat suatu modul butuh meng-inherite mana saja, yg menurut pemikiran saya kita harus punya semacam library agar tidak bingung, so kapan lagi lanjutannya Mas, ditunggu nih, alhamdulillah agak terang nih yg tadinya saya gelap gulita sekali, Jazakallah khoiron katsiron untuk ilmunya

      • Mungkin mas perlu praktek coding/bikin modul OpenERPnya, in syaa Allah syubhat2 nanti terjawab dengan sendirinya sambil senyum2 sendiri betapa hebatnya OPenERP, hehehe 🙂

        Dengan OpenERP kita tidak mesti harus tau relasi antar table, semuanya bisa kita liat pada class pythonnya. Mungkin issue yang mas tanyakan bisa terjawab dengan method browse() in syaa Allah …

        Alhamdulillah technical training part 2 sudah release, semoga bermanfaat …

  2. Assalamu’alaikum warohmatullohi wabarokaatuh.

    Terima kasih atas sharing ilmunya, semoga bermanfaat dan makin berkah amin.

    Iqbal

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