Skip to content

Instantly share code, notes, and snippets.

@akhdaniel
Last active January 26, 2023 11:57
Show Gist options
  • Save akhdaniel/b0814992f66f719f0d8d4e74626370b6 to your computer and use it in GitHub Desktop.
Save akhdaniel/b0814992f66f719f0d8d4e74626370b6 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