{% extends 'pdf/_base.html.twig' %} {% import 'pdf/_macros.html.twig' as pdf %} {% block extra_styles %} .title h1 { letter-spacing: 2px; } .meta { margin: 10px 0 18px; font-size: 11px; color: #444; } .meta span { display: inline-block; margin-right: 18px; } table.z { width: 70%; border-collapse: collapse; } table.z td { padding: 7px 8px; border-bottom: 1px solid #e5e5e5; } table.z td.num { text-align: right; font-weight: bold; } table.z tr.section td { background: #f0fdfa; color: #0f766e; font-weight: bold; border-bottom: 1px solid #99f6e4; } table.z tr.grand td { border-top: 2px solid #0d9488; font-size: 14px; } {% endblock %} {% block body %} {{ pdf.docHeader(company, 'RAPPORT Z', ['Session ' ~ shortRef ~ ' — ' ~ statusLabel], []) }}
Caissier : {{ cashier }} Ouverture : {{ openedAt }} Clôture : {{ closedAt }}
{% set diffColor = diffCents is null ? '#555' : (diffCents < 0 ? '#dc2626' : (diffCents > 0 ? '#16a34a' : '#555')) %}
CaisseMontant
Fond d'ouverture{{ pdf.money(floatCents) }}
Ventes ({{ salesCount }})
Chiffre d'affaires TTC{{ pdf.money(revenueCents) }}
Encaissé en espèces{{ pdf.money(cashCents) }}
Autres encaissements (mobile / carte){{ pdf.money(otherCents) }}
Mouvements espèces (hors ventes)
Recouvrements clients (entrées)+{{ pdf.money(recoveriesCents) }}
Règlements fournisseurs (sorties)-{{ pdf.money(supplierPaymentsCents) }}
Dépenses (sorties)-{{ pdf.money(expensesCents) }}
Contrôle caisse
Attendu en espèces (fond + espèces ± mouvements){{ pdf.money(expectedCents) }}
Compté{{ countedCents is null ? '—' : pdf.money(countedCents) }}
Écart {{ diffCents is null ? '—' : (diffCents > 0 ? '+' : '') ~ pdf.money(diffCents) }}
Rapport Z généré le {{ generatedAt|date('d/m/Y H:i') }} — {{ company.name }}.
{% endblock %}