GRT Purchase Business Category
Ringkasan
grt_purchase_business_category menambahkan segregasi Business Category pada proses Purchasing.
Cakupan utama:
Purchase Orderper business categoryPurchase Teamper business category- propagasi analytic account pembelian
- pembatasan akses berdasarkan
effective_business_category_ids
Dependensi
purchaseaccountgrt_business_category_base
Model Utama
purchase.order
Penambahan utama:
business_category_idanalytic_account_idpurchase_team_idpayment_status
Perilaku utama:
- category dapat mengikuti
purchase_team_id - analytic account mengikuti setting category
- validasi company/category/team dijaga ketat
purchase.team
Model team purchasing per category.
Field utama:
namecompany_idbusiness_category_iduser_idmember_ids
Security Rule
Model yang dibatasi category:
purchase.orderpurchase.teamcrm.business.category(scope purchase)account.move(purchase business category)account.move.line(purchase business category)
Prinsip akses:
- user hanya bisa melihat data pada company +
effective_business_category_ids - manager purchase 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 di
purchase.order._searchagar query selalu dibatasi ke company + category efektif user - ditambahkan
purchase.order.check_access_ruleagar akses lintas category menghasilkan pesanAccess denied - bypass validasi yang sebelumnya berbasis
base.group_systemdiubah menjadi hanyaSUPERUSER_ID(UID 1)
Implikasi:
- menghapus filter list default tidak lagi membuka data lintas category
- admin purchase harus tetap didaftarkan ke team/category yang sesuai
Langkah Deploy
- restart service Odoo
- upgrade modul
grt_purchase_business_category - uji user non-super-admin dengan menghapus filter list default dan pastikan data lintas category tetap tidak muncul
- uji buka record lintas category dan pastikan muncul penolakan akses