@extends('dashboard.layouts.app') @section('content') @include('components.alert') @php $money = fn ($value) => number_format(round((float) $value, 2), 2); $percent = fn ($value) => number_format((float) $value, 0) . '%'; $studentLabel = fn ($count) => $count === 1 ? 'student' : 'students'; $statCards = [ ['label' => 'Invoice Total', 'value' => $money($totals['contract']), 'icon' => 'ri:money-dollar-circle-line'], ['label' => 'Paid', 'value' => $money($totals['paid']), 'icon' => 'ri:bank-card-line'], ['label' => 'Consumed', 'value' => $money($totals['consumed']), 'icon' => 'ri:check-line'], ['label' => 'Unearned', 'value' => $money($totals['unearned']), 'icon' => 'ri:time-line'], ]; @endphp
Export
Only paid student courses are shown. Consumed value is calculated from the paid amount divided across course sessions, then multiplied by sessions whose scheduled time has already passed.
@foreach ($statCards as $card)
{{ $card['label'] }} {{ $card['value'] }}
@endforeach
Filters
@forelse ($rows as $row) @php $collapseId = 'student-courses-' . md5($row['student_key']); $hasCoursesCollapse = $row['course_count'] > 1; $singleCourse = $row['courses']->first(); $studentInitials = collect(explode(' ', trim($row['student_name']))) ->filter() ->take(2) ->map(fn ($part) => strtoupper(substr($part, 0, 1))) ->implode('') ?: 'S'; @endphp
@if ($hasCoursesCollapse) @endif {{ $studentInitials }} {{ $row['student_name'] }} {{ $row['student_ref'] ?: 'No reference' }} @if ($hasCoursesCollapse) - {{ $row['course_count'] }} courses @endif
@if ($hasCoursesCollapse) Course total @else
{{ $singleCourse['course_name'] }} {{ $singleCourse['invoice_number'] }}
@endif {{ $row['sessions_done'] }}/{{ $row['sessions_total'] }} {{ $money($row['contract']) }} {{ $money($row['paid']) }} {{ $money($row['consumed']) }} {{ $money($row['unearned']) }}
{{ $percent($row['progress']) }}
@if ($hasCoursesCollapse) @foreach ($row['courses'] as $course)
{{ $course['course_name'] }} {{ $course['invoice_number'] }}
{{ $course['sessions_done'] }}/{{ $course['sessions_total'] }} {{ $money($course['contract']) }} {{ $money($course['paid']) }} {{ $money($course['consumed']) }} {{ $money($course['unearned']) }}
{{ $percent($course['progress']) }}
@endforeach @endif @empty
No matching student balances found.

Try changing the search keyword or clearing filters.

@endforelse Total {{ $totals['sessions_done'] }}/{{ $totals['sessions_total'] }} {{ $money($totals['contract']) }} {{ $money($totals['paid']) }} {{ $money($totals['consumed']) }} {{ $money($totals['unearned']) }} {{ $percent($totals['progress']) }}
@endsection @push('styles') @endpush