{{-- Une ligne par bénéficiaire : acquis, versé, solde dû — et le bouton qui verse. L'enveloppe est à l'extérieur de toute condition : un composant Livewire doit avoir une racine unique, quoi qu'il ait à dire. Une vue qui ne produit rien lève « missing root tag » et laisse un cadre blanc à l'écran. --}} @php $totalAcquis = collect($soldes)->sum('acquis'); $totalVerse = collect($soldes)->sum('verse'); $totalSolde = collect($soldes)->sum('solde'); @endphp
{{-- (1) Le solde de chacun --}} @if (empty($soldes))

Aucune prime n'a encore été saisie. Une prime se décide au moment d'encaisser : le montant et le bénéficiaire se saisissent dans la fenêtre d'encaissement, et s'ajoutent après coup depuis l'échéancier.

@else
@foreach ($soldes as $ligne) @endforeach
Bénéficiaire Cabinet Primes Acquis Versé Solde dû
{{ $ligne['nom'] }} @unless ($ligne['user']) — sans compte @endunless {{ $ligne['cabinet'] ?? '—' }} {{ $ligne['nombre'] }} {{ dh($ligne['acquis']) }} {{ dh($ligne['verse']) }} {{ dh($ligne['solde']) }} @if ($ligne['solde'] > 0) {{ ($this->verserAction)(['user_id' => $ligne['user_id'], 'beneficiaire_nom' => $ligne['beneficiaire_nom'], 'apporteur_id' => $ligne['apporteur_id'], 'nom' => $ligne['nom']]) }} @endif
Total {{ dh($totalAcquis) }} {{ dh($totalVerse) }} {{ dh($totalSolde) }}

Une prime acquise n'est pas une prime versée : elle constate une dette envers le bénéficiaire. Le versement écrit une seule opération de trésorerie et ramène le solde à zéro — ou au reliquat, s'il est partiel.

@endif
{{-- (2) Ce que le journal porte --}} @if ($journal['lignes']->isNotEmpty())
@foreach ($journal['lignes'] as $ligne) {{-- Le libellé de l'écriture : c'est lui qui dit de quel versement il s'agit, quand le tiers ne porte qu'un prénom. --}} @endforeach
Date Tiers Libellé Rattachée Montant
{{ $ligne->date?->format('d/m/Y') }} {{ $ligne->tier_label ?: '—' }} {{ \Illuminate\Support\Str::limit($ligne->note ?: '—', 48) }} {{ $ligne->rattachee ? 'Oui' : '— pas encore —' }} {{ dh($ligne->amount_ttc) }}
@if ($journal['non_rattache'] > 0)

{{ dh($journal['non_rattache']) }} sont déjà sortis du journal sans être rattachés à des primes. Le jour où vous régularisez ces versements, choisissez « Rattacher une opération déjà au journal » plutôt que d'en créer une : l'argent est sorti une fois, et il ne doit pas sortir deux.

@endif
@endif {{-- (3) Les encaissements sans prime : une invitation, pas un reproche --}} @if ($sansPrime->isNotEmpty())

Ces encaissements — échéances payées, mais aussi factures sans échéance (nées d'un devis, factures libres) — sont passés sans qu'aucune prime ne soit attribuée. Ce n'est pas un défaut — beaucoup d'encaissements n'en portent pas. Si l'un d'eux revient à quelqu'un, « Ajouter une prime » s'ouvre depuis l'échéancier, la facture ou le journal.

@foreach ($sansPrime as $ligne) @if ($ligne instanceof \App\Models\DomiciliationInstallment) @else @endif @endforeach
Client Encaissement Date Montant
{{ $ligne->client?->raison_sociale ?? '—' }} Échéance n° {{ $ligne->numero }} {{ $ligne->date_echeance?->format('d/m/Y') ?? '—' }} {{ dh($ligne->montant_ht) }} HT
{{ $ligne->client?->raison_sociale ?? '—' }} Encaissement sans échéance{{ $ligne->reference ? ' — '.$ligne->reference : '' }} {{ $ligne->date_paiement?->format('d/m/Y') ?? '—' }} {{ dh($ligne->montant) }} TTC
@endif