Commit 59719212 authored by Mahmoud Aglan's avatar Mahmoud Aglan

Add retroactive enrollment wizard for backdating participant registrations

New wizard at /receptionist/retroactive-enrollment lets staff enroll
participants who started in previous months. Flow: select participant →
choose program → set actual start date → mark each month as unpaid or
paid-outside-system → optionally pay all outstanding now. Creates
individual invoices per month with proper metadata. Supports admin price
override for the total. Accessible from receptionist dashboard with
enrollments.create permission.
Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
parent c15edf88
This diff is collapsed.
......@@ -126,6 +126,18 @@ class="group flex flex-col items-center gap-2.5 bg-white rounded-xl shadow-sm bo
</a>
@endcan
@can('enrollments.create')
<a href="{{ route('receptionist.retroactive-enrollment') }}" wire:navigate
class="group flex flex-col items-center gap-2.5 bg-white rounded-xl shadow-sm border border-gray-200 p-4 sm:p-5 hover:shadow-md hover:border-purple-300 active:scale-[0.97] transition-all">
<div class="w-12 h-12 rounded-xl bg-purple-100 flex items-center justify-center group-hover:bg-purple-200 transition-colors shrink-0">
<svg class="w-6 h-6 text-purple-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/>
</svg>
</div>
<span class="text-xs sm:text-sm font-semibold text-gray-700 text-center leading-tight">{{ __('تسجيل لاعب سابق') }}</span>
</a>
@endcan
@can('pos.sell')
<a href="{{ route('pos.terminal') }}" wire:navigate
class="group flex flex-col items-center gap-2.5 bg-white rounded-xl shadow-sm border border-gray-200 p-4 sm:p-5 hover:shadow-md hover:border-rose-300 active:scale-[0.97] transition-all">
......
......@@ -524,6 +524,8 @@
->middleware('permission:enrollments.create');
Route::get('/receptionist/collect-payment', CollectPaymentWizard::class)->name('receptionist.collect-payment')
->middleware('permission:invoices.create');
Route::get('/receptionist/retroactive-enrollment', \App\Livewire\Receptionist\RetroactiveEnrollmentWizard::class)->name('receptionist.retroactive-enrollment')
->middleware('permission:enrollments.create');
// Financial — Payment Plans
Route::get('/payment-plans/create', \App\Livewire\Financial\PaymentPlanCreate::class)->name('payment-plans.create')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment