# BL — Lignes de taxes automatiques au changement de chantier selon l'activité

## Problème

Dans le BL (PHP legacy), changer le chantier génère automatiquement les lignes de taxes/contributions.
Sur un BL dont la centrale est d'activité **Carrière / granulat**, le script ajoutait les taxes **béton**
(TGAP béton, taxe carbone, taxe énergétique, écotaxe) au lieu des taxes granulat.

Cause : `public/bl/chantier_verifier_taxes.php` récupérait `t_activite.activite_type` mais ne s'en servait pas,
et ne gérait que les 4 taxes béton.

## Correction

Fichier modifié : `public/bl/chantier_verifier_taxes.php` (appelé par `verifier_lignes_taxes()` dans `public/inc/js/bl/bl.js` sur `#chantier.change`).

Logique alignée sur celle du devis (`app/fonctions/ajout_lignes_taxes_fonction.php`) :

| `activite_type` de la centrale | Taxes traitées | Article (`t_parametre`) | Drapeau chantier (`t_chantier`) |
|---|---|---|---|
| 0 — BPE / béton | TGAP béton (contribution environ.) | `parametre_article_contribution_environ_id` | `chantier_tgap_beton_facturable` |
| | Taxe carbone | `parametre_article_taxe_carbone_id` | `chantier_taxe_carbone_facturable` |
| | Taxe énergétique | `parametre_article_taxe_energetique_id` | `chantier_taxe_energetique_facturable` |
| | Écotaxe | `parametre_article_ecotaxe_id` | `chantier_ecotaxe_facturable` |
| 1 — Carrière / granulat | TGAP carrière | `parametre_article_tgap_id` | `chantier_tgap_granulat_facturable` |
| | Redevance / répartition granulat | `parametre_rep_granulat_1_article_id` | `chantier_rep_granulat_1_facturable` |
| | Contribution env. granulat | `parametre_contrib_env_granulat_article_id` | `chantier_contrib_env_granulat_facturable` |

Pour chaque taxe : ligne présente + drapeau à 0 → suppression ; ligne absente + drapeau à 1 + article paramétré (≠ 0) → ajout.

Les lignes de taxes insérées ont désormais `numero_ligne_bl = 99` (avant : 0 par défaut, donc affichées en tête
du tableau, l'affichage étant trié par `numero_ligne_bl ASC`).

## Points d'attention

- L'activité NEGOCE (`activite_type = 2`) n'ajoute aucune taxe (comme le devis).
- Les frais de facturation béton/carrière ne sont pas gérés par ce script (non dépendants du chantier).
- Si les articles granulat ne sont pas renseignés dans les paramètres (valeur 0), aucune taxe granulat n'est générée.
- Un chantier n'ayant que les cases béton cochées ne génère aucune taxe sur un BL carrière : c'est le comportement attendu.
- `public/inc/init.inc.php` contient un BOM UTF-8 (préexistant) qui précède la réponse JSON ; sans impact constaté.

## Vérification

Tests réalisés dans une transaction annulée (aucune donnée modifiée) : ajout des 4 taxes béton avec `numero_ligne_bl=99`,
idempotence (pas de doublon), suppression quand le drapeau passe à 0, BL carrière → uniquement les 3 taxes granulat
(aucune taxe béton même si les cases béton du chantier sont cochées), suppression quand les drapeaux granulat passent à 0.
