---
suivi: 1269
date: 2026-08-11
sujet: URL du dépôt sélectionné dans la boîte dépôt
chantier: depot-factures
type: front
statut: poussé
hash: 63c598be
fichiers:
  - resources/js/Pages/DepotFactures/Index.vue
  - public/build/
  - database/data/journal_mises_a_jour_post_2026_06_12.php
---

# SUIVI #1269 — URL suit la sélection (boîte dépôt)

## PROMPT ENVOYÉ

Petit lot front navigation uniquement. Option B Robin : vraie URL (`/depot-factures/{uuid}`) via `replaceState`, sans visit Inertia, sans requête supplémentaire, sans toucher `DepotFactureSaisieForm.vue`.

## OBJET 1 — Lecture seule (avant code)

### a) Route existante
| | |
|---|---|
| Nom | `depot-factures.show` |
| Verbe | `GET\|HEAD` |
| Chemin | `/depot-factures/{uuid}` |
| Paramètre | **`uuid`** (confirmé `php artisan route:list --path=depot-factures` + `DepotFactureController::show(Request, string $uuid)`) |

### b) Arrivée directe sur cette URL
Inertia rend **`DepotFactures/Show`** (page dédiée), props via `depotSaisiePagePayload` (depot + référentiels). La liste de gauche **n’est pas** chargée — c’est un autre écran. Coller le lien ouvre donc le bon dépôt **sans** code de reprise côté Index (motif de l’option B).

### c) Mécanisme de sélection actuel (Index)
État local `selectedUuid` + `axios.get(/depot-factures/{uuid}/data)` pour le panneau saisie. **Pas** de visite Inertia au clic. Les filtres / scroll / liste restent en mémoire Vue. C’est pourquoi `replaceState` suffit pour l’URL sans remonter le composant.

## SYNTHÈSE

### Méthode URL
`window.history.replaceState(window.history.state, '', target)` — préserve le state Inertia (composant Index, url logique `/depot-factures`) pour que `router.reload()` ne bascule pas sur Show.

### Précédent navigateur
**replaceState** retenu : aucune entrée empilée ; Précédent ramène à l’écran **avant** `/depot-factures`. Pas d’URL qui ment (pas de pushState / pas de désync sélection ↔ barre).

### Saisie non enregistrée
`confirmLeaveIfDirty` déjà appelé dans `selectRow` — **conservé**. Pas de nouvel avertissement créé. (Sujet éventuel hors lot : avertissement plus riche que `window.confirm`.)

### Inchangé
Aucun PHP, aucune route, aucun contrôleur, pas `DepotFactureSaisieForm.vue`, pas CIE/retenues/workflow.

## DÉPLOIEMENT-TEST

```
git pull origin main
php artisan optimize:clear
php artisan view:clear
php artisan journal:sync
```
Pas de migrate / npm sur OVH.

### Tests Robin
1. Sélection → URL = `/depot-factures/{uuid}`  
2. Second dépôt → URL suit  
3. Copier URL, nouvel onglet → Show ouvre le bon dépôt  
4. Filtres actifs avant sélection → inchangés après ; compteur inchangé  
5. PDF : aperçu du nouveau dépôt, pas de page blanche  
6. Précédent → quitte la boîte (comportement replaceState) ; jamais URL ≠ écran  
7. Réseau : **aucune** requête *due au seul changement d’URL* (le GET `/data` existait déjà)  
8. Saisie dirty → même `confirm` qu’avant  
9. `grep "production.ERROR" storage/logs/laravel.log | tail -5`

## LEÇON

- Ne pas inventer le paramètre de route (`uuid` ≠ `id`) : `route:list` + signature contrôleur.
- Sur un Index Inertia + panneau axios, `replaceState` + conservation de `history.state` aligne la barre sans casser filtres ni provoquant un Show involontaire au reload.
