Legend OpenERP

Alhamdulillah pada kesempatan kali ini penulis akan mengangkat pembahasan tentang Legend pada OpenERP. Legend sangat berkaitan erat dengan fitur Sequence suatu Object OpenERP. Fungsi legend adalah untuk membuat format penomoran transaksi sesuai dengan satuan waktu, baik tahun, bulan, week, hari, jam, menit, bahkan sampai hitungan detik.

Walaupun sudah cukup lengkap, biasanya user masih membutuhkan legend tambahan untuk mengakomodasi kebutuhan penomoran transaksi yang sudah berjalan. Seperti halnya penomoran bulan dan tahun dengan angka romawi. Olehkarna itu, pada tutorial kali ini kita akan mencoba menambahkan legend tersebut dengan mengcustomize modul yang telah ada.

Hal yang pertama kita lakukan adalah membuat modul OpenERP seperti biasa, lalu untuk menambahkan pilihan legend pada form Sequence maka kita harus menambahkan code xml seperti dibawah ini :



		<record model="ir.ui.view" id="sequence_view_legend">
            <field name="name">ir.sequence.legend</field>            
            <field name="model">ir.sequence</field>            
            <field name="type">form</field>							
			<field name="inherit_id" ref="base.sequence_view"/>
            <field name="arch" type="xml">
		        <xpath expr="//group[@string='Legend (for prefix, suffix)']" position="inside">
		            <group>
						<separator string="Roman Number"/>
	                    <label colspan="2" string="Month: %%(Rmonth)s"/>
	                    <label colspan="2" string="Year: %%(Ryear)s"/>
		        	</group>
		        </xpath>
            </field>		
		</record>
		

Pada code diatas kita menambahkan 2 pilihan legend yaitu format bulan dan tahun dalam bilangan romawi. Setelah kita menambahkannya pada form, maka selanjutnya kita harus merevisi coding sequence tersebut pada file pythonnya seperti dibawah ini :


class ir_sequence(osv.osv):
    _inherit = 'ir.sequence'

    def int_to_roman(self, input):
        ints = (1000, 900,  500, 400, 100,  90, 50,  40, 10,  9,   5,  4,   1)
        nums = ('M',  'CM', 'D', 'CD','C', 'XC','L','XL','X','IX','V','IV','I')
        
        result = ""
        for i in range(len(ints)):
            count = int(input / ints[i])
            result += nums[i] * count
            input -= ints[i] * count
        return result

    def _interpolation_dict(self):
        t = time.localtime()
        return {
            'Rmonth': self.int_to_roman(int(time.strftime('%m'))),
            'Ryear': self.int_to_roman(int(time.strftime('%Y'))),
            'year': time.strftime('%Y', t),
            'month': time.strftime('%m', t),
            'day': time.strftime('%d', t),
            'y': time.strftime('%y', t),
            'doy': time.strftime('%j', t),
            'woy': time.strftime('%W', t),
            'weekday': time.strftime('%w', t),
            'h24': time.strftime('%H', t),
            'h12': time.strftime('%I', t),
            'min': time.strftime('%M', t),
            'sec': time.strftime('%S', t),
        }

ir_sequence()

Ada 2 hal yang kita lakukan pada object Sequence (ir.sequence) yaitu membuat method baru yang bernama int_to_roman(), fungsinya adalah menkonversi bilangan bulat menjadi bilangan romawi. Hal kedua yang kita lakukan adalah mengoverride method _interpolation_dict() yang bertujuan untuk menyisipkan format romawi yang telah kita tambahkan pada form Sequence.

Alhamdulillah akhirnya kita bisa menambahkan legend pada sequence OpenERP, mudah-mudahan yang sedikit ini dapat memberikan manfaat. Selamat mencoba …

Advertisements

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