OpenERP: Sembunyikan Field

Foto os

Anda telah memasang modul hr (Human Resource) yang salah satunya berisi form data karyawan. Namun Anda tidak membutuhkan field ssnid (Social Security Number ID) dan berniat untuk tidak menampakkannya ke user. Anda juga tidak ingin mengubah source utama demi kemudahan upgrade kelak. Bagaimana melakukannya ?

Pada tulisan lalu mengenai Menambah Field pada Partner kita melakukan proses penurunan tampilan (inherited view), sehingga cukup menambahkan field baru saja. Hal yang sama juga akan diterapkan pada kasus ini.

Buatlah direktori addons/hr_custom. Lalu buatlah sebuah file addons/hr_custom/view.xml.

<openerp>
    <data>
            <record id="view_employee_form1" model="ir.ui.view">
            <field name="name">hr.employee.form1</field>
            <field name="model">hr.employee</field>
            <field name="inherit_id" ref="hr.view_employee_form"/>
            <field name="arch" type="xml">
                <field name="ssnid" position="replace"/>
            </field>
        </record>
    </data>
</openerp>

Lalu buatlah profile-nya, yaitu addons/hr_custom/__openerp__.py.

{
    'name' : 'Pegawai',
    'depends' : ['hr'],
    'update_xml' : ['view.xml'],
}

Kemudian buat addons/hr_custom/__init__.py yang tidak berisi apa-apa.

Lalu lakukan langkah pembaharuan daftar modul melalui menu Administration, Modules, Update Modules List. Setelah selesai lakukan pemasangan dengan mencari modul hr_custom, klik Schedule for Installation dan Apply Scheduled Upgrades..

Lalu masuk ke menu Sumber Daya Manusia, Karyawan, dan klik Baru agar tampil form pengisian. Seharusnya field SSN No. sudah tidak tampil.

Mudah bukan ? Perhatikan tampilan sesudah proses penyembunyian ini.

Mungkin Anda bertanya bagaimana kita tahu ID view ini ? Seperti yang kita lihat bahwa XML di atas ada proses inherited:

<field name="inherit_id" ref="hr.view_employee_form"/>

Ini adalah penurunan dari modul hr, maka kita dapat memperolehnya di direktori addons/hr. Di dalam direktori ini ada file-file XML, dan kebiasaan OpenERP menamakan file XML untuk tampilan adalah mengandung kata view. Maka diperolehlah file addons/hr/hr_view.xml. Carilah kata ssnid. Anda akan memperolehnya beberapa. Namun yang kita butuhkan adalah ssnid yang berada di dalam type form.

        <record id="view_employee_form" model="ir.ui.view">
            <field name="name">hr.employee.form</field>
            <field name="model">hr.employee</field>
            <field name="type">form</field>
            <field name="arch" type="xml">
                    ...
                    ...
                    <notebook colspan="6">
                        <page string="Personal Information">
                            <group col="2" colspan="2" groups="base.group_hr_user">
                                <separator colspan="2" string="Social IDs"/>
                                <field name="ssnid"/>
                                <field name="sinid" groups="base.group_extended"/>
                                <field name="identification_id" groups="base.group_extended"/>
                                <field name="passport_id"/>
                            </group>
            ...
            ...

Baris berikut inilah yang kita butuhkan:

        <record id="view_employee_form" model="ir.ui.view">

Ini sesuai dengan XML yang kita buat tadi:

<field name="inherit_id" ref="hr.view_employee_form"/>

Sedangkan awalan hr pada ref menandakan modul hr dengan titik sebagai pemisahnya.

Untuk lebih meyakinkan lagi perhatikan baris:

            <field name="model">hr.employee</field>

Itu adalah struktur datanya. Struktur tabel yang berupa ORM (object relational module) sendiri berada di file addons/hr/hr.py. Di situ dengan mudah kita bisa dapatkan class hr_employee yang didalamnya terdapat field ssnid.

class hr_employee(osv.osv):
    _name = "hr.employee"
    _description = "Employee"
    _inherits = {'resource.resource': "resource_id"}
    _columns = {
        'country_id': fields.many2one('res.country', 'Nationality'),
        'birthday': fields.date("Date of Birth"),
        'ssnid': fields.char('SSN No', size=32, help='Social Security Number'),

Perhatikan baris

    _name = "hr.employee"

yang cocok dengan baris XML mengenai model.

Adapun pemberian angka 1 pada baris berikut ini

            <record id="view_employee_form1" model="ir.ui.view">
            <field name="name">hr.employee.form1</field>

adalah bebas saja.

Rumit ? Biasakanlah. Anda akan menemui banyak kemudahan mengembangkan aplikasi bisnis dengan OpenERP.

Referensi: