---
suivi: 1748
date: 2026-09-30
sujet: Séparateur et actualisation de la liste dans la boîte de dépôt
chantier: comptabilite
type: evolution
statut: poussé
hash:
fichiers:
  - resources/js/Pages/DepotFactures/Index.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1748_boite_depot_separation_actualisation.md
---

# SUIVI #1748 — Boîte de dépôt

## PROMPT ENVOYÉ

Séparer visuellement la carte de dépôt et la liste. Sous-titre « FACTURES EN DÉPÔT » avec le nombre de dépôts. Après un dépôt réussi (un fichier ou un lot), recharger la liste et le compteur sans perdre filtres, recherche ni sélection.

## FICHES LUES

- #1259 : pas de composable commun pour rafraîchir les listes. Ici, réutiliser `fetchListe` déjà appelé par les filtres.
- #1274 : `router.reload()` reste sur l’index grâce au `replaceState`. La liste visible n’est pas cette réponse.
- #1226 : glisser un PDF, choisir un fichier, et la pièce Outlook sont trois entrées vers le même enregistrement.
- #1404 : ne pas toucher au seuil des trois colonnes.
- #1454 : ne pas toucher au panneau d’aide des cases.

## CONSTAT

`resources/js/Pages/DepotFactures/Index.vue` (avant ce lot) :

- Glisser un PDF ou le choisir (`onDropZoneDrop` vers la ligne 506, `onFileInputChange` vers 347) ajoute les fichiers à `selectedFiles`. L’envoi est le bouton Envoyer : `uploadHandler` vers 551, `POST /depot-factures`, champ `fichiers[]`, plus société, valideur et type des options de masse.
- Glisser une pièce Outlook (`handleOutlookAttachmentDrop` vers 427) envoie tout de suite `POST /depot-factures/outlook` (une pièce).
- Les deux réponses JSON (`DepotFactureController::store` ligne 274, `storeFromOutlook` ligne 357) : `success`, `depots`, `analysed_ok`, `analysed_fail`.
- Ensuite `router.reload()` (lignes 492 et 569). La liste affichée est `listItems` (ligne 159), remplie par `GET /depot-factures/liste` (`fetchListe`, ligne 749) avec les filtres en cours. Rien ne recopiait les props Inertia dans `listItems`. Le rechargement Inertia ne changeait donc pas la liste.
- Tri de la requête (`buildBoiteDepotListeQuery`, vers 3973 puis `orderByDesc('created_at')` ligne 4002) : d’abord les dépôts sans valideur, puis les plus récents.
- À la création, le statut est `depose` (`finalizeDepotAfterLocalPdfStored` ligne 460). L’analyse OCR est faite dans la même requête (`analyserPdf` ligne 6573), avant la réponse. Le statut `en_analyse` existe (`DepotFacture::STATUT_EN_ANALYSE`, libellé « En analyse... » dans `statutLabel` ligne 244). Ce chemin de dépôt ne le pose pas : à l’arrivée de la réponse, la ligne a déjà le statut d’après l’analyse, ou `depose` si l’analyse n’a pas abouti.

## SYNTHÈSE

Un filet gris et un espace séparent la carte de dépôt du reste. Le sous-titre « Factures en dépôt » reprend le style du titre de colonne, avec le nombre de dépôts à droite. La ligne « affichés N » reste sous la recherche.

Après un envoi réussi (bouton Envoyer, y compris plusieurs PDF, ou pièce Outlook), `fetchListe(1)` recharge la première page avec les filtres et la recherche déjà saisis. La sélection ouverte n’est pas effacée. Le défilement de la liste revient en haut, là où le tri place les dépôts récents.

## DÉPLOIEMENT-TEST

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

Pas de migration. Pas de route:clear.

## LEÇON

`router.reload()` rafraîchit les props de la page. Sur cet écran, la liste et le compteur viennent de `fetchListe`. Un dépôt doit appeler cette fonction, avec les mêmes paramètres que les filtres.
