Files
GSB-Construction/Modules/MaterialLogistics/routes/web.php

76 lines
6.4 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use Modules\MaterialLogistics\Http\Controllers\MaterialController;
use Modules\MaterialLogistics\Http\Controllers\MaterialRequisitionController;
use Modules\MaterialLogistics\Http\Controllers\PurchaseOrderController;
use Modules\MaterialLogistics\Http\Controllers\WarehouseController;
use Modules\MaterialLogistics\Http\Controllers\InventoryMovementController;
use Modules\MaterialLogistics\Http\Controllers\MaterialTransferController;
Route::middleware(['web', 'auth', 'permission:inventory.access'])->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');
});