{{-- Récapitulatif d'une déclaration de retenue à la source — miroir de la feuille « Solde de tout compte Propriétaires ». font-family DejaVu Sans : obligatoire pour les accents sous dompdf. Montants à 3 décimales (millimes) ; les totaux viennent de RetenueExportService (somme des lignes, jamais un % du brut). DEUX PORTÉES, UNE SEULE VUE. Sans `$groupes` : UN mois, rendu comme il l'a toujours été (un badge de statut, les lignes, le total). Avec `$groupes` (export d'une PLAGE, RetenueExportService::buildExportDataPeriode()) : une ligne de statut PAR MOIS à la place du badge — janvier peut être déclaré quand mars est en brouillon, un badge unique mentirait sur l'un des deux —, les lignes groupées par mois avec leur sous-total, puis le total général. Chaque mois reste une déclaration distincte chez la DGI. COLONNE « TVA » ET SEUIL — les règles de l'écran (RetenueExportService) : la TVA ne s'imprime que pour un fournisseur (vide pour un propriétaire), et le taux d'un fournisseur sous le seuil, hors du périmètre de TEJ, s'imprime « — » : aucune retenue n'est due, rien n'est déclaré. --}} Retenue à la source — {{ $periodeLibelle }}

Retenue à la source — {{ $periodeLibelle }}

{{ $societe['companyName'] ?? '' }} @if(!empty($societe['matricule'])) — M.F. {{ $societe['matricule'] }} @endif
Édité le {{ now()->format('d/m/Y H:i') }} @isset($groupes) {{-- « déclaration mensuelle », jamais « déclaré » : le mot dirait que le mois est parti à la DGI, ce que seul son statut dit. --}} — {{ count($groupes) }} déclaration{{ count($groupes) > 1 ? 's' : '' }} mensuelle{{ count($groupes) > 1 ? 's' : '' }} @else — {{ $statutLibelle }} @endisset @if(!empty($filters['beneficiaire'])) — Bénéficiaires : {{ $filters['beneficiaire'] === 'proprietaire' ? 'Propriétaires' : 'Fournisseurs' }} @endif @if(!empty($filters['search'])) — Recherche : « {{ $filters['search'] }} » @endif
@isset($groupes)
@forelse($groupes as $groupe) {{ $groupe['libelle'] }} : {{ $groupe['statut_libelle'] }} @empty Aucun mois ouvert sur cette période. @endforelse
@endisset
Total brut
{{ number_format($totaux['brut'], 3, ',', ' ') }} TND
Total retenue
{{ number_format($totaux['retenue'], 3, ',', ' ') }} TND
Total net à payer
{{ number_format($totaux['net'], 3, ',', ' ') }} TND
Lignes
{{ $totaux['count'] }}
{{-- La colonne « Logement » a été retirée : elle prenait 24 % de la largeur pour n'imprimer que « — » ou « Fournisseur ». Aucune des 239 lignes du compte réel ne porte de logement. La largeur revient au bénéficiaire et au type, qui en manquaient. --}} {{-- Un mois = une seule section, sans en-tête ni sous-total : le rendu d'avant la plage, à l'identique. Une plage = une section par mois. Le N° REPART DE 1 À CHAQUE MOIS, comme à l'écran et dans le CSV : c'est le rang de la ligne dans SA déclaration, et il ne dépend donc pas du premier mois de la plage — la ligne n° 1 de mars l'est sur l'export de mars comme sur celui de janvier – mars. --}} @foreach($groupes ?? [['libelle' => null, 'rows' => $rows]] as $section) @php($numero = 0) @if($section['libelle'] !== null) @endif @foreach($section['rows'] as $row) @endforeach @if($section['libelle'] !== null) @endif @endforeach
N° Bénéficiaire Type M/F CIN Montant TVA Taux Retenue Net à payer Paiement
{{ $section['libelle'] }} — {{ $section['statut_libelle'] }}
{{ ++$numero }} {{ $row['beneficiaire'] }} {{ $row['beneficiaire_type'] === 'fournisseur' ? 'Fournisseur' : 'Propriétaire' }} {{ $row['matricule_fiscal'] ?: '' }} {{ $row['cin'] ?: '' }} {{ number_format($row['montant_brut'], 3, ',', ' ') }} {{ $row['beneficiaire_type'] === 'fournisseur' ? number_format($row['montant_tva'], 3, ',', ' ') : '' }} {{ $row['sous_seuil'] ? '—' : number_format($row['taux'], 2, ',', ' ') }} {{ number_format($row['montant_retenue'], 3, ',', ' ') }} {{ number_format($row['montant_net'], 3, ',', ' ') }} {{ $row['paiement'] ?: '' }}
Sous-total {{ $section['libelle'] }} ({{ $section['totaux']['count'] }} ligne{{ $section['totaux']['count'] > 1 ? 's' : '' }}) {{ number_format($section['totaux']['brut'], 3, ',', ' ') }} {{ number_format($section['totaux']['tva'], 3, ',', ' ') }} {{ number_format($section['totaux']['retenue'], 3, ',', ' ') }} {{ number_format($section['totaux']['net'], 3, ',', ' ') }}
{{ isset($groupes) ? 'Total général' : 'Total' }} ({{ $totaux['count'] }} ligne{{ $totaux['count'] > 1 ? 's' : '' }}) {{ number_format($totaux['brut'], 3, ',', ' ') }} {{ number_format($totaux['tva'], 3, ',', ' ') }} {{ number_format($totaux['retenue'], 3, ',', ' ') }} {{ number_format($totaux['net'], 3, ',', ' ') }}