GRT Expense Business Category
Ringkasan
grt_expense_business_category menambahkan segregasi Business Category pada Expense dan Expense Report.
Cakupan utama:
Expenseper business categoryExpense Teamper business category- konsistensi analytic account expense
- pembatasan akses berbasis
effective_business_category_ids
Dependensi
hr_expenseaccountgrt_business_category_base
Model Utama
hr.expense
Penambahan utama:
business_category_idexpense_team_idexpense_analytic_account_id
Perilaku utama:
- category dapat mengikuti team
- analytic account mengikuti category
- validasi memastikan company/category/team konsisten
hr.expense.sheet
Penambahan utama:
business_category_idexpense_team_idexpense_analytic_account_id
Perilaku utama:
- report menjaga konsistensi category/team dari seluruh expense line
- posting accounting mewariskan
expense_business_category_iddan analytic account ke journal entry
expense.team
Model team expense per category.
Security Rule
Model yang dibatasi category:
hr.expensehr.expense.sheetexpense.teamcrm.business.category(scope expense)account.move(expense business category)account.move.line(expense business category)
Prinsip akses:
- user expense hanya bisa akses company + category efektif
- manager expense tetap dibatasi category efektif
- admin modul tetap dibatasi category efektif
- hanya super admin (UID 1) yang dapat bypass penuh
Update Akses Ketat (2026-04-16)
Perubahan hardening yang diterapkan:
- ditambahkan guard domain pada
_searchuntukhr.expensedanhr.expense.sheet - ditambahkan
check_access_ruleuntukhr.expensedanhr.expense.sheetagar lintas category ditolak dengan pesan jelas - bypass berbasis
base.group_systemdi validasi operasional diubah menjadi bypass hanya untukSUPERUSER_ID(UID 1)
Implikasi:
- user tidak bisa membuka data lintas category walau filter list default dihapus
- admin expense tetap perlu didaftarkan ke team/category tujuan
Langkah Deploy
- restart service Odoo
- upgrade modul
grt_expense_business_category - uji user non-super-admin pada Expense dan Expense Report setelah menghapus filter default
- uji akses record lintas category dan pastikan muncul penolakan akses