13 Maret 2012

Membuat laporan OpenERP dalam CSV/Excel (create excel/csv report on OpenERP)

Bismillahirrahmaanirrahiim

Alhamdulillah masih bulan Maret, hehe niatnya tiap bulan bisa menghasilkan 1 tulisan... Mudah2an selalu sempat dan ingin berbagi :)

Alhamdulillah juga menemukan cara untuk buat report OpenERP dalam bentuk Excel.. hmm masih csv sii, tapi kan tetap bisa dibuka di Excel :D

Sebelumnya say thanks for Wyden Silvan  yang sudah berbagi informasi cara membuat report dalam CSV.

Jadi, yang harus kita lakukan adalah buat class Report (report.py)

seperti berikut:

import base64
from osv import fields,osv
from tools.translate import _
import time

class Report(osv.osv_memory):
    """
    Wizard to create custom report
    """
    _name = "report"
    _description = "Create Report"
    _columns = {
                'start_date' : fields.date('Start Date', required=True),
                'end_date' : fields.date('End Date', required=True),
                'data': fields.binary('File', readonly=True),
                'name': fields.char('Filename', 16, readonly=True),
                'state': fields.selection( ( ('choose','choose'),   # choose date
                     ('get','get'),         # get the file
                   ) ),
                }
    
    def create_report(self,cr,uid,ids,context={}):
        this = self.browse(cr, uid, ids)[0]
        output = 'Start;Ende'
        output += '\n' + this.start_date + ';' + this.end_date
        print this.start_date
        out=base64.encodestring(output)
        return self.write(cr, uid, ids, {'state':'get',  'data':out,'name':'test.csv'}, context=context)
        
    _defaults = { 
                 'state': lambda *a: 'choose',
                 'start_date' : lambda *a: time.strftime('%Y-%m-%d'),
                 'end_date' : lambda *a: time.strftime('%Y-%m-%d'),
                }
   
Report()

Perhatikan yang saya highlight warna biru. Itu merupakan field yang harus tersedia.
Sedangkan yang saya highlight warna merah, merupakan proses inti dari export file ke CSV.

Kemudian untuk view xml nya (file report.xml)

<?xml version="1.0" encoding="UTF-8"?>

<openerp>
    <data>
    
        <!--  =========== VIEWS =========== -->    
    
        <record model="ir.ui.view" id="view_wizard">
            <field name="name">Custom Report</field>
            <field name="model">report</field>
            <field name="type">form</field>
            <field name="priority">16</field>
            <field name="arch" type="xml">
                <form col="3" string="Custom Report">
                    <group col="2" fill="0" height="2500" states="choose">
                        <separator string="Report" colspan="2"/>
                        <field name="start_date" width="200"/>
                        <field name="end_date" width="200"/>
                        <separator colspan="2"/>
                        <group colspan="2">
                            <button special="cancel" icon="gtk-cancel" string="Cancel"/>
                            <button type="object" name="create_report" icon="gtk-go-forward" string="Create"/>
                        </group>
                        <field invisible="1" name="state"/>
                    </group>
                    <group col="3" fill="0" states="get">
                        <separator colspan="3" string="Export done"/>
                        <field name="name" invisible="1" width="100"/>
                        <field name="data" nolabel="1" readonly="1" width="100" fieldname="name"/>
                    </group>
                </form>
            </field>
        </record>
        
        <!--  =========== ACTIONS =========== -->    
        
        <record model="ir.actions.act_window" id="action_report">
            <field name="name">Custom Report</field>
            <field name="res_model">report</field>
            <field name="view_type">form</field>
            <field name="view_mode">form</field>
            <field name="target">new</field>
        </record>
        
        <!--  =========== MENU ITEMS =========== -->
        <menuitem id="menu_report" name="Report"
                    action="action_report"
                    parent="account.menu_finance_reporting" 
                    sequence="40" />
        
        
    </data>
</openerp>

Yang saya highlight merah, adalah tombol proses yang akan mengeksekusi method create_report pada class Report. Proses tersebut hanya mengexport data yang akan dibuat file csv.
Jika proses berhasil, akan muncul tombol Save As untuk memilih lokasi file csv (default file name: test.csv lihat yang dihighligt kuning pada file report.py)


Nah hasil dari proses di atas, adalah menu Report yang berada di bawah menu ACCOUNTING > Reporting>Report
yang jika diklik akan muncul window berikut:




 Kemudian jika diklik tombol Create, akan muncul form berikut:






Klik tombol Save As untuk memunculkan file dialog.

Hasil file csv nya seperti ini deh:



Demikian...
Seterusnya bisa dimodif sesuka hati.
Kalau saya sendiri, saya tambahkan tombol Export to CSV bersisian dengan tombol yang menghasilkan report PDF seperti contoh ini:




Semoga membantu.......

10 komentar:

  1. Terima kasih artikelnya. Salam kenal sebagai sesama praktisi OpenERP :D. Semoga bisa tukeran pengalaman.

    http://andhitiarama.wordpress.com

    BalasHapus
    Balasan
    1. terima kasih juga pak sudah berkunjung... saya sekilas liat blog nya... udah banyak banget ya artikel OpenERP nya... akan segera saya gali nih artikelnya :D

      Hapus
  2. infonya bagus dan bermanfaat mba... senang berkunjung,,,

    Kunjungi juga Ke Blog saya ya

    BalasHapus
    Balasan
    1. terima kasih sudah berkunjung... akan segera saya kunjungi blognya :)

      Hapus
  3. Halo, salam kenal... terima kasih infonya...

    lage cari2 ini nih... haha..

    gw coba dulu ya...

    BalasHapus
  4. Assalamu'alaikum

    Menarik artikelnya. Mau tanya, untuk file report.py dan file report.xml, setelah dibuat, diletakkan di folder mana ya?
    Saya pakai OS Linux untuk server OpenERP-nya.

    Terima kasih

    Wassalamu'alaikum

    BalasHapus
    Balasan
    1. Wa'alaikumsalam wrwb

      diletakkan di folder modul yang digunakan di dalam folder addons...
      kalau di Linux biasanya ada di /opt/openerp/..
      atau di /usr/share/pyshared/openerp/..

      Hapus
  5. Assalamu'alaikum mbak Tya,

    saya newbie neh di openERP :D , melanjutkan pertanyaan mas Pungki, di dalam folder addons itu kan ada banyak folder2 lain, apakah di root folder addons atau nggak? setelah di copy apa yang mesti dilakukan selanjutnya?
    Maaf apabila pertanyaannya dasar banget ;)

    Terima kasih

    Wassalamu'alaikum

    Iqnal

    BalasHapus
    Balasan
    1. Wa'alaikumsalam wrwb
      iyah di dalam folder addons ..
      setelah dicopy, direstart service OpenERP nya dan diinstal modul nya melalu menu Setting

      terima kasih

      Hapus