# Planning : création automatique des présences véhicules

## Contexte

Les véhicules affichés dans les plannings (réel, prévisionnel et prévisionnel/réel) dépendent de la table `t_vehicule_presence_centrale`.
Avant cette modification, le comportement était « tout ou rien » selon la date :
- aucune présence pour la date : le planning affichait tous les véhicules actifs béton + définis production, sur la centrale de leur fiche, sans créer de lignes ;
- au moins une présence : seuls les véhicules ayant une ligne étaient affichés. Si quelqu'un ajoutait un seul camion à la main, les autres disparaissaient.

## Changement

Chaque fois que le planning charge ses véhicules, une présence est **créée pour chaque véhicule éligible qui n'en a pas encore pour la date**, même si d'autres véhicules en ont déjà. C'est aussi le cas à l'ouverture de l'écran « Présence véhicule » et quand on y change de date.
- Les véhicules concernés sont ceux avec `Vehicule_Definir_Production=1`, `Vehicule_Actif_Beton=1` et `centrale_id<>0`.
- Chaque véhicule est affecté à la centrale de sa fiche véhicule.
- Les présences existantes ne sont pas modifiées : une centrale changée à la main est conservée.

Le planning ne cache donc plus les véhicules sans présence.

## Fichiers modifiés

- `public/inc/fonction.inc.php` : nouvelle fonction `creer_presence_vehicule_date($date)`. Elle vérifie la date (Y-m-d) puis fait un seul `INSERT ... SELECT ... WHERE NOT EXISTS` préparé, qui ne crée que les présences manquantes.
- `public/vehicule_presence_centrale/vehicule_presence_centrale_valider_date_du_jour.php` : appelle maintenant cette fonction, au lieu de contenir sa propre copie du code.
- `public/planning/vehicule.php`, `public/planning_prev/vehicule_prev.php`, `public/planning_prev_reel/vehicule_prev_reel.php` : appellent la fonction avec `date_presence_vehicule` avant de charger les véhicules, et n'affichent que les présences avec `vehicule_presence_centrale_present=1`.

### Absence conservée

- `database/migrations/2026_10_01_1000_V905000_NB_t_vehicule_presence_centrale_present.php` : nouvelle colonne `t_vehicule_presence_centrale.vehicule_presence_centrale_present` (int, défaut 1). 1 = présent, 0 = rendu absent.
- `public/vehicule_presence_centrale/vehicule_presence_centrale_valider_ligne_tr.php` : « Rendre pas Présent » passe la ligne à 0 au lieu de la supprimer. « Rendre Présent » la repasse à 1 sur la centrale choisie, ou la crée si elle n'existe pas. Les requêtes sont maintenant préparées.
- `public/vehicule_presence_centrale/vehicule_presence_centrale_table_tr.php` : un véhicule n'est affiché présent que si sa ligne est à 1.
- `public/commande/planification_commande/vehicule_presence_centrale_affiche_of_manuel.php` : la recherche véhicule de l'OF manuel (version PHP) ne propose que les véhicules présents.
- `creer_presence_vehicule_date()` ne crée que les véhicules sans aucune ligne pour la date : une ligne à 0 n'est jamais recréée.

## Décisions

- **Absence :** elle vaut pour une seule date. Un camion rendu absent ne revient pas au rafraîchissement du planning. Pour retirer un camion de tous les jours, il faut décocher « Actif béton » ou « Défini production » sur sa fiche.
- La règle « aucune ligne → on affiche les véhicules de la fiche » est conservée dans les scripts du planning. Elle ne sert plus que si aucun véhicule éligible n'a de centrale renseignée.
- La création se fait aussi pour une date passée quand on affiche le planning de cette date. Des lignes sont alors écrites en base pour cette date.
- `tache_planifier_presence_vehicule_par_jour.php` n'est pas modifié.
- La table n'a pas d'index unique (`vehicule_id`, `date`). Si deux postes chargent le planning exactement au même moment, des doublons sont possibles en théorie.

## Vérification

Test sur la base de dev, dans une transaction annulée, avec la date 2099-01-05 :
- un seul véhicule ajouté à la main avec une autre centrale ;
- après l'appel, les 46 véhicules éligibles ont leur présence ;
- un 2e appel ne crée aucun doublon ;
- la centrale saisie à la main est conservée.

Test du scénario d'absence (même méthode, migration passée sur la base de dev) :
- 46 véhicules créés, puis un rendu absent : 46 lignes, 45 présents ;
- nouvel appel de création : l'absent n'est pas recréé (45 présents) ;
- « Rendre Présent » sur une autre centrale : 46 présents, avec la nouvelle centrale ;
- l'écran Présence véhicule affiche bien l'absent comme « pas présent » ;
- le planning affiche 45 véhicules, sans l'absent.
