---
suivi: 1902
date: 2026-10-14
sujet: Visite guidée de Toutes les factures
chantier: factures
type: evolution
statut: poussé
hash: 987a1687b
fichiers:
  - resources/js/visites/index.js
  - resources/js/Pages/Factures/Global.vue
  - app/Http/Controllers/VisiteGuideeController.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tests/Unit/VisiteGuidee1902Test.php
  - public/build/
  - docs/suivi/SUIVI_1902_visite_toutes_les_factures.md
---

# SUIVI #1902 — Visite guidée de Toutes les factures

## PROMPT ENVOYÉ

Visite `factures.liste` sur /factures. Première visite automatique, bouton ? à côté des onglets. Textes confrontés au code des statuts affichés. Étapes sans ancre sautées. Aucun changement de calcul.

## Fiches lues

- #1817, #1896, #1898, #1901 : visite, ancres, version, bulle mobile, étape absente sautée.
- #1418 : onglet En dépôt, case limitée à Programmes et Frais généraux.
- Articles « Process général », « La fiche facture », « COMPTABILISATION » : absents des seeders, de docs/ et du SQL local.

## Statuts affichés

| Pastille | Qui agit | Source |
|---|---|---|
| Analyse | saisie à compléter | FactureStatutListePresenter.php 108, badgeKeyFromEtapeFrise 73 |
| Validation NV1 | valideur désigné | 109, FactureValidationPermissions.php 169 |
| Validation NV2 | direction, facture de programme Envol | 110, FacturePasseParValidationNv2.php 85 |
| À comptabiliser | comptabilité, enregistrement Sage | 111 |
| Paiemt en prépa | comptabilité prépare le paiement | 112, preparation_paiement |
| Déposé sur Suite | bordereau disponible dans Sage | statutBadgeListeConfig.js 11 |
| Chèque émis | chèque imprimé, pas encore payé | 12 |
| Viremt à exe | direction ou DAF | 13, FactureValidationPermissions.php 23-29 |
| Viremt exe | virement confirmé | 14 |
| Payé | réglée | 15 |
| Paiement à enregistrer | déjà réglée, paiement à confirmer | 17 |
| Avoir — en attente / partiel / épuisé | selon le reste à imputer | 18-20 |
| Rejeté | sortie du circuit | 16 |
| Bloqué | pastille ajoutée, facture arrêtée | WorkflowBloqueBadge.vue 25 |

## Écarts

| Point du prompt | Version posée | Source |
|---|---|---|
| « Tous » = factures sorties du dépôt | « Tous » ne filtre pas : toutes les factures visibles | FactureGlobaleListeQuery.php 309-310 |
| Case = inclure partout les non envoyées | La case ne change que Programmes et Frais généraux | 345-347 |
| Stade dépôt | déposé, attribué, en analyse, analysé, en cours de saisie | DepotFacture.php 123-131 |
| Recherche limitée à cinq champs | Le champ cite aussi montant, date, statut, référent | Global.vue placeholder |
| Responsable complète à l’analyse | La saisie est à compléter (pas de rôle « responsable ») | #1901, statut analyse |
| NV2 = Envol | Facture de programme Envol seulement | FacturePasseParValidationNv2.php 21-25 |
| En paiement / virement seulement | Pastilles réelles ci-dessus, dont chèque, Suite, avoirs | statutBadgeListeConfig.js |
| Libellé Suite côté PHP | L’écran affiche « Déposé sur Suite » | JS 11, PHP libelle 113 « À déposer sur Suite » |
| Triangle = anomalie | Doublon détecté | Global.vue title |
| Œil = fiche | Fiche, ou dépôt si la facture n’existe pas encore | depotHref |
| Référent = qui suit | Initiales du valideur désigné | resolveReferentDesignePourListe |
| Synchro automatique générale | Reprise à l’ouverture si plus de quatre heures, pour qui voit le bouton | FacturePaiementStatutBatchService.php 25-28 |
| Sélection masquée sans droit | La case est affichée pour tout le monde (au moins le ZIP). L’étape reste. Les actions ensuite dépendent des droits | Global.vue selection-mode |
| Journal avec #1901 | #1901 est la boîte de dépôt. Dernière entrée de cette liste : 02/09. Nouvelle entrée | journal |

## SYNTHÈSE

La visite `factures.liste` démarre à la première ouverture. Le ? à côté des onglets la relance. Sans bouton Sage, sans ligne, ou sans case de sélection dans le tableau, les étapes correspondantes sont sautées. Le texte du statut reprend les pastilles réellement affichées.

## DÉPLOIEMENT-TEST

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

1. Première ouverture : la visite démarre. Une seconde ouverture : non. Le ? la relance.
2. Sans le bouton Sage : pas d’étape Paiements Sage. Liste vide : pas d’étape Ouvrir.
3. Mobile : bulle en bas de l’écran.

## LEÇON

« Tous » n’est pas « hors dépôt ». La case ne réinjecte le stade dépôt que dans Programmes et Frais généraux. La pastille affichée vient de `statutBadgeListeConfig`, pas du libellé PHP quand les deux divergent (Suite).
