Restaurant{{ restaurantNom }}
Responsable{{ fd.responsable ?? '—' }}
Mise à jour{{ fd.date_maj is defined ? fd.date_maj : '—' }}
{# ── LIVRAISONS ─────────────────────────────────────────────────────── #}
{% if doc.template_type == 'livraisons' %}
| Date | Liaison | Plat |
H. dép. | T° dép. |
H. arr. | T° arr. |
Conformité | Visa | Observations |
{% for entry in (fd.entries ?? []) %}
{% set tDep = entry.temp_depart is not empty ? entry.temp_depart : null %}
{% set tArr = entry.temp_arrivee is not empty ? entry.temp_arrivee : null %}
{% set conforme = null %}
{% if tDep is not null and tArr is not null %}
{% if entry.liaison == 'chaude' %}
{% set conforme = (tDep >= 63 and tArr >= 63) %}
{% elseif entry.liaison == 'froide' %}
{% set conforme = (tDep <= 4 and tArr <= 10) %}
{% endif %}
{% endif %}
| {{ entry.date is not empty ? entry.date|date('d/m/Y') : '—' }} |
{% if entry.liaison == 'chaude' %}CHAUDE
{% elseif entry.liaison == 'froide' %}FROIDE
{% else %}—{% endif %}
|
{{ entry.plat ?? '—' }} |
{{ entry.heure_depart is not empty ? entry.heure_depart : '—' }} |
{{ tDep is not null ? tDep ~ ' °C' : '—' }} |
{{ entry.heure_arrivee is not empty ? entry.heure_arrivee : '—' }} |
{{ tArr is not null ? tArr ~ ' °C' : '—' }} |
{% if conforme is not null %}
{% if conforme %}✔ Conforme
{% else %}✘ Non conf.{% endif %}
{% else %}—{% endif %}
|
{{ entry.visa_livreur ?? '—' }} |
{{ entry.observations ?? '—' }}
|
{% else %}
| Aucune entrée. |
{% endfor %}
{% if fd.observations_generales ?? '' %}
⚠ Observations générales :{{ fd.observations_generales }}
{% endif %}
{# ── DISTRIBUTION ───────────────────────────────────────────────────── #}
{% elseif doc.template_type == 'distribution' %}
Liaison froide
| Date | Repas | T° (°C) | Heure | Conforme | Observation |
{% for entry in (fd.entries_froid ?? []) %}
| {{ entry.date ?? '—' }} | {{ entry.repas ?? '—' }} |
{{ entry.temperature ?? '—' }} |
{{ entry.heure ?? '—' }} |
{% if entry.conforme ?? false %}✔{% else %}✘{% endif %} |
{{ entry.observation ?? '—' }} |
{% else %}| Aucune entrée. |
{% endfor %}
Liaison chaude
| Date | Repas | T° (°C) | Heure | Conforme | Observation |
{% for entry in (fd.entries_chaud ?? []) %}
| {{ entry.date ?? '—' }} | {{ entry.repas ?? '—' }} |
{{ entry.temperature ?? '—' }} |
{{ entry.heure ?? '—' }} |
{% if entry.conforme ?? false %}✔{% else %}✘{% endif %} |
{{ entry.observation ?? '—' }} |
{% else %}| Aucune entrée. |
{% endfor %}
{# ── TRAÇABILITÉ ────────────────────────────────────────────────────── #}
{% elseif doc.template_type == 'tracabilite' %}
| Date repas | Menu servi | Produits | N° lot | Fournisseur | Visa |
{% for entry in (fd.entries ?? []) %}
| {{ entry.date_repas ?? '—' }} | {{ entry.menu_servi ?? '—' }} |
{{ entry.produits ?? '—' }} | {{ entry.numero_lot ?? '—' }} |
{{ entry.fournisseur ?? '—' }} | {{ entry.visa ?? '—' }} |
{% else %}| Aucune entrée. |
{% endfor %}
{# ── RÉCEPTION ──────────────────────────────────────────────────────── #}
{% elseif doc.template_type == 'reception' %}
| Date | Fournisseur | Produit | N° lot | T° (°C) | DLC | Conforme | Observation | Visa |
{% for entry in (fd.entries ?? []) %}
| {{ entry.date ?? '—' }} | {{ entry.fournisseur ?? '—' }} |
{{ entry.produit ?? '—' }} | {{ entry.numero_lot ?? '—' }} |
{{ entry.temperature ?? '—' }} |
{{ entry.dlc ?? '—' }} |
{% if entry.conforme ?? false %}✔{% else %}—{% endif %} |
{{ entry.observation ?? '—' }} |
{{ entry.visa ?? '—' }} |
{% else %}| Aucune entrée. |
{% endfor %}
{# ── REFROIDISSEMENT ────────────────────────────────────────────────── #}
{% elseif doc.template_type == 'refroidissement' %}
Refroidissement rapide (≥63°C → ≤10°C en ≤2h)
| Date | Plat | H. début | T° initiale (°C) | H. fin | T° finale (°C) | Durée (min) | Observation |
{% for entry in (fd.entries ?? []) %}
| {{ entry.date ?? '—' }} |
{{ entry.plat ?? '—' }} |
{{ entry.heure_debut ?? '—' }} |
{{ entry.temp_initiale ?? '—' }} |
{{ entry.heure_fin ?? '—' }} |
{{ entry.temp_finale ?? '—' }} |
{{ entry.duree ?? '—' }} |
{{ entry.observation ?? '—' }} |
{% else %}| Aucune entrée. |
{% endfor %}
{% if fd.remise_entries ?? [] %}
Remise en température (→ ≥63°C en ≤1h)
| Date | Plat | H. début | T° initiale (°C) | H. fin | T° finale (°C) | Durée (min) | Observation |
{% for entry in (fd.remise_entries ?? []) %}
| {{ entry.date ?? '—' }} |
{{ entry.plat ?? '—' }} |
{{ entry.heure_debut ?? '—' }} |
{{ entry.temp_initiale ?? '—' }} |
{{ entry.heure_fin ?? '—' }} |
{{ entry.temp_finale ?? '—' }} |
{{ entry.duree ?? '—' }} |
{{ entry.observation ?? '—' }} |
{% else %}| Aucune entrée. |
{% endfor %}
{% endif %}
{# ── NETTOYAGE ──────────────────────────────────────────────────────── #}
{% elseif doc.template_type == 'nettoyage' %}
{% for catKey, cat in (fd.categories ?? {}) %}
{{ cat.titre ?? catKey }}
| Zone / Équipement | Fréquence | Produit utilisé | Réalisations |
{% for item in (cat.items ?? []) %}
| {{ item.zone ?? '—' }} |
{{ item.frequence ?? '—' }} |
{{ item.produit ?? '—' }} |
{{ (item.realisations ?? [])|length }} réalisation(s)
|
{% for real in (item.realisations ?? []) %}
| └─ {{ real.date ?? '—' }} |
|
|
{{ real.responsable ?? '' }}{% if real.observations ?? '' %} — {{ real.observations }}{% endif %} |
{% endfor %}
{% else %}| Aucun équipement. |
{% endfor %}
{% else %}
Aucune catégorie de nettoyage enregistrée.
{% endfor %}
{# ── TEMPÉRATURES ───────────────────────────────────────────────────── #}
{% elseif doc.template_type == 'temperature' %}
{% for eq in equipements %}
{{ eq.nom }} (seuils : {{ eq.temperature_min }}°C / {{ eq.temperature_max }}°C)
| Mesure | {% for jour in 1..31 %}{{ jour }} | {% endfor %}
| Arrivée |
{% for jour in 1..31 %}
{% set val = fd.equipements[eq.id ~ '_' ~ jour ~ '_arrivee'] ?? '' %}
{% set ok = val != '' and val >= eq.temperature_min and val <= eq.temperature_max %}
{{ val }} |
{% endfor %}
| Départ |
{% for jour in 1..31 %}
{% set val = fd.equipements[eq.id ~ '_' ~ jour ~ '_depart'] ?? '' %}
{% set ok = val != '' and val >= eq.temperature_min and val <= eq.temperature_max %}
{{ val }} |
{% endfor %}
{% endfor %}
{# ── ORIGINE VIANDES ────────────────────────────────────────────────── #}
{% elseif doc.template_type == 'origine_viandes' %}
| Animal / Espèce | Marque / Fournisseur | Pays d'origine | Certification |
{% for key, viande in (fd.viandes ?? {}) %}
| {{ viande.espece ?? key }} |
{{ viande.fournisseur ?? '—' }} |
{{ viande.pays_origine ?? '—' }} |
{{ viande.certification ?? '—' }} |
{% else %}| Aucune donnée. |
{% endfor %}
{# ── AUTRES / FALLBACK ──────────────────────────────────────────────── #}
{% else %}
Aperçu non disponible pour ce type de formulaire.
Utilisez le PDF individuel pour une vue complète.
{% endif %}
{# Signature si présente #}
{% if (fd.signature_nom ?? '') != '' or (fd.signature_date ?? '') != '' %}
Signature
Nom : {{ fd.signature_nom ?? '' }}
Date : {{ fd.signature_date ?? '' }}
{% if fd.signature_certif ?? false %} ✅ Certifié exact{% endif %}
{% endif %}
{% endfor %}