{{-- A. STATS GRID --}}
Total Bookings

{{ number_format($stats['total']) }}

{{-- UPDATED: Shows Real Revenue (Paid - Refunded) --}}
Net Revenue

₹{{ number_format($stats['revenue']) }}

{{-- NEW: REFUND STATS --}}
Refunded

₹{{ number_format($stats['refunded'] ?? 0) }}

Fully Paid

{{ number_format($stats['paid']) }}

{{-- B. FILTERS (Unchanged) --}}
-
{{-- C. TABLE --}}
@forelse ($bookings as $booking) @empty @endforelse
Reference Student Item Details Amount Paid Status Action
{{ $booking->booking_code }}
{{ $booking->booking_date->format('d M, Y') }}
{{ substr($booking->student->name ?? 'U', 0, 1) }}
{{ $booking->student->name ?? 'Unknown' }} {{ $booking->student->phone ?? '-' }}
@if ($booking->course)
{{ $booking->course->name }}
{{ $booking->courseBatch->batch_code ?? 'Manual' }}
@else
{{ $booking->package->package_name ?? 'N/A' }}
Package Bundle
@endif
₹{{ number_format($booking->total_amount) }}
{{-- NEW: Refund Indicator --}} @if ($booking->refunded_amount > 0)
Ref: -₹{{ number_format($booking->refunded_amount) }}
@endif
₹{{ number_format($booking->paid_amount) }}
@if ($booking->due_amount > 0 && $booking->status !== 'cancelled')
Due: ₹{{ number_format($booking->due_amount) }}
@endif
@php $statusClass = match ($booking->payment_status) { 'paid' => 'status-paid', 'partial', 'pending' => 'status-pending', default => 'status-partial', }; @endphp {{-- NEW: Lifecycle Status Overrides Payment Status --}} @if ($booking->status === 'cancelled') CANCELLED @elseif($booking->status === 'on_hold') ON HOLD @else {{ ucfirst($booking->payment_status) }} @endif
No Records Found

Try adjusting your search or filters.

{{ $bookings->links() }}
{{-- D. DETAIL MODAL --}}