Files

GRT Expense Business Category

Ringkasan

grt_expense_business_category menambahkan segregasi Business Category pada Expense dan Expense Report.

Cakupan utama:

  • Expense per business category
  • Expense Team per business category
  • konsistensi analytic account expense
  • pembatasan akses berbasis effective_business_category_ids

Dependensi

  • hr_expense
  • account
  • grt_business_category_base

Model Utama

hr.expense

Penambahan utama:

  • business_category_id
  • expense_team_id
  • expense_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_id
  • expense_team_id
  • expense_analytic_account_id

Perilaku utama:

  • report menjaga konsistensi category/team dari seluruh expense line
  • posting accounting mewariskan expense_business_category_id dan analytic account ke journal entry

expense.team

Model team expense per category.

Security Rule

Model yang dibatasi category:

  • hr.expense
  • hr.expense.sheet
  • expense.team
  • crm.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 _search untuk hr.expense dan hr.expense.sheet
  • ditambahkan check_access_rule untuk hr.expense dan hr.expense.sheet agar lintas category ditolak dengan pesan jelas
  • bypass berbasis base.group_system di validasi operasional diubah menjadi bypass hanya untuk SUPERUSER_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

  1. restart service Odoo
  2. upgrade modul grt_expense_business_category
  3. uji user non-super-admin pada Expense dan Expense Report setelah menghapus filter default
  4. uji akses record lintas category dan pastikan muncul penolakan akses