Setelah punya "otak" (Model), kita butuh "wajah" agar pengguna bisa berinteraksi dengan data. Di Odoo, "wajah" atau antarmuka pengguna (UI) ini didefinisikan dalam file XML dan disebut View.

File-file View biasanya kita kumpulkan di dalam direktori views/.

💡 Fakta Keren: View yang Anda tulis di file XML sebenarnya adalah data yang disimpan di dalam basis data Odoo (di model ir.ui.view). File XML hanyalah cetak biru untuk memuatnya.

🏛️ Tiga Pilar Utama UI

Untuk menampilkan data dari sebuah model, Anda butuh tiga serangkai ini:

  1. 🚀 Aksi Jendela (ir.actions.act_window): "Lem" yang menghubungkan Model dan View. Aksi ini bilang, "Hei Odoo, untuk model ini, tolong tampilkan view A, B, dan C ya!"
  2. 🖼️ View (ir.ui.view): "Kanvas" yang melukiskan bagaimana data ditampilkan. Yang paling umum adalah form (formulir detail) dan tree (tampilan daftar).
  3. 🧭 Menu Item (ir.ui.menu): "Pintu masuk" di antarmuka Odoo. Pengguna mengklik menu ini untuk memicu Aksi Jendela.

🎬 Contoh Lengkap: Menampilkan Model "Buku"

Mari kita buat UI untuk model library.book kita. Buat file views/library_book_views.xml:

<?xml version="1.0" encoding="utf-8"?>
<odoo>

    <!-- 1. Tampilan Formulir (untuk melihat detail satu buku) -->
    <record id="library_book_view_form" model="ir.ui.view">
        <field name="name">library.book.form</field>
        <field name="model">library.book</field>
        <field name="arch" type="xml">
            <form string="Buku">
                <sheet>
                    <group>
                        <field name="name"/>
                        <field name="author"/>
                        <field name="publication_date"/>
                        <field name="page_count"/>
                        <field name="is_available"/>
                    </group>
                    <notebook>
                        <page string="Deskripsi">
                            <field name="description"/>
                        </page>
                    </notebook>
                </sheet>
            </form>
        </field>
    </record>

    <!-- 2. Tampilan Daftar (untuk melihat daftar banyak buku) -->
    <record id="library_book_view_tree" model="ir.ui.view">
        <field name="name">library.book.tree</field>
        <field name="model">library.book</field>
        <field name="arch" type="xml">
            <tree string="Buku-Buku">
                <field name="name"/>
                <field name="author"/>
                <field name="publication_date"/>
            </tree>
        </field>
    </record>

    <!-- 3. Aksi Jendela (penghubung) -->
    <record id="library_book_action" model="ir.actions.act_window">
        <field name="name">Buku-Buku</field>
        <field name="res_model">library.book</field>
        <field name="view_mode">tree,form</field>
        <field name="help" type="html">
            <p class="o_view_nocontent_smiling_face">
                Belum ada buku nih. Yuk, buat buku baru! Tambahkan buku!
            </p>
        </field>
    </record>

    <!-- 4. Menu Item (tombol menu) -->
    <menuitem
        id="library_base_menu"
        name="Perpustakaanku"
        sequence="10"/>

    <menuitem
        id="library_book_menu"
        name="Buku-Buku"
        parent="library_base_menu"
        action="library_book_action"
        sequence="10"/>

</odoo>

🧐 Bedah Kode XML

🖼️ Jenis-Jenis View Populer

1. Tampilan Formulir (<form>)

Anatomi Formulir Lebih Lanjut

Formulir Odoo bisa lebih dari sekadar field input. Mari kita percanggih contoh formulir kita: