Menginherite Object Dengan Banyak View

Salah satu perbedaan -dari sekian banyak perbedaan- OpenERP v6 dan v7 adalah ketika kita ingin menginherite suatu object/tabel yang ternyata object tersebut banyak dipakai beberapa tampilan seperti object ‘stock.picking’ yang memiliki beberapa tampilan yaitu Delivery Order, Incoming Shipment, & Internal Move. Selain itu juga ada object ‘account.invoice’ yang juga memiliki banyak tampilan yaitu Customer Invoice & Supplier Invoice.

Kasus ini penulis temukan ketika ingin menambahkan beberapa field pada tampilan ‘Delivery Order’. Awalnya penulis lakukan seperti biasa yaitu tinggal inherite objectnya dengan menambahkan field atau override method, tetapi ketika menambahkan di file xmlnya, field yang sudah ditambahkan tidak kunjung ‘muncul’ bahkan menimbulkan error.

Seperti biasa cara jitu untuk mendapatkan solusi adalah dengan googling atau searching cara yang kita inginkan pada addons, dengan menggunakan eclipse maka proses pencarian begitu mudah.

Akhirnya penulis temukan solusinya, yaitu dengan double inherite pada object asli & object tampilan. Seperti contoh kasus diatas ketika kita ingin menambahkan beberapa field pada tampilan ‘Delivery Order’ maka kita harus menghinherite 2 object sekaligus yaitu object stock.picking sebagai object intinya dan object stock.picking.out sebagai object tampilannya. Sehingga codenya seperti dibawah ini :


class stock_picking(osv.osv):
    _inherit = 'stock.picking'
    _columns = {
        'driver': fields.char('Driver', size=16),
        'kendaraan': fields.char('No Kendaraan', size=10),
        }
    
stock_picking()


class stock_picking_out(osv.osv):
    _inherit = 'stock.picking.out'
    _columns = {
        'driver': fields.char('Driver', size=16),
        'kendaraan': fields.char('No Kendaraan', size=10),
        }
    
stock_picking_out()

Begitu juga halnya dengan interface xmlnya maka kita harus double inherite pada tampilan object inti dan tampilan object specific (Delivery Order), contohnya seperti code dibawah ini :


        <record model="ir.ui.view" id="supir_picking_order">
            <field name="name">stock.picking.supir.form</field>
            <field name="model">stock.picking</field>
            <field name="inherit_id" ref="stock.view_picking_form" />
            <field name="arch" type="xml">
                <field name="move_type" position="before">
                    <field name="driver"/>
					<field name="kendaraan"/>
                </field>
            </field>
        </record>


        <record model="ir.ui.view" id="supir_picking_order_out">
            <field name="name">stock.picking.supir.form</field>
            <field name="model">stock.picking.out</field>
            <field name="inherit_id" ref="stock.view_picking_out_form" />
            <field name="arch" type="xml">
                <field name="move_type" position="before">
                    <field name="driver"/>
					<field name="kendaraan"/>
                </field>
            </field>
        </record>
	

Semoga bisa menjadi ‘pencerahan’ bagi mereka yang sedang menemukan kesulitan issue seperti ini seperti halnya penulis alami beberapa waktu lalu. Semoga bermanfaat …

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