{% extends 'school/base.html.twig' %}

{% block title %}Finance - {{ etudiant.nomComplet }} | SALSABIL Madrassas{% endblock %}

{% block content %}
    <style>
        .finance-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}
        .finance-table{width:100%;border-collapse:separate;border-spacing:0 .55rem}
        .finance-table th{font-size:.72rem;text-transform:uppercase;color:#64748b;text-align:left;padding:.35rem .75rem}
        .finance-table td{background:#fff;padding:.8rem .75rem;border-top:1px solid rgba(15,92,69,.1);border-bottom:1px solid rgba(15,92,69,.1);vertical-align:middle}
        .finance-table td:first-child{border-left:1px solid rgba(15,92,69,.1);border-radius:12px 0 0 12px}
        .finance-table td:last-child{border-right:1px solid rgba(15,92,69,.1);border-radius:0 12px 12px 0}
        .finance-actions{display:flex;gap:.75rem;flex-wrap:wrap}
        .finance-amount{font-weight:800;color:#102033;white-space:nowrap}
    </style>
    <div class="admin-page-stack">
        <section class="admin-page-header">
            <div>
                <p class="admin-eyebrow">{{ etudiant.matricule ?: 'ÉTUDIANT' }}</p>
                <h1 class="admin-page-title">Fiche financière</h1>
                <p>{{ etudiant.nomComplet }} · {{ etudiant.anneeScolaire ? etudiant.anneeScolaire.libelle : 'Année non liée' }}</p>
            </div>
            <div class="finance-actions">
                <a class="admin-btn admin-btn-light" href="{{ path('school_etudiant_show', {id: etudiant.id}) }}">Retour étudiant</a>
                <a class="admin-btn admin-btn-primary" href="{{ path('school_etudiant_paiement_new', {id: etudiant.id}) }}">Enregistrer un paiement</a>
                <form method="post" action="{{ path('school_etudiant_finance_generate', {id: etudiant.id}) }}">
                    <input type="hidden" name="_token" value="{{ csrf_token('generate_echeances_' ~ etudiant.id) }}">
                    <button class="admin-btn admin-btn-light" type="submit">Générer les échéances</button>
                </form>
            </div>
        </section>

        <section class="finance-grid">
            {% include 'components/admin/stat_card.html.twig' with {icon: 'request_quote', label: 'Total dû', value: summary.totalDu|number_format(0, ',', ' ') ~ ' FCFA', trend: 'Échéances actives', meta: '', accent: 'gold'} only %}
            {% include 'components/admin/stat_card.html.twig' with {icon: 'payments', label: 'Total payé', value: summary.totalPaye|number_format(0, ',', ' ') ~ ' FCFA', trend: 'Paiements validés', meta: '', accent: 'emerald'} only %}
            {% include 'components/admin/stat_card.html.twig' with {icon: 'account_balance_wallet', label: 'Reste', value: summary.reste|number_format(0, ',', ' ') ~ ' FCFA', trend: 'À recouvrer', meta: '', accent: 'info'} only %}
            {% include 'components/admin/stat_card.html.twig' with {icon: 'verified', label: 'Statut', value: summary.statut|replace({'_':' '}), trend: 'Situation globale', meta: '', accent: summary.statut == 'EN_RETARD' ? 'gold' : 'emerald'} only %}
        </section>

        <section class="admin-card">
            <div class="admin-card-head"><div><h2>Parcours concernés</h2><p>Les échéances sont générées à partir des parcours actifs.</p></div></div>
            <div class="admin-mini-list">
                {% for parcours in etudiant.parcours %}
                    <div class="admin-mini-item">
                        <div><strong>{{ parcours.classe ? parcours.classe.nom : (parcours.section ? parcours.section.nom : 'Parcours') }}</strong><small>{{ parcours.anneeScolaire ? parcours.anneeScolaire.libelle : '-' }}{% if parcours.langue %} · {{ parcours.langue }}{% endif %}</small></div>
                        {% include 'components/admin/status_badge.html.twig' with {label: parcours.actif ? 'Actif' : 'Inactif', tone: parcours.actif ? 'success' : 'neutral'} only %}
                    </div>
                {% else %}
                    <div class="admin-empty-state">Aucun parcours multi-classe n’est lié à cet étudiant.</div>
                {% endfor %}
            </div>
        </section>

        <section class="admin-card">
            <div class="admin-card-head"><div><h2>Échéances</h2><p>Détail du dû, du payé et du reste.</p></div></div>
            <table class="finance-table">
                <thead><tr><th>Frais</th><th>Parcours</th><th>Période</th><th>Échéance</th><th>Net</th><th>Payé</th><th>Reste</th><th>Statut</th></tr></thead>
                <tbody>
                {% for echeance in summary.echeances %}
                    {% set reste = max(0, echeance.montantNet - echeance.montantPaye) %}
                    <tr>
                        <td><strong>{{ echeance.typeFrais ? echeance.typeFrais.libelle : echeance.libelle }}</strong></td>
                        <td>{{ echeance.parcoursEtudiant and echeance.parcoursEtudiant.classe ? echeance.parcoursEtudiant.classe.nom : '-' }}</td>
                        <td>{{ echeance.periode ?: '-' }}</td>
                        <td>{{ echeance.dateEcheance ? echeance.dateEcheance|date('d/m/Y') : '-' }}</td>
                        <td>{{ echeance.montantNet|number_format(0, ',', ' ') }} FCFA</td>
                        <td>{{ echeance.montantPaye|number_format(0, ',', ' ') }} FCFA</td>
                        <td>{{ reste|number_format(0, ',', ' ') }} FCFA</td>
                        <td>{% include 'components/admin/status_badge.html.twig' with {label: echeance.statut|replace({'_':' '}), tone: echeance.statut == 'PAYE' ? 'success' : (echeance.statut == 'EN_RETARD' ? 'danger' : (echeance.statut == 'PARTIEL' ? 'warning' : 'info'))} only %}</td>
                    </tr>
                {% else %}
                    <tr><td colspan="8">Aucune échéance générée pour cet étudiant.</td></tr>
                {% endfor %}
                </tbody>
            </table>
        </section>

        <section class="admin-card">
            <div class="admin-card-head"><div><h2>Paiements enregistrés</h2><p>Historique des encaissements liés à cet étudiant.</p></div></div>
            <table class="finance-table">
                <thead><tr><th>Reçu</th><th>Date</th><th>Année</th><th>Montant</th><th>Mode</th><th>Statut</th><th></th></tr></thead>
                <tbody>
                {% for paiement in paiements %}
                    <tr>
                        <td><strong>{{ paiement.numeroRecu }}</strong></td>
                        <td>{{ paiement.datePaiement ? paiement.datePaiement|date('d/m/Y') : '-' }}</td>
                        <td>{{ paiement.anneeScolaire ? paiement.anneeScolaire.libelle : '-' }}</td>
                        <td class="finance-amount">{{ paiement.montantTotal|number_format(0, ',', ' ') }} FCFA</td>
                        <td>{{ paiement.modePaiement ? paiement.modePaiement|replace({'_':' '}) : '-' }}</td>
                        <td>{% include 'components/admin/status_badge.html.twig' with {label: paiement.statut == 'VALIDE' ? 'Validé' : 'Annulé', tone: paiement.statut == 'VALIDE' ? 'success' : 'danger'} only %}</td>
                        <td><a class="admin-text-link" href="{{ path('school_paiement_show', {id: paiement.id}) }}">Voir</a></td>
                    </tr>
                {% else %}
                    <tr><td colspan="7">Aucun paiement enregistré pour cet étudiant.</td></tr>
                {% endfor %}
                </tbody>
            </table>
        </section>
    </div>
{% endblock %}
