This commit is contained in:
2026-11-02 08:08:05 +02:00
parent 13a6cb9922
commit 504b01b244
246 changed files with 24499 additions and 185 deletions
+18 -2
View File
@@ -12,14 +12,19 @@ use App\Models\SparePart;
use App\Models\StockItem;
use App\Models\TechnicalReview;
use App\Models\Tenant;
use App\Models\User;
use App\Services\ApprovalRouting;
use App\Services\ComparisonPolicy;
use App\Services\ConflictGuard;
use App\Services\EquipmentWorkflow;
use App\Services\OrganizationAccess;
use App\Services\RequisitionCatalogue;
use App\Services\RequisitionWorkflow;
use App\Services\SupplySuggestions;
use App\Services\WorkContext;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Schema;
use Illuminate\Validation\Rule;
use Inertia\Inertia;
use Inertia\Response;
@@ -79,6 +84,9 @@ class RequisitionController extends Controller
return Inertia::render('requisitions/show', [
'requisition' => $requisition,
'approvalRouting' => app(ApprovalRouting::class)->current($requisition, $request->user()),
'canRefreshRouting' => $requisition->status === 'pending' && $request->user()->hasFunctions(['admin', 'procurement']) && ! app(OrganizationAccess::class)->maintenanceOnly($request->user()) && Schema::hasTable('workflow_notices'),
'replenishmentSource' => app(SupplySuggestions::class)->origin($requisition),
'comparisonPolicy' => app(ComparisonPolicy::class)->forRequest($requisition),
'canEdit' => app(OrganizationAccess::class)->canRequest($request->user()) && $requisition->requester_id === $request->user()->id && $requisition->status === 'draft',
'canDecide' => $requisition->canDecide($request->user()),
@@ -140,7 +148,8 @@ class RequisitionController extends Controller
public function submit(Request $request, Requisition $requisition, RequisitionWorkflow $workflow): RedirectResponse
{
$workflow->submit($request->user(), $requisition);
$command = $request->validate(['operation_key' => 'nullable|uuid', 'process_version' => 'nullable|integer|min:1']);
$workflow->submit($request->user(), $requisition, $command['operation_key'] ?? null, $command['process_version'] ?? null);
return back();
}
@@ -150,14 +159,21 @@ class RequisitionController extends Controller
$data = $request->validate([
'decision' => ['required', Rule::in(['approved', 'rejected'])],
'comment' => ['nullable', 'required_if:decision,rejected', 'string', 'max:2000'],
'operation_key' => 'nullable|uuid', 'process_version' => 'nullable|integer|min:1',
]);
$workflow->decide($request->user(), $requisition, $data['decision'], $data['comment'] ?? null);
$workflow->decide($request->user(), $requisition, $data['decision'], $data['comment'] ?? null, $data['operation_key'] ?? null, $data['process_version'] ?? null);
return back();
}
public function dashboard(Request $request): Response
{
$actor = $request->user('web');
abort_unless($actor instanceof User, 403);
$contexts = app(WorkContext::class);
if ($contexts->enforced($actor)) {
return Inertia::render('work-context', ['context' => $contexts->shared($request)]);
}
$visible = Requisition::query()->visibleTo($request->user());
$pending = (clone $visible)->where('status', 'pending')->with('steps')->get();