# Suivi Pesée : filtre « Eliminer les BLs annulés »

Ajout d'une checkbox de filtre sur l'écran Suivi Pesée (`/pesee`), valable pour la liste (hors ouverture depuis un BL) et pour l'export CSV.

## Règle

Si la case est cochée, les pesées dont le BL a `t_bl.bl_annule = 1` sont exclues. Les pesées sans BL, ou dont `bl_annule` est NULL, sont conservées.

## Filtre « Limiter aux formules NF »

Si la case est cochée, seules les pesées dont la formule du BL est normalisée pour la centrale du BL sont conservées. La condition est un `whereExists` sur `t_formule_detail` : `formule_id = t_bl.formule_id`, `centrale_id = t_bl.centrale_id` et `formule_normalisee = 1`. C'est la même règle que les rapports `*_formule_normee`, sans filtre sur la variante de formule. Les pesées sans BL sont donc exclues quand cette case est cochée.

## Filtre « Charge >= … m3 »

Checkbox `#filtrer_charge_minimum` avec une zone de saisie numérique `#charge_minimum` (m3). Si la case est cochée et la valeur numérique, seules les pesées des BL avec `t_bl.bl_qte_livree >= valeur` sont conservées ; un BL égal à la valeur est gardé. Le champ `bl_qte_livree` et la borne incluse ont été choisis par l'utilisateur. Les pesées sans BL sont exclues quand le filtre est actif. Une valeur vide ou non numérique désactive le filtre.

## Filtre « Eliminer les Volumes < 1/2 de la capacité malaxeur »

Checkbox `#eliminer_volume_demi_malaxeur`. Si elle est cochée, toutes les pesées d'une gâchée (même `bl_id` + `pesee_no_gachee`) sont retirées quand la ligne volume de cette gâchée (`pesee_type_donnee = 4`, `pesee_data_1` = Vol mx) est inférieure à `t_centrale.centrale_volume_mx / 2`. La centrale prise en compte est celle de la pesée. La condition est un `whereNotExists` : il n'y a pas de jointure supplémentaire, donc pas de doublon dans le `SUM` de l'export CSV.

Cas conservés : centrale sans volume malaxeur renseigné (0 ou NULL), et gâchée sans ligne de type 4.

## Filtre « Désignation béton » (combobox)

Select `#designation_beton_id` placé en tête de la ligne des filtres (« Toutes » = 0). La liste est chargée dans `index()` et triée par `designation_beton_code`. Le filtre porte sur `t_formule.designation_beton_id` de la formule du BL, et non sur `t_bl.designation_beton_id`, que `depart_cycle_service` met à 0. Les pesées sans BL/formule sont exclues quand une désignation est choisie.

## Rafraîchissement uniquement sur le bouton

La liste ne se recharge plus automatiquement quand un filtre change : dates, sélection ou effacement (X) de la formule ou du BL, case à cocher, saisie de charge, désignation béton. Seul le bouton « Rafraichir » recharge la liste. Le chargement initial de la page est conservé.

- La recopie de la date de début dans la date de fin est conservée.
- `fiche_annexe/table_formule_fiche_annexe.blade.php` et `table_bl_fiche_annexe.blade.php` : le `$("#rafraichir").click()` du double-clic de sélection est désactivé seulement pour `type_fiche_annexe == 'pesee'`. Les autres écrans qui utilisent ces fenêtres de recherche ne changent pas.

Les checkboxes de filtre sont sur leur propre ligne, sous les filtres Formule / BL / Centrale.

## Fichiers

- `resources/views/pesee/index.blade.php` :
  - checkbox `#eliminer_bl_annule` ajoutée dans le bloc de filtres, qui n'est pas affiché à l'ouverture depuis un BL ;
  - la valeur (0/1) est envoyée à `pesee/table` et à `pesee/export_csv` ;
  - un changement de la case relance la liste.
- `app/Http/Controllers/pesee_controller.php` :
  - `data_table` lit `eliminer_bl_annule` et l'applique uniquement dans la branche avec dates. La branche « ouvert depuis un BL » n'est pas modifiée.
  - `export_csv` passe la valeur au constructeur de l'export.
- `app/Exports/export_pesee_csv.php` : nouveau paramètre de constructeur `$eliminer_bl_annule` (défaut 0), appliqué dans la requête.
