Reporting in OpenERP (RML) -Part 1-

Pada kesempatan kali ini, saya ingin berbagi sedikit ilmu tentang jenis-jenis report yang ada di OpenERP.

OpenERP memiliki banyak jenis-jenis reporting tools, dari mulai PDF sampai word dan excel bisa dihasilkan dari tools-tools tersebut. Secara default, semua report yang dihasilkan OpenERP adalah format PDF, akan tetapi disana ada report-report engine yang lain yang bisa kita gunakan untuk membuat report. Diantaranya yang sering digunakan dan cukup powerfull adalah Aeroo report, Webkit report, dan Jasper report.

1. Aeroo Report, biasanya digunakan untuk membuat report-report dengan document atau format word & excel . Diantara fitur-fiturnya adalah :

– Membuat report dengan format .doc, .xls, dan sejenisnya
– Design interfacenya menggunakan template dari format word atau excel
– Karna dibuatnya menggunakan template word / excel, tentu saja sangat memudahkan ketika terjadi perubahan secara realtime
– Sangat powerfull untuk report-report yang memang dibutuhkan user dalam format doc word / excel tersebut

2. Webkit Report, biasa digunakan untuk membuat report dengan menggunakan syntax html (termasuk CSS), karna webkit ini menggunakan template dari mako. Diantara fitur-fiturnya adalah :

– Document yang dihasilkan adalah PDF, tetapi tidak serumit jika kita menggunakan RML
– Karna menggunakan template mako, maka kita juga bisa menggunakan CSS untuk mempercantik tampilan report
– Lebih cepat untuk parsing data
– Ada banyak tools yang bisa kita gunakan dalam membuat report

3. Jasper Report (iReport), mungkin bisa kita katakan sama halnya seperti Crystal Report, baik dari sisi client server, tapilannya GUI interfacenya, dll

– Menggabungkan Java dan OpenERP, kita gunakan JDBC untuk menghubungkannya dengan database menggunakan iReport tools.
– Kita juga bisa menggunakan XML untuk membuat sebuah report
– Dan masih banyak lagi fitur-fitur yang bisa kita gunakan dari report engine ini (selanjutnya explore with google :D)

Dari ketiga jenis-jenis report engine diatas, -menurut saya- yang paling powerfull & memiliki banyak fitur -disamping kemudahan pembuatannya- adalah Jasper Report. Akan tetapi, pada pembahasan kali ini, saya khususkan untuk pembuatan report dengan menggunakan RML, sebagaimana bawaan report secara default pada OpenERP.

Untuk membuat report dengan RML pada OpenERP, maka kita harus membuat sebuah modul. Sebagaimana pembahasan berseri ke 2 saya sebelumnya, disana dibahas mengenai dasar-dasar pembuatan sebuah modul di OpenERP, Diantaranya adalah :

1. Struktur Modul

A. … nama_modul
B. ……… __init__.py
C. ……… __openerp__.py
D. ……… code_report.xml
E. ……… code_interface_view.xml
F. ……… folder_untuk_report
G. …………… __init__.py
H. …………… code_python.py
I. …………… interface_report.rml

Penjelasannya sebagai berikut :

A. Nama Modul

Biasanya nama modul diawali dengan kode pembuat/perusahaan yang membuat modul tersebut. Saya disana memberi nama modul tersebut dengan awalan sti yang saya ambil dari kependekan Saint Technologies Indonesia. Nama modul harus menempel -alias tidak boleh spasi- dan sebaiknya menggunakan huruf kecil semua.

B. File __init__.py

File wajib yang harus ada pada setiap modul python, biasanya diisi dengan mengimport file-file python atau folder/modul lain yang sejajar dengannya. Pada modul tersebut, file __init__.py saya isi dengan menulis syntax : import report (karna tidak ada file python disana).

C. File __openerp__.py

Penjelasannya bisa dilihat pada email yang sebelum ini, yaitu tutorial berseri python ke 2 😀

D. File code_report.xml

Biasanya kita gunakan khusus untuk membuat data-data yang bersangkutan dengan report yang ingin kita buat.

<report id="sale_order_report" string="Sales Order"
            model="sale.order" name="sale.order.report"
            rml="addons/sti_sale_report/report/report_sale.rml"
            auto="False" menu="False"/>

Ada beberapa parameter yang kita gunakan, diantaranya :

id="sale_order_report" # ID pembuatan record report
string="Sales Order" # Description dari record yang bersangkutan
model="sale.order" # Object atau nama tabel yang bersangkutan dengan data-data report
name="sale.order.report" # Nama unik report yang bersangkutan dan yang akan kita gunakan untuk pemanggilan
rml="addons/sti_sale_report/report/report_sale.rml" # Path dari file interface report
auto="False" # Saya belum tau, mungkin temen2 ada yang tau ? 😀
menu="False" # Jika kita set True, maka akan ada tombol pada panel disebelah kanan form untuk memanggil report

E. File code_interface_view.xml

Kita gunakan untuk membuat form baru atau menambah/mengedit tampilan form yang sudah ada.

<record model="ir.ui.view" id="sale_order_form_view_report">
    <field name="name">sale.order.form.view.report</field>
    <field name="model">sale.order</field>
    <field name="type">form</field>
    <field name="inherit_id" ref="sale.view_order_form" />
    <field name="arch" type="xml">
        <button string="Print Quotation" position="after">
            <button name="%(sale_order_report)d" string="Print Report" states="draft" type="action" icon="gtk-print" help='Print Sale Report'/>
        </button>
    </field>
</record>

Pada modul ini, kita hanya menambah tombol Print Report pada form Sales Order. Ciri khasnya adalah adalah baris

<field name="inherit_id" ref="sale.view_order_form" />  

artinya kita menginherit sebuah tampilan form dengan parameter ref, yang valuenya sale.view_order_form yaitu nama_modul.id_nama_tampilan_form

Kemudian, kita harus menambah button yang kita gunakan untuk membuat report baru. sebelumnya kita harus menemukan posisi yang cocok untuk tombol tersebut, lalu kita sisipkan tombol yang baru pada posisi tersebut. Posisi disini bisa berupa field, button, separator, group, ataupun tree/form, dan parameter position bisa bernilai after, before, maupun replace. Contoh diatas saya menyisipkan tombol Print Report setelah tombol Print Quotation :

<button string="Print Quotation" position="after">
name="%(sale_order_report)d" # Nama report yang akan dipanggil ketika tombol ini ditekan user
string="Print Report" # Teks pada tombol
states="draft" # State yang dimana tombol ini muncul
type="action" # Jika bernilai object maka harus ada sebuah method pada file python yang bersangkutan
icon="gtk-print" # Icon pada tombol
help='Print Sale Report' # Hint pada tombol

F. Folder folder_untuk_report

Folder ini hanya dikhususkan untuk merapikan/mengelompokan report-report pada modul ini. Biasanya selain report, folder juga digunakan untuk wizard, security, demo, image, dll

G. File __init__.py

Sama seperti penjelasan file __init__.py diatas

H. File code_python.py

File ini digunakan untuk parsing data yang dibutuhkan report, mungkin prosesnya temen-temen yang biasa menggunakan framework di web pasti tidak asing 🙂

Bersambung ….

Advertisements

2 thoughts on “Reporting in OpenERP (RML) -Part 1-

  1. Dear mas

    mau tanya pernah coba buat custom aeroo report under windows ? masalahnya saya baru install module aeroo report di openerp 7 sudah ada error “No Module Uno found”

    Regards

    WH

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