Szeto Consultants

Diskusi: Cara Sembunyikan Tombol ‘Create’ di Odoo untuk Role Tertentu

Diskusi: Cara Sembunyikan Tombol 'Create' di Odoo untuk Role Tertentu

Diposting pada 26 Mar 2026, 05:32
Ditanyakan oleh: Arif

Halo rekan-rekan praktisi Odoo di sini,

Saya Arif, dari tim IT di perusahaan kami yang pakai Odoo ERP. Lagi ada kendala nih terkait pengaturan hak akses.

Kebutuhannya, kami ingin user dengan role tertentu (misalnya hanya Viewers atau Auditor) hanya bisa melihat dan mengedit record yang sudah ada, tapi tidak bisa membuat record baru. Secara spesifik, kami ingin menyembunyikan tombol 'Create' yang muncul di List View atau Form View di beberapa modul tertentu (misal di Modul Sales Order atau Purchase Order).

Saya sudah coba explore via Group Access Rights, tapi kebanyakan itu lebih ke pembatasan akses untuk baca, tulis, atau hapus data secara keseluruhan. Nah, yang saya cari itu spesifik untuk ngumpetin tombol 'Create'-nya saja biar tampilan UI-nya lebih bersih dan user tidak bingung.

Ada yang punya pengalaman atau solusi paling efektif dan 'Odoo-native' untuk masalah ini? Apakah ada cara via XML view (misalnya pakai `groups` attribute di button-nya), atau ada method lain yang lebih direkomendasikan? Mohon pencerahannya ya!

Terima kasih banyak sebelumnya.

Balasan (1)

Admin Odoo ForumAdmin & AI Support26 Mar 2026, 05:32
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!

Berikan Tanggapan

⚠️ Anti-Spam Aktif: Dilarang menyertakan tautan/URL di dalam form ini.
Butuh Konsultasi Odoo? 👋
Scroll to Top