group(function () { // Warehouses Route::get('warehouses', [WarehouseController::class, 'index'])->name('warehouses.index'); Route::get('warehouses/create', [WarehouseController::class, 'create'])->name('warehouses.create'); Route::post('warehouses', [WarehouseController::class, 'store'])->name('warehouses.store'); Route::get('warehouses/stock-summary', [WarehouseController::class, 'stockSummary'])->name('warehouses.stock-summary'); Route::get('warehouses/{warehouse}/edit', [WarehouseController::class, 'edit'])->name('warehouses.edit'); Route::get('warehouses/{warehouse}', [WarehouseController::class, 'show'])->name('warehouses.show'); Route::put('warehouses/{warehouse}', [WarehouseController::class, 'update'])->name('warehouses.update'); // Material Requisitions Route::get('requisitions', [MaterialRequisitionController::class, 'index'])->name('requisitions.index'); Route::get('requisitions/create', [MaterialRequisitionController::class, 'create'])->name('requisitions.create'); Route::post('requisitions', [MaterialRequisitionController::class, 'store'])->name('requisitions.store'); Route::get('requisitions/{requisition}/edit', [MaterialRequisitionController::class, 'edit'])->name('requisitions.edit'); Route::put('requisitions/{requisition}', [MaterialRequisitionController::class, 'update'])->name('requisitions.update'); Route::get('requisitions/{requisition}', [MaterialRequisitionController::class, 'show'])->name('requisitions.show'); Route::patch('requisitions/{requisition}/submit', [MaterialRequisitionController::class, 'submitForApproval'])->name('requisitions.submit'); Route::get('requisitions/{requisition}/pdf', [MaterialRequisitionController::class, 'downloadPdf'])->name('requisitions.pdf'); // Purchase Orders Route::get('purchase-orders/search', [PurchaseOrderController::class, 'searchApproved'])->name('purchase-orders.search'); Route::get('purchase-orders', [PurchaseOrderController::class, 'index'])->name('purchase-orders.index'); Route::get('purchase-orders/create', [PurchaseOrderController::class, 'create'])->name('purchase-orders.create'); Route::post('purchase-orders', [PurchaseOrderController::class, 'store'])->name('purchase-orders.store'); Route::get('purchase-orders/{purchaseOrder}/edit', [PurchaseOrderController::class, 'edit'])->name('purchase-orders.edit'); Route::put('purchase-orders/{purchaseOrder}', [PurchaseOrderController::class, 'update'])->name('purchase-orders.update'); Route::get('purchase-orders/{purchaseOrder}', [PurchaseOrderController::class, 'show'])->name('purchase-orders.show'); Route::patch('purchase-orders/{purchaseOrder}/submit', [PurchaseOrderController::class, 'submitForApproval'])->name('purchase-orders.submit'); Route::get('purchase-orders/{purchaseOrder}/pdf', [PurchaseOrderController::class, 'downloadPdf'])->name('purchase-orders.pdf'); Route::post('purchase-orders/{purchaseOrder}/pay', [PurchaseOrderController::class, 'markAsPaid'])->name('purchase-orders.pay'); Route::patch('purchase-orders/{purchaseOrder}/deliver', [PurchaseOrderController::class, 'markAsDelivered'])->name('purchase-orders.deliver'); Route::get('purchase-orders/{purchaseOrder}/receipt', [PurchaseOrderController::class, 'downloadReceipt'])->name('purchase-orders.receipt'); // Inventory Dashboard Route::get('inventory', [MaterialController::class, 'inventory'])->name('inventory.index'); // Inventory Operations Route::get('inventory/operations/{type}', [MaterialController::class, 'operations'])->name('inventory.operations'); Route::post('inventory/dispatch', [MaterialController::class, 'dispatchFromWarehouse'])->name('inventory.dispatch'); Route::post('inventory/reserve-for-task', [MaterialController::class, 'reserveForTask'])->name('inventory.reserve'); Route::post('inventory/consume', [MaterialController::class, 'consumeAtTask'])->name('inventory.consume'); Route::post('inventory/return', [MaterialController::class, 'returnToWarehouse'])->name('inventory.return'); Route::post('inventory/adjust', [MaterialController::class, 'adjustStock'])->name('inventory.adjust'); // Inventory Movements Ledger Route::get('inventory/movements', [InventoryMovementController::class, 'index'])->name('inventory.movements'); // Material Transfers Route::get('material-transfers/project-inventory/{projectId}', [MaterialTransferController::class, 'projectInventory'])->name('material-transfers.project-inventory'); Route::get('material-transfers', [MaterialTransferController::class, 'index'])->name('material-transfers.index'); Route::get('material-transfers/create', [MaterialTransferController::class, 'create'])->name('material-transfers.create'); Route::post('material-transfers', [MaterialTransferController::class, 'store'])->name('material-transfers.store'); Route::get('material-transfers/{materialTransfer}/edit', [MaterialTransferController::class, 'edit'])->name('material-transfers.edit'); Route::put('material-transfers/{materialTransfer}', [MaterialTransferController::class, 'update'])->name('material-transfers.update'); Route::get('material-transfers/{materialTransfer}', [MaterialTransferController::class, 'show'])->name('material-transfers.show'); Route::delete('material-transfers/{materialTransfer}', [MaterialTransferController::class, 'destroy'])->name('material-transfers.destroy'); // Material Transfer Actions Route::patch('material-transfers/{materialTransfer}/submit', [MaterialTransferController::class, 'submit'])->name('material-transfers.submit'); Route::patch('material-transfers/{materialTransfer}/dispatch', [MaterialTransferController::class, 'dispatch'])->name('material-transfers.dispatch'); Route::patch('material-transfers/{materialTransfer}/receive', [MaterialTransferController::class, 'receive'])->name('material-transfers.receive'); });