diff --git a/app/Config/AuthGroups.php b/app/Config/AuthGroups.php index 0022c97..a71d074 100644 --- a/app/Config/AuthGroups.php +++ b/app/Config/AuthGroups.php @@ -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', diff --git a/app/Config/Routes.php b/app/Config/Routes.php index ec65cf0..f225792 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -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'); }); diff --git a/app/Views/partials/sidebar.php b/app/Views/partials/sidebar.php index 2acbb4c..0641a30 100644 --- a/app/Views/partials/sidebar.php +++ b/app/Views/partials/sidebar.php @@ -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')) { Bed Status -