{
    "uuid": "00ecd25f95d2f0358b97b6acbe5c5f88",
    "schema_kind": "intervention",
    "lang": "fr",
    "title": "Fiche d'intervention - Contrôle vitrine réfrigérée HACCP",
    "description": "Contrôle HACCP d'une vitrine réfrigérée de commerce (températures, alarmes, traçabilité produits, plan de nettoyage).",
    "export_date": "2026-05-26 10:00:00",
    "dolibarr_version": "18.0.0",
    "extrafields": [
        {
            "name": "vrh_etablissement",
            "label": "Établissement",
            "type": "varchar",
            "size": "200",
            "required": 1,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Nom et adresse du commerce",
            "pos": 100,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "vrh_site",
            "label": "Site / boutique",
            "type": "varchar",
            "size": "150",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Site ou succursale concernée",
            "pos": 110,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "vrh_zone_vente",
            "label": "Zone de vente",
            "type": "varchar",
            "size": "100",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Linéaire, rayon ou allée",
            "pos": 120,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "vrh_identifiant_equipement",
            "label": "Identifiant équipement",
            "type": "varchar",
            "size": "50",
            "required": 1,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Numéro d'inventaire de la vitrine",
            "pos": 130,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "vrh_referent",
            "label": "Référent établissement",
            "type": "varchar",
            "size": "100",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Responsable rayon / magasin",
            "pos": 140,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "vrh_type_vitrine",
            "label": "Type de vitrine",
            "type": "select",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": {
                "options": {
                    "positive": "Positive (0 / +4 °C)",
                    "negative": "Négative (-18 °C)",
                    "mixte": "Mixte",
                    "ambiante": "Ambiante / chauffée"
                }
            },
            "help": "Classe de température",
            "pos": 200,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "positive",
            "alwayseditable": 0
        },
        {
            "name": "vrh_consigne_temperature",
            "label": "Consigne température (°C)",
            "type": "double",
            "size": "5,1",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Température cible affichée",
            "pos": 210,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "vrh_temp_releve_haute",
            "label": "Température relevée haute (°C)",
            "type": "double",
            "size": "5,1",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Sonde haute du meuble",
            "pos": 220,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "vrh_temp_releve_basse",
            "label": "Température relevée basse (°C)",
            "type": "double",
            "size": "5,1",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Sonde basse du meuble",
            "pos": 230,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "vrh_temp_produit",
            "label": "Température produit à coeur (°C)",
            "type": "double",
            "size": "5,1",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Contrôle à coeur sur un produit témoin",
            "pos": 240,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "vrh_sonde_etalonnee",
            "label": "Sonde de contrôle étalonnée",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Certificat d'étalonnage à jour",
            "pos": 250,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "vrh_alarme_haute_temp",
            "label": "Alarme haute température active",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Seuil et report de défaut testés",
            "pos": 300,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "vrh_enregistreur_donnees",
            "label": "Enregistreur de température OK",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Historique disponible sur 12 mois",
            "pos": 310,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "vrh_propre",
            "label": "Vitrine propre",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Pas de souillure ni résidu",
            "pos": 320,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "vrh_plan_nettoyage",
            "label": "Plan de nettoyage affiché",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Plan de nettoyage et désinfection à jour",
            "pos": 330,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "vrh_tracabilite_produits",
            "label": "Traçabilité produits conforme",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "DLC, lots et étiquetage présents",
            "pos": 340,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "vrh_separation_familles",
            "label": "Séparation des familles d'aliments",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Pas de mélange cru / cuit",
            "pos": 350,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "vrh_eclairage_ok",
            "label": "Éclairage en état",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Tubes / LED fonctionnels",
            "pos": 360,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "vrh_joints_portes",
            "label": "Joints de portes / vitrage OK",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Etanchéité, pas de condensation",
            "pos": 370,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "vrh_degivrage_ok",
            "label": "Cycle de dégivrage OK",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Pas de prise en glace de l'évaporateur",
            "pos": 380,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "vrh_anomalies_constatees",
            "label": "Anomalies constatées",
            "type": "text",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 0,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Description des défauts relevés",
            "pos": 500,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "vrh_mesures_correctives",
            "label": "Mesures correctives",
            "type": "text",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 0,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Actions immédiates et différées",
            "pos": 510,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "vrh_conclusion",
            "label": "Conclusion",
            "type": "select",
            "size": "",
            "required": 1,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": {
                "options": {
                    "apte": "APTE - Conforme HACCP",
                    "apte_reserve": "APTE avec réserves",
                    "inapte": "INAPTE - Non conforme"
                }
            },
            "help": "Résultat global du contrôle",
            "pos": 600,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "apte",
            "alwayseditable": 0
        },
        {
            "name": "vrh_date_prochaine_verif",
            "label": "Date prochain contrôle",
            "type": "date",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Périodicité préconisée (mensuelle ou trimestrielle)",
            "pos": 610,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "vrh_technicien_nom",
            "personal_data": 1,
            "label": "Nom du technicien",
            "type": "varchar",
            "size": "100",
            "required": 1,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Intervenant ayant réalisé le contrôle",
            "pos": 700,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "vrh_qualification",
            "label": "Qualification",
            "type": "varchar",
            "size": "100",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Qualification HACCP / froid commercial",
            "pos": 710,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        }
    ],
    "pdf_layout": {
        "version": "1.0",
        "page": {
            "format": "A4",
            "orientation": "portrait",
            "margins": { "top": 20, "right": 15, "bottom": 20, "left": 15 },
            "font_family": "helvetica",
            "font_size": 10
        },
        "header": {
            "title": "Contrôle vitrine réfrigérée HACCP",
            "subtitle": "Commerce de bouche - températures et traçabilité",
            "logo_placeholder": "top-right",
            "show_page_number": true,
            "show_generated_date": true
        },
        "footer": {
            "text": "Document généré via schemas.cap-rel.fr",
            "legal_mentions": "À conserver dans le Plan de Maîtrise Sanitaire (PMS)"
        },
        "sections": [
            {
                "id": "identification",
                "title": "Identification de l'établissement",
                "layout": "two_columns",
                "fields": [
                    "vrh_etablissement",
                    "vrh_site",
                    "vrh_zone_vente",
                    "vrh_identifiant_equipement",
                    "vrh_referent"
                ]
            },
            {
                "id": "temperatures",
                "title": "Températures relevées",
                "layout": "two_columns",
                "fields": [
                    "vrh_type_vitrine",
                    "vrh_consigne_temperature",
                    "vrh_temp_releve_haute",
                    "vrh_temp_releve_basse",
                    "vrh_temp_produit",
                    "vrh_sonde_etalonnee"
                ]
            },
            {
                "id": "alarmes",
                "title": "Alarmes et enregistrement",
                "layout": "checklist",
                "fields": [
                    "vrh_alarme_haute_temp",
                    "vrh_enregistreur_donnees"
                ]
            },
            {
                "id": "hygiene",
                "title": "Hygiène et traçabilité",
                "layout": "checklist",
                "fields": [
                    "vrh_propre",
                    "vrh_plan_nettoyage",
                    "vrh_tracabilite_produits",
                    "vrh_separation_familles"
                ]
            },
            {
                "id": "equipement",
                "title": "État du meuble",
                "layout": "checklist",
                "fields": [
                    "vrh_eclairage_ok",
                    "vrh_joints_portes",
                    "vrh_degivrage_ok"
                ]
            },
            {
                "id": "observations",
                "title": "Anomalies et mesures correctives",
                "layout": "full_width",
                "fields": [
                    "vrh_anomalies_constatees",
                    "vrh_mesures_correctives"
                ]
            },
            {
                "id": "conclusion",
                "title": "Conclusion du contrôle",
                "layout": "highlight_box",
                "fields": ["vrh_conclusion", "vrh_date_prochaine_verif"]
            },
            {
                "id": "signatures",
                "title": "Technicien",
                "layout": "signature_block",
                "fields": ["vrh_technicien_nom", "vrh_qualification"],
                "signature_boxes": [
                    { "label": "Signature technicien", "for_field": "vrh_technicien_nom" },
                    { "label": "Signature responsable établissement", "for_field": null }
                ]
            }
        ],
        "field_render": {
            "vrh_etablissement": { "style": "bold" },
            "vrh_conclusion": {
                "style": "highlight",
                "color_by_value": {
                    "apte": "#1f8a1f",
                    "apte_reserve": "#e69500",
                    "inapte": "#c00000"
                }
            },
            "vrh_anomalies_constatees": { "min_height": 30, "show_if_empty": false },
            "vrh_mesures_correctives": { "min_height": 30, "show_if_empty": false },
            "vrh_consigne_temperature": { "suffix": " °C" },
            "vrh_temp_releve_haute": { "suffix": " °C" },
            "vrh_temp_releve_basse": { "suffix": " °C" },
            "vrh_temp_produit": { "suffix": " °C" }
        }
    }
}
