@extends('layouts.app') @section('title', 'Grille tarifaire') @section('heading', 'Grille tarifaire') @section('subheading', $year ? "Année {$year->name}" : '') @section('content')
Paramètres @if ($year)
@endif
@if (! $year)
Aucune année scolaire. Créez-en une avant de fixer des tarifs.
@else {{-- Cas réel : l'école inscrit en septembre et fixe ses tarifs ensuite. Ces élèves n'ont aucun échéancier tant qu'on ne le génère pas. --}} @if ($missingFees > 0)
{{ $missingFees }} élève(s) sans aucun frais. Ils ont été inscrits avant que les tarifs ne soient fixés : aucun échéancier, aucun solde, invisibles du recouvrement.
@csrf
@endif
{{-- ------------------------------------------------ Tarifs --}}
@if ($levels->isEmpty())
Aucune classe ouverte cette année : il n'y a pas de niveau à tarifer.
@else {{-- POST + @method('PUT') : un formulaire HTML ne connaît que GET et POST, `method="PUT"` retomberait silencieusement sur GET et perdrait toute la grille. --}}
@csrf @method('PUT')
Montants par niveau
@foreach ($levels as $level) @endforeach @foreach ($feeTypes as $type) {{-- Attributs plutôt que lecture du texte de la cellule : le total se casserait au premier changement de libellé. --}} ! $type->is_active]) data-recurrent="{{ $type->isRecurring() ? '1' : '0' }}" data-obligatoire="{{ $type->is_mandatory ? '1' : '0' }}"> @foreach (array_merge(['*'], $levels->map(fn ($l) => $l->value)->all()) as $key) @php $structure = $structures->get("{$type->id}|{$key}"); @endphp @endforeach @endforeach @foreach ($levels as $level) {{-- Chaque niveau voit les échéances de SA section : 10 mensualités ici, 3 versements là. --}} @endforeach
Type de frais Tous niveaux
par défaut
{{ $level->shortLabel() }}
{{ $type->name }} @unless ($type->is_active) Inactif @endunless
{{ $type->isRecurring() ? 'Réparti sur les échéances' : 'Une seule fois' }} @unless ($type->is_mandatory) · facultatif @endunless
Coût annuel facturé
frais obligatoires seulement
— —
Modifier un tarif n'affecte pas les élèves déjà inscrits : leurs frais sont figés au moment de l'inscription, et des paiements y sont peut-être déjà imputés. Les nouveaux tarifs s'appliquent aux inscriptions suivantes.
@endif
{{-- ------------------------------------------- Types de frais --}}
{{ $feeTypes->count() }} type(s) de frais
@foreach ($feeTypes as $type) ! $type->is_active])> @endforeach
Nom Code Récurrence Obligatoire
{{ $type->name }} @unless ($type->is_active) Inactif @endunless {{ $type->code }} {{ match ($type->recurrence) { 'once' => 'Une seule fois', 'monthly' => 'Par échéance', 'termly' => 'Par trimestre', 'yearly' => 'Annuel', default => $type->recurrence, } }} @if ($type->is_mandatory) @else Facultatif @endif
@csrf
Nouveau type
@csrf @include('settings.fees.type-form', ['type' => null])
{{-- ----------------------------------------------- Échéancier --}}
{{-- Groupées par section : c'est la méthode de paiement de chaque section qu'on lit ici — 10 mensualités au fondamental, 3 versements au secondaire. Les échéances communes s'appliquent à tout le monde. --}} @php $groups = $installments->groupBy(fn ($i) => $i->section?->value ?? '*'); $order = array_merge(['*'], $sections->map(fn ($s) => $s->value)->all()); @endphp
{{ $installments->count() }} échéance(s) @foreach ($sections as $section) {{ $section->label() }} : {{ ($groups->get('*')?->count() ?? 0) + ($groups->get($section->value)?->count() ?? 0) }}{{ ! $loop->last ? ' ·' : '' }} @endforeach
@foreach ($order as $key) @continue(! $groups->has($key)) @foreach ($groups[$key] as $installment) @endforeach @endforeach @if ($installments->isEmpty()) @endif
N° Libellé Date d'échéance Frais générés
{{ $key === '*' ? 'Toutes sections' : $key }} — {{ $groups[$key]->count() }} échéance(s)
{{ $installment->sequence }}
@csrf @method('PATCH')
{{ $installment->due_date->translatedFormat('j F Y') }} @if ($installment->isOverdue()) échue @endif {{ $installment->studentFees()->count() }}
@csrf @method('DELETE')
Aucune échéance : les frais récurrents ne pourront pas être répartis.
Nouvelle échéance
@csrf
C'est ici que se règle la méthode de paiement : des mensualités pour une section, quelques versements pour l'autre.
{{-- Modales de modification des types --}} @foreach ($feeTypes as $type) @endforeach @endif @endsection