Permission and menu management updates for Hospital Stock and OPD access

This commit is contained in:
DevSoftTech Server 2026-04-07 04:25:02 +05:30
parent 16f3c95053
commit 5bae9088f3
3 changed files with 72 additions and 30 deletions

View File

@ -57,6 +57,14 @@ class AuthGroups extends ShieldAuthGroups
'title' => 'Stock Manager',
'description' => 'Manages stock masters, approvals, and procurement.',
],
'stock_requester' => [
'title' => 'Stock Requester',
'description' => 'Compatibility role for users who create stock indents.',
],
'stock_issuer' => [
'title' => 'Stock Issuer',
'description' => 'Compatibility role for users who issue stock and receive purchase stock.',
],
'department_head' => [
'title' => 'Department Head',
'description' => 'Creates and tracks departmental stock indents.',
@ -164,6 +172,7 @@ class AuthGroups extends ShieldAuthGroups
'users.*',
'beta.*',
'billing.*',
'opd.doctor-panel.access',
'finance.*',
'diagnosis.*',
'doctor_work.*',
@ -178,6 +187,7 @@ class AuthGroups extends ShieldAuthGroups
'users.delete',
'beta.access',
'billing.*',
'opd.doctor-panel.access',
'finance.*',
'diagnosis.*',
'doctor_work.*',
@ -192,6 +202,7 @@ class AuthGroups extends ShieldAuthGroups
'users.edit',
'beta.access',
'billing.*',
'opd.doctor-panel.access',
'finance.*',
'diagnosis.*',
'doctor_work.*',
@ -206,6 +217,17 @@ class AuthGroups extends ShieldAuthGroups
'hospital_stock.purchase.manage',
'hospital_stock.report.view',
],
'stock_requester' => [
'hospital_stock.access',
'hospital_stock.indent.create',
'hospital_stock.report.view',
],
'stock_issuer' => [
'hospital_stock.access',
'hospital_stock.issue',
'hospital_stock.purchase.manage',
'hospital_stock.report.view',
],
'department_head' => [
'hospital_stock.access',
'hospital_stock.indent.create',

View File

@ -985,29 +985,30 @@ $routes->group('setting', static function($routes) {
$routes->get('admin/bed-assignments', 'Setting\\BedManagement::assignmentHistory');
$routes->post('admin/bed-assignments/save', 'Setting\\BedManagement::saveAssignment');
$routes->post('admin/bed-assignments/delete', 'Setting\\BedManagement::deleteAssignment');
$routes->get('admin/hospital-stock', 'Setting\\HospitalStock::index');
$routes->get('admin/hospital-stock/dashboard', 'Setting\\HospitalStock::dashboard');
$routes->get('admin/hospital-stock/masters', 'Setting\\HospitalStock::masters');
$routes->get('admin/hospital-stock/indents', 'Setting\\HospitalStock::indents');
$routes->get('admin/hospital-stock/purchase', 'Setting\\HospitalStock::purchase');
$routes->get('admin/hospital-stock/reports', 'Setting\\HospitalStock::reports');
$routes->post('admin/hospital-stock/category/save', 'Setting\\HospitalStock::saveCategory');
$routes->post('admin/hospital-stock/category/update', 'Setting\\HospitalStock::updateCategory');
$routes->post('admin/hospital-stock/category/delete', 'Setting\\HospitalStock::deleteCategory');
$routes->post('admin/hospital-stock/item/save', 'Setting\\HospitalStock::saveItem');
$routes->post('admin/hospital-stock/item/update', 'Setting\\HospitalStock::updateItem');
$routes->post('admin/hospital-stock/item/delete', 'Setting\\HospitalStock::deleteItem');
$routes->post('admin/hospital-stock/supplier/save', 'Setting\\HospitalStock::saveSupplier');
$routes->post('admin/hospital-stock/supplier/update', 'Setting\\HospitalStock::updateSupplier');
$routes->post('admin/hospital-stock/supplier/delete', 'Setting\\HospitalStock::deleteSupplier');
$routes->post('admin/hospital-stock/indent/create', 'Setting\\HospitalStock::createIndent');
$routes->post('admin/hospital-stock/indent/approve', 'Setting\\HospitalStock::approveIndent');
$routes->post('admin/hospital-stock/indent/issue', 'Setting\\HospitalStock::issueIndent');
$routes->post('admin/hospital-stock/po/create', 'Setting\\HospitalStock::createPurchaseOrder');
$routes->post('admin/hospital-stock/po/receive', 'Setting\\HospitalStock::receivePurchaseOrder');
$routes->get('admin/hospital-stock/report/department-consumption', 'Setting\\HospitalStock::reportDepartmentConsumption');
$routes->get('admin/hospital-stock/report/monthly-issue', 'Setting\\HospitalStock::reportMonthlyIssue');
$routes->get('admin/hospital-stock/report/near-expiry', 'Setting\\HospitalStock::reportNearExpiry');
$stockPermFilter = 'permission:hospital_stock.access,hospital_stock.master.manage,hospital_stock.indent.create,hospital_stock.indent.approve,hospital_stock.issue,hospital_stock.purchase.manage,hospital_stock.report.view';
$routes->get('admin/hospital-stock', 'Setting\\HospitalStock::index', ['filter' => $stockPermFilter]);
$routes->get('admin/hospital-stock/dashboard', 'Setting\\HospitalStock::dashboard', ['filter' => $stockPermFilter]);
$routes->get('admin/hospital-stock/masters', 'Setting\\HospitalStock::masters', ['filter' => $stockPermFilter]);
$routes->get('admin/hospital-stock/indents', 'Setting\\HospitalStock::indents', ['filter' => $stockPermFilter]);
$routes->get('admin/hospital-stock/purchase', 'Setting\\HospitalStock::purchase', ['filter' => $stockPermFilter]);
$routes->get('admin/hospital-stock/reports', 'Setting\\HospitalStock::reports', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/category/save', 'Setting\\HospitalStock::saveCategory', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/category/update', 'Setting\\HospitalStock::updateCategory', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/category/delete', 'Setting\\HospitalStock::deleteCategory', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/item/save', 'Setting\\HospitalStock::saveItem', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/item/update', 'Setting\\HospitalStock::updateItem', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/item/delete', 'Setting\\HospitalStock::deleteItem', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/supplier/save', 'Setting\\HospitalStock::saveSupplier', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/supplier/update', 'Setting\\HospitalStock::updateSupplier', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/supplier/delete', 'Setting\\HospitalStock::deleteSupplier', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/indent/create', 'Setting\\HospitalStock::createIndent', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/indent/approve', 'Setting\\HospitalStock::approveIndent', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/indent/issue', 'Setting\\HospitalStock::issueIndent', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/po/create', 'Setting\\HospitalStock::createPurchaseOrder', ['filter' => $stockPermFilter]);
$routes->post('admin/hospital-stock/po/receive', 'Setting\\HospitalStock::receivePurchaseOrder', ['filter' => $stockPermFilter]);
$routes->get('admin/hospital-stock/report/department-consumption', 'Setting\\HospitalStock::reportDepartmentConsumption', ['filter' => $stockPermFilter]);
$routes->get('admin/hospital-stock/report/monthly-issue', 'Setting\\HospitalStock::reportMonthlyIssue', ['filter' => $stockPermFilter]);
$routes->get('admin/hospital-stock/report/near-expiry', 'Setting\\HospitalStock::reportNearExpiry', ['filter' => $stockPermFilter]);
$routes->get('template', 'Setting\\Template::index');
$routes->get('charges', 'Setting\\Charges::index');
});

View File

@ -56,6 +56,22 @@ if (! $canPharmacy && $user && method_exists($user, 'inGroup')) {
$canPharmacy = $user->inGroup('superadmin', 'admin', 'developer');
}
$canHospitalStock = false;
if ($user && method_exists($user, 'can')) {
$canHospitalStock = $user->can('hospital_stock.access')
|| $user->can('hospital_stock.master.manage')
|| $user->can('hospital_stock.indent.create')
|| $user->can('hospital_stock.indent.approve')
|| $user->can('hospital_stock.issue')
|| $user->can('hospital_stock.purchase.manage')
|| $user->can('hospital_stock.report.view')
|| $user->can('hospital_stock.*');
}
if (! $canHospitalStock && $user && method_exists($user, 'inGroup')) {
$canHospitalStock = $user->inGroup('superadmin', 'admin', 'developer', 'stock_manager', 'stock_requester', 'stock_issuer');
}
$canFinance = false;
if ($user && method_exists($user, 'can')) {
$canFinance = $user->can('finance.access')
@ -113,12 +129,6 @@ if (! $canDiagnosis && $user && method_exists($user, 'inGroup')) {
<span>Bed Status</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('setting/admin/hospital-stock') ?>','Hospital Stock Management');">
<i class="bi bi-box-seam"></i>
<span>Hospital Stock</span>
</a>
</li>
<?php if ($canBilling) { ?>
<li class="nav-heading">Billing</li>
@ -193,7 +203,7 @@ if (! $canDiagnosis && $user && method_exists($user, 'inGroup')) {
</li>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('Finance/cashbook') ?>','Cash Collection & Disbursement SOP')">
<i class="bi bi-cash-stack"></i>
<i class="bi bi-cash-coin"></i>
<span>Cash & Disbursement SOP</span>
</a>
</li>
@ -285,6 +295,15 @@ if (! $canDiagnosis && $user && method_exists($user, 'inGroup')) {
</a>
</li>
<?php } ?>
<?php if ($canHospitalStock) { ?>
<li class="nav-heading">Hospital Stock</li>
<li class="nav-item">
<a class="nav-link collapsed" href="javascript:load_form('<?= base_url('setting/admin/hospital-stock') ?>','Hospital Stock Management');">
<i class="bi bi-box-seam"></i>
<span>Hospital Stock</span>
</a>
</li>
<?php } ?>
<li class="nav-heading">ABDM</li>
<li class="nav-item">