Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save obayit/e7c95d98b99cb81e1b6f7aa7a52ad4d5 to your computer and use it in GitHub Desktop.
Save obayit/e7c95d98b99cb81e1b6f7aa7a52ad4d5 to your computer and use it in GitHub Desktop.

Trik ini banyak yang nyari2 tapi blm ketemu solusinya bahkan di stackoverflow dan forum odoo. Beruntung anda jadi orang Indonesia :)

Pada lingkungan multi-company, ada kasus dimana tampilan data tree view (misalnya res.partner) harus di filter berdasarkan company_id user yang sedang login, tapi tidak bisa dilakukan dengan record rule, karena data tersebut memang mesti bisa dibaca oleh semua user.

Jika menggunakan record rules, setup-nya sangat mudah, yaitu tinggal membuat record rules atas suatu group dengan domain sbb atas object res.partner:

[('company_id', '=', user.company_id)]

Dimana disini digunakan variabel user object yang sudah tersedia di sistem record rules. Jika rules dikasi akses read, write, update, atau delete, maka hanya user yang company_id nya sama dengan yang ada di record partner yang bisa melihat dan mengelola data partner tersebut.

Bagaimana jika kita hanya ingin membatasi tampilan saja, sementara secara record rules, user memang diperbolehkan untuk membaca data tersebut, misalnya untuk dimunculkan di dropdown many2one object lain.

Solusinya adalah dengan membuat domain di Action Window menu tampilan list record tersebut. Tapi masalahnya, pada domain action window, tidak tersedia variabel user object yang sedang login seperti halnya di record rules, tapi hanya ada uid berupa integer.

Jadi domainnya harus diakali sbb:

('company_id.user_ids','in',[uid])

Sehingga action window akan otomatis mem-filter tree view dengan kondisi sbb:

  • menampilkan record res.users yang company_id.user_ids berada di dalam array list [uid]
  • user_ids adalah salah satu field (many2many) yang ada di res.company yang isinya adalah user-user yang di allow pada suatu company
  • uid adalah variabel user id (integer) yang sedang login yang tersedia di action window

Dengan demikian, maka tampilan record res.partner di tree view akan otomatis ter-filter hanya yang company_id nya sama dengan user yang login. Dan user itu tetap bisa membaca data partner yang berada pada company_id lain misalnya pada form yang ada relasi many2one ke res.partner.


Profit per Hari

Artikel ini disponsori oleh RoyalQ, robot trading crypto-currency otomatis yang bisa menghasilkan profit konsisten 10-30% per bulan sambil anda tidur!

Informasi dan PENDAFTARAN : https://royalq.info/s/daftar_sekarang

Register Account Binance: https://accounts.binance.com/en/register?ref=35436636


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment