# Profil : cases à cocher enregistrées à 1 malgré décochage

## Symptôme
Des utilisateurs avec un accès devis « Complet » (`profil_devis = 5`) avaient le bouton **Valider** grisé sur les devis legacy (infobulle « Accès limité aux devis comptant »).

## Cause
- Le commit `98e8743f` (« correction checkbox », 12/09/2026) a ajouté un `<input type="hidden" value="0">` devant chaque case à cocher de `resources/views/profil/form.blade.php`.
- `profil_controller::enregistrer()` testait ces champs avec `$request->has(...) ? 1 : 0`. Le champ caché étant toujours envoyé, `has()` renvoyait toujours vrai : **chaque enregistrement d'un profil passait les 8 cases à 1**.
- Exemple constaté en base dev : profil `super` avec `profil_devis_comptant_uniquement = 1`.

Pourquoi le grisage n'apparaissait qu'en legacy : côté Laravel, la liste des devis (`devis_controller.php`, filtre `client_comptant = 1`) masque les devis non comptants pour ce profil, donc on n'ouvre jamais un devis où le bouton serait grisé. Le legacy laisse ouvrir tous les devis et applique le grisage (`public/devis/devis_afficher_tr.php`).

## Correction
`app/Http/Controllers/profil_controller.php` : `$request->has(...)` remplacé par `$request->boolean(...)` pour les 8 cases :
`profil_visualiser_cout_produit`, `profil_visualiser_cout_formule`, `profil_visualiser_cout_devis`, `profil_visualiser_cout_bl`, `profil_devis_comptant_uniquement`, `profil_limiter_centrale`, `profil_formule_modification_groupee_ajout`, `profil_facture_defacturer_bl`.

`boolean()` lit la valeur envoyée (« 0 » → faux, « 1 » → vrai, absent → faux).

## Action manuelle restante
Les profils enregistrés depuis le 12/09/2026 ont potentiellement ces 8 cases à 1. Les rouvrir, décocher ce qui ne doit pas l'être et réenregistrer (en dev et en production).
