---
suivi: 1405
date: 2026-09-02
sujet: selecteur_programme_ordre_tri_commune
chantier: programmes
type: feature
statut: poussé
hash: e37e6345
fichiers:
  - app/Support/ProgrammeSaisieSelectPresenter.php
  - app/Http/Controllers/ProgrammeController.php
  - resources/js/Components/Programmes/ProgrammeSearchSelect.vue
  - tests/Unit/ProgrammeSelectOrdreTriCommune1405SourceTest.php
  - tests/Unit/ProgrammeSelectLimiteFormat1403SourceTest.php
  - tests/Unit/ProgrammeHorsErp1392SourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1405_selecteur_programme_ordre_tri_commune.md
  - public/build/
---

## PROMPT ENVOYÉ

SUIVI #1405 — ordre `[COMMUNE] - [LIBELLÉ] - [CODE]`, tri commune (NULL en fin), majuscules UTF-8 affichage, pastille Hors ERP restaurée. Conserves acquis #1403 (limite, recherche). Rebase #1404.

## FICHES LUES

- `SUIVI_1403` — format précédent, pastille retirée ; ici ordre+pastille.
- `SUIVI_1404` — confirmé sur origin/main avant code.
- `SUIVI_1392` — style pastille sélecteur repris à l’identique.

## SYNTHÈSE

- `buildLabel` : commune → libellé → code ; `mb_strtoupper(..., 'UTF-8')` affichage seul.
- Hors ERP : plus de texte `HORS ERP` ; pastille ambre #1392 restaurée.
- Search : `ORDER BY commune IS NULL, commune, libelle` — sans commune en fin. Pas de GROUP BY.
- Limite 40 toujours absente ; critères recherche inchangés.

## DÉPLOIEMENT-TEST

```bash
git pull origin main
php artisan optimize:clear
php artisan view:clear
php artisan journal:sync
```

## LEÇON

Majuscules d’affichage côté presenter (pas CSS) : le `label` sélectionné et l’option restent cohérents ; la recherche SQL reste sur les colonnes brutes (casse indépendante).
