@extends('layouts.app') @section('title', 'Renewal Documents') @section('content')
@include('tenant.partials.typist-page-nav')

Document lifecycle control

Renewal Documents & Reminders

Track expiring passports, visas, Emirates IDs, permits and company documents. Update document status, assign owners and schedule customer reminders with a complete audit trail.

@canModule('renewals.manage')
@csrf
@endcanModuleTypist Command Center
@foreach([ ['Expired', $metrics['expired'], 'text-rose-600', ['window' => 'expired']], ['Expiring today', $metrics['today'], 'text-orange-600', []], ['Next 7 days', $metrics['seven_days'], 'text-amber-600', ['window' => 7]], ['Next 30 days', $metrics['thirty_days'], 'text-sky-600', ['window' => 30]], ['In progress', $metrics['in_progress'], 'text-emerald-600', ['status' => 'contacted']], ['Scheduled reminders', $metrics['scheduled_reminders'], 'text-violet-600', ['reminder_due' => 1]], ] as [$label, $count, $color, $query])

{{ $label }}

{{ number_format($count) }}

@endforeach

Renewal Control Queue

Open a record to edit its document status, pipeline stage and reminder schedule.

{{ number_format($opportunities->total()) }} records
@if(request('reminder_due'))@endif
Reset
@forelse($opportunities as $opportunity) @php($days = (int) now()->startOfDay()->diffInDays($opportunity->expiry_date->copy()->startOfDay(), false)) @empty @endforelse
Renewal / EntityDocumentExpiryDocument StatusNext ReminderPipelineOwnerAction
{{ $opportunity->renewal_number }}{{ $opportunity->customer?->full_name_en ?? $opportunity->corporateEmployee?->full_name ?? $opportunity->company?->name_en ?? $opportunity->employee?->full_name ?? auth()->user()->tenant->company_name }} {{ str($opportunity->document_type)->replace('_',' ')->title() }}{{ $opportunity->document_number ?: 'No document number' }} {{ $opportunity->expiry_date->format('d M Y') }}{{ $days < 0 ? abs($days).' days overdue' : $days.' days remaining' }} {{ str($opportunity->document_status)->replace('_',' ')->title() }}{{ $opportunity->reminder_enabled ? 'Reminder enabled' : 'Reminder disabled' }} {{ $opportunity->next_reminder_at?->format('d M, h:i A') ?? 'Not scheduled' }}{{ $opportunity->reminder_channel ? str($opportunity->reminder_channel)->replace('_',' ')->title() : 'Automatic rules active' }} {{ str($opportunity->status)->replace('_',' ')->title() }} {{ $opportunity->assignedUser?->name ?? 'Unassigned' }}{{ str($opportunity->entity_type)->replace('_',' ')->title() }} Manage Renewal
RNNo renewal opportunities yet

Run the expiry scan after adding documents with expiry dates.

{{ number_format($reminderCount) }} total reminder log entries

{{ $opportunities->links() }}
@endsection