# Copier Formule — copie complète vers une autre centrale

Écrans concernés : « Copier Formule » (`public/formule_copie`) et `public/formule_controle`.

## Problèmes corrigés
1. **Association `t_formule_centrale`** : la suppression et l'insertion utilisaient les colonnes `centrale_code` / `formule_code`, qui n'existent plus (la table contient `formule_id` / `centrale_id`). La formule n'était donc pas associée à la centrale d'envoi.
2. **Variante non copiée** : `formule_variant_id` n'était pas repris et valait 0. Or Laravel filtre le détail et la composition sur la variante active, donc la formule copiée semblait vide.
3. **Colonnes manquantes** : plusieurs colonnes récentes n'étaient pas copiées, notamment `formule_modulee`, le checksum, l'air, le wattmètre, le GWR et le NA.

## Correction
- Nouvelle fonction `copier_formule_centrale($id_formule, $id_centrale_ref, $id_centrale_envoi)` dans `public/inc/fonction.inc.php` :
  - supprime la composition, le détail et `t_formule_centrale` de la formule sur la centrale d'envoi ;
  - recopie `t_formule_detail` et `t_composition`, toutes variantes, par `INSERT ... SELECT` sur toutes les colonnes métier ;
  - pour `t_formule_detail` : `formule_variant_id`, `formule_modulee`, `formule_checksum_attendu`, `formule_checksum_statut`, `formule_air`, les cibles wattmètre, `formule_gwr`, `gwr_id` et `formule_na` ;
  - pour `t_composition` : `formule_variant_id`, pas, unité et valeur du pas, référence, fonction, destination, `composition_tarif_modif`, `compostition_correcteur` ;
  - insère la ligne `t_formule_centrale` (`centrale_id`, `formule_id`).
- `public/formule_copie/copie_formule_valider.php` (POST) et `public/formule_controle/copie_formule_valider.php` (GET) appellent cette fonction, puis écrivent la traçabilité « Copie Formule ».
- Les identifiants sont convertis en entiers avant d'être utilisés dans le SQL.

## Test
Formule 6, de la centrale 01 (id 3) vers la centrale 08 (id 8) : le détail, les 3 lignes de composition (variante 1) et `t_formule_centrale` sont identiques à la source. Les données de test ont ensuite été supprimées.

## Remarque
Les lignes déjà copiées avant la correction gardent `formule_variant_id = 0`. Il faut relancer la copie pour les corriger.
