Halo Mas Arif,
Wah, ini pertanyaan yang sering muncul nih di komunitas Odoo! Keren banget pertanyaannya, karena memang kadang kita butuh kontrol UI yang lebih spesifik ketimbang sekadar hak akses read/write/delete. Apalagi biar tampilan bersih dan user tidak bingung, itu esensial banget.
Mari kita bahas solusinya ya, Mas. Ada dua pendekatan utama yang bisa kita gunakan, keduanya 'Odoo-native' kok.
1. Revisi Hak Akses (Access Rights) di Level Model (Metode Paling Odoo-Native)
Sebenarnya, ini adalah cara paling fundamental di Odoo. Jika hak akses 'Create' di sebuah model dimatikan untuk grup tertentu, Odoo secara otomatis
seharusnya menyembunyikan tombol 'Create' tersebut di List View maupun Form View (ketika membuat record baru dari modul lain yang terhubung). Ini berlaku untuk Odoo versi-versi terbaru (terutama Odoo 14 ke atas).
Mungkin saat Mas Arif eksplorasi 'Group Access Rights', belum sampai ke pengaturan yang paling spesifik ini. Cara mengecek dan mengubahnya:
Pergi ke menu
Settings >
Users & Companies >
Groups.
Pilih grup yang Mas Arif maksud (misalnya grup 'Viewers' atau 'Auditor', atau buat grup baru yang lebih spesifik).
Di tab
Access Rights (atau
Permissions, tergantung versi Odoo), cari model yang ingin diatur (contoh:
Sales Order atau
Purchase Order).
Pastikan kotak centang di kolom
Create untuk model tersebut
tidak dicentang (kosong).
Lakukan hal yang sama untuk semua model yang ingin tombol 'Create'-nya disembunyikan bagi grup tersebut.
Setelah itu,
Reload browser Mas Arif atau minta user untuk
Log out dan
Log in lagi.
Jika Mas Arif sudah mengatur ini dengan benar dan tombol 'Create' masih muncul, mungkin ada interaksi kompleks antar grup atau view lain. Nah, jika ini terjadi, kita beralih ke solusi kedua.
2. Modifikasi View Melalui XML Inheritance (Solusi UI Level yang Lebih Spesifik)
Kalau cara pertama tidak berhasil menyembunyikan tombol 'Create', maka kita perlu bermain dengan XML view secara langsung. Ini memungkinkan kita mengontrol elemen UI lebih presisi dan mengaitkannya dengan grup tertentu.
Untuk melakukan ini, Mas Arif perlu membuat sebuah custom module kecil. Berikut langkah-langkahnya:
a. Buat Custom Group (Opsional, tapi Direkomendasikan)
Jika grup 'Viewers' atau 'Auditor' yang Mas Arif punya terlalu umum dan tidak spesifik per modul, ada baiknya Mas Arif membuat grup baru yang lebih spesifik, misalnya 'Sales Order / Viewer Only' atau 'Purchase Order / Auditor'. Ini akan mempermudah pengelolaan hak akses di masa depan. Contoh XML untuk grup baru di file security/groups.xml dalam custom module:
<record model="res.groups" id="group_sales_order_viewer">
<field name="name">Sales Order / Viewer Only</field>
<field name="category_id" ref="base.module_category_sales_management"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
b. Inherit List View (Tree View) dan Sembunyikan Tombol 'Create'
Kemudian, di file XML view (misalnya views/sale_order_views_inherit.xml) dalam custom module Mas Arif, kita akan meng-inherit view List Sales Order dan mengatur atribut create menjadi false. Yang paling penting, kita akan mengaitkan modifikasi view ini dengan grup yang sudah Mas Arif tentukan sebelumnya menggunakan atribut groups_id.
<!-- Untuk Modul Sales Order -->
<record id="view_order_tree_inherit_no_create" model="ir.ui.view">
<field name="name">sale.order.tree.inherit.no.create</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_tree"/>
<!-- View ini hanya akan aktif untuk user yang ada di grup 'group_sales_order_viewer' -->
<field name="groups_id" eval="[(4, ref('nama_custom_module_anda.group_sales_order_viewer'))]"/>
<field name="arch" type="xml">
<tree position="attributes">
<attribute name="create">false</attribute>
</tree>
</field>
</record>
<!-- Contoh untuk Modul Purchase Order, jika ingin disembunyikan juga -->
<!-- Anda bisa buat grup baru lagi seperti 'Purchase Order / Viewer Only' atau pakai grup yang sama -->
<record id="view_purchase_order_tree_inherit_no_create" model="ir.ui.view">
<field name="name">purchase.order.tree.inherit.no.create</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_tree"/>
<!-- Sesuaikan dengan grup Purchase Viewer Anda -->
<field name="groups_id" eval="[(4, ref('nama_custom_module_anda.group_purchase_order_viewer'))]"/>
<field name="arch" type="xml">
<tree position="attributes">
<attribute name="create">false</attribute>
</tree>
</field>
</record>
Penjelasan:
<field name="inherit_id" ref="sale.view_order_tree"/>: Ini menunjukkan bahwa kita akan memodifikasi view dengan ID view_order_tree dari modul Sales (sale).
<field name="groups_id" eval="[(4, ref('nama_custom_module_anda.group_sales_order_viewer'))]"/>: Ini adalah kuncinya! Dengan ini, modifikasi view (yaitu atribut create="false") hanya akan diterapkan ketika user yang sedang login tergabung dalam grup group_sales_order_viewer. User di grup lain akan tetap melihat tombol 'Create'.
<tree position="attributes"><attribute name="create">false</attribute></tree>: Ini adalah instruksi untuk menambahkan atau mengubah atribut create pada tag <tree> menjadi false, yang secara efektif menyembunyikan tombol 'Create' di List View.
Setelah membuat custom module ini, pastikan untuk menginstalnya (atau mengupgradenya jika sudah terinstal) di Odoo Mas Arif. Jangan lupa mengganti
nama_custom_module_anda dengan nama modul yang sebenarnya ya.
Saran Tambahan: Uji Coba Menyeluruh: Setelah menerapkan solusi, pastikan untuk menguji dengan beberapa akun user dari berbagai grup untuk memastikan perilakunya sesuai yang diharapkan.
Dokumentasi: Catat perubahan yang Mas Arif lakukan, terutama jika menggunakan custom module. Ini penting untuk pemeliharaan di masa depan.
Hak Akses Form View: Meskipun tombol 'Create' di List View sudah disembunyikan, penting juga untuk memastikan user tidak bisa membuat record baru dari Form View (misalnya lewat relasi many2one). Pengaturan hak akses di poin 1
(Create: False) akan sangat membantu di sini.
Semoga penjelasan ini membantu Mas Arif dan tim IT! Jangan ragu bertanya lagi ya kalau ada kendala atau butuh detail lebih lanjut. Semangat terus, Sobat Odoo!