GRT MRP Business Category
Ringkasan
grt_mrp_business_category menambahkan segregasi Business Category pada area Manufacturing Odoo.
Modul ini melengkapi arsitektur business category yang sebelumnya sudah ada di:
grt_business_category_basegrt_inventory_business_categorygrt_mrp_overhead_costing
Fokus modul ini adalah memastikan:
BoMpunyabusiness_category_idManufacturing Orderpunyabusiness_category_id- raw material move dan finished move MO mengikuti category MO
- team manufacturing bisa dipisah per business category
- valuation trace manufacturing tetap konsisten terhadap category inventory
Tujuan
Modul ini dibuat untuk kebutuhan segregasi manufacturing lintas business unit dengan model yang ketat dan aman.
Tujuan utamanya:
- memisahkan data
BoMper business category - memisahkan
MOper business category - menjaga raw material dan finished goods tetap berada pada category yang benar
- menjaga costing dan valuation inventory tetap membawa category yang sama
- mencegah user mengakses atau memakai data manufacturing di luar
effective_business_category_ids
Dependensi
Modul bergantung pada:
mrpstock_accountgrt_business_category_basegrt_inventory_business_categorygrt_mrp_overhead_costing
Cakupan Model
mrp.bom
Penambahan utama:
business_category_idmanufacturing_analytic_account_id
Perilaku:
- default category diambil dari product atau product template
company_idakan mengikuti company dari category jika belum diisi- BoM harus konsisten dengan category finished product
- seluruh component dan by-product harus memakai category yang sama dengan BoM
mrp.production
Penambahan utama:
business_category_idmanufacturing_analytic_account_idmrp_team_id
Perilaku:
- default category diambil dari
mrp_team,BoM, product, atau warehouse picking type - sistem mencoba mencari
BoMyang cocok berdasarkan product + business category mrp_team_idharus berasal dari company dan business category yang samaaction_confirmdanbutton_mark_doneakan menolak MO yang belum punya category
mrp.team
Model baru untuk tim manufacturing per category.
Field utama:
namecompany_idbusiness_category_iduser_idmember_ids
Fungsi:
- membatasi pemakaian team sesuai category
- mewariskan akses category ke user melalui mekanisme
effective_business_category_ids
mrp.bom.line
Penambahan:
business_category_idrelated kebom_id.business_category_id
Fungsi:
- memudahkan audit dan grouping line berdasarkan category BoM
stock.move.line
Penambahan:
business_category_idrelated kemove_id.business_category_id
stock.valuation.layer
Penambahan:
business_category_idrelated kestock_move_id.business_category_idinventory_analytic_account_idrelated kestock_move_id.inventory_analytic_account_id
Fungsi:
- memperjelas audit valuation layer hasil manufacturing
Alur Data Category
Saat membuat BoM
Urutan default category:
product_id.business_category_idproduct_tmpl_id.business_category_id- default dari
business.category.mixin
Saat membuat MO
Urutan default category:
mrp_team_id.business_category_idbom_id.business_category_idproduct_id.business_category_idwarehouse.business_category_id- default dari
business.category.mixin
Jika bom_id belum diisi, modul akan mencoba mencari BoM yang match terhadap:
- product
- business category
- company
Saat flow inventory manufacturing berjalan
Kategori manufacturing dipakai sebagai sumber utama untuk:
- raw material move MO
- finished move MO
- move line
- stock valuation layer
- account move valuation inventory melalui modul inventory business category
Validasi Utama
Modul ini sengaja ketat.
Constraint penting:
- BoM wajib punya category jika terkait produk
- MO wajib punya category jika terkait produk
product.business_category_idharus sama denganmrp.production.business_category_idbom.business_category_idharus sama denganmrp.production.business_category_id- component BoM harus sama category dengan BoM
- raw move dan finished move tidak boleh beda category dengan MO
mrp_team.business_category_idharus sama dengan category MO- user non-admin hanya boleh memakai category yang ada di
effective_business_category_ids
Security Rule
Model yang dibatasi oleh business category:
mrp.bommrp.bom.linemrp.bom.byproductmrp.productionstock.move.linestock.valuation.layermrp.teamcrm.business.categoryuntuk user MRP
Prinsip rule:
- user MRP hanya bisa akses data pada company yang diizinkan
- user MRP hanya bisa akses data pada
effective_business_category_ids - admin modul tetap dibatasi
effective_business_category_ids - hanya super admin (UID 1) yang dapat bypass penuh
Integrasi dengan Modul Lain
grt_inventory_business_category
Modul ini bergantung pada propagasi stock.move.business_category_id agar:
- raw material issue dari MO ikut category MO
- finished goods receipt dari MO ikut category MO
- valuation journal inventory tetap punya
inventory_business_category_id
grt_mrp_overhead_costing
Modul overhead costing sudah dipatch agar filter MO done lebih mengutamakan:
mrp.production.business_category_id
Bukan hanya:
product.business_category_id
Migrasi Existing Data
post_init_hook melakukan backfill untuk data existing.
Urutan backfill:
- isi
product_template.business_category_idkosong berdasarkan default category company - isi
mrp_bom.business_category_iddari product atau product template - isi
mrp_production.business_category_iddari BoM atau product - isi
stock_move.business_category_iddari MO raw/finished - isi
account_move.inventory_business_category_iddaristock_move
Catatan:
- pendekatan ini aman untuk database yang sudah punya product dan BoM
- tetap lebih aman diuji dulu di staging sebelum upgrade production
Batasan Desain V1
Desain v1 sengaja konservatif.
Asumsi utama:
- satu product operasional mewakili satu business category
- satu BoM mewakili satu business category
- satu MO mewakili satu business category
Implikasi:
- jika satu bahan baku ingin dipakai lintas BU, paling aman dibuat product terpisah per BU
- model ini mengutamakan keamanan segregasi, bukan fleksibilitas sharing master data lintas BU
View dan UI
Modul menambahkan field category pada:
- form dan tree
BoM - form dan tree
Manufacturing Order - form dan tree
Manufacturing Team - search
BoM(filter dan group by business category) - search
Manufacturing Order(filter dan group by business category)
Tujuan:
- memudahkan audit
- memudahkan filter dan grouping
- memastikan user melihat context category saat operasional
- menjaga list, pivot, dan graph MRP tetap bisa dipisah per business category melalui search filter/group by
Urutan Implementasi yang Disarankan
- pastikan
grt_business_category_basedangrt_inventory_business_categorysudah stabil - pastikan product existing sudah memiliki category yang benar
- upgrade
grt_mrp_business_categorydi staging - review hasil backfill
BoM,MO, danstock.move - uji skenario lengkap raw material sampai finished goods
- baru lanjut ke production
Checklist Testing Staging
- buat BoM baru dan pastikan category terisi otomatis
- buat MO dari BoM dan pastikan category mengikuti BoM
- confirm MO dan cek raw move membawa category MO
- mark done MO dan cek finished move membawa category MO
- cek valuation layer hasil MO
- cek journal valuation inventory membawa
inventory_business_category_id - cek user BU A tidak bisa baca MO atau BoM BU B
- cek user BU A tidak bisa baca BoM line, by-product, move line, dan valuation layer BU B
- cek filter/group by business category pada list, pivot, dan graph Manufacturing Order
- cek overhead costing tetap membaca MO done sesuai category
Dokumen Terkait
Update Akses Ketat (2026-04-16)
Dokumentasi ini diperbarui mengikuti hardening akses pada modul MRP.
Perubahan yang diterapkan:
- model
mrp.bomdanmrp.productionsekarang menambahkan guard_searchagar query selalu dipersempit ke category efektif user - ditambahkan
check_access_rulepadamrp.bomdanmrp.productionuntuk menampilkan peringatan akses yang jelas - validasi internal yang sebelumnya memberi pengecualian untuk
base.group_systemdiubah menjadi pengecualian hanya untukSUPERUSER_ID(UID 1) - rule
base.group_systemdisecurity/ir.rule.csvdiperketat dari company-only menjadi company +effective_business_category_ids
Dampak operasional:
- admin modul MRP tidak otomatis bisa melihat lintas business category
- jika perlu masuk category lain, user harus didaftarkan ke category/team terkait
- hanya super admin yang tetap punya bypass penuh lintas category
Langkah deploy:
- restart service Odoo
- upgrade modul
grt_mrp_business_category - verifikasi list BoM dan MO dengan menghapus filter default: data lintas category harus tetap tidak terlihat
- verifikasi akses detail record lintas category menghasilkan pesan penolakan akses