---
suivi: 1754
date: 2026-09-30
sujet: Frise facture — date de facture, dépôt, déjà réglée
chantier: factures
type: evolution
statut: poussé
hash:
fichiers:
  - app/Support/FactureFriseEtapePresenter.php
  - app/Http/Controllers/FactureController.php
  - app/Support/FactureSuperAdminAuditPresenter.php
  - resources/js/Pages/Factures/Show.vue
  - resources/js/constants/workflowAideEtapes.js
  - resources/js/Components/Workflow/WorkflowAideDialog.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tests/Unit/FactureFriseEtapePresenterTest.php
  - tests/Feature/FactureFicheRouteTest.php
  - public/build/
  - docs/suivi/SUIVI_1754_frise_date_facture_depose.md
---

# SUIVI #1754 — Date de facture, dépôt, déjà réglée

## PROMPT ENVOYÉ

Première étape « Facture » (date du document, pastille neutre). « Analyse » devient « Déposée » (date du dépôt, déposant, seconde ligne « complétée le » si la saisie est terminée). Étapes suivantes inchangées. Aide « ? » à jour. Facture déjà réglée : libellé « Déjà réglée le JJ/MM/AAAA », date de règlement saisie puis date Sage, étapes de paiement intermédiaires grisées. Même frise partout. Tient à 1366 px. Acomptes inchangés.

## FICHES LUES

- #1744 LEÇON : la chaîne de paiement d’un acompte vient de l’état de la demande Sage. Ne pas réécrire cette chaîne. Ajouter Facture et Déposée devant ne change pas les clés de paiement.
- #1612 (commentaire du présentateur) : les acomptes gardent la frise de paiement.

## CONSTAT

Avant ce lot, la date sous « Analyse » était `factures.created_at` (`FactureController::buildWorkflowForDisplay`, bloc `analyse` remplacé dans ce lot). Cette date est l’instant où `Facture::query()->create` s’exécute à l’envoi en validation (`DepotFactureController.php` ligne 2373), pas la date du document et pas la date du dépôt.

- Date de la facture : `factures.date_facture`, recopiée depuis `depot_factures.date_facture`.
- Date de dépôt : `depot_factures.created_at` (création du dépôt, `DepotFactureController.php` ligne 453).
- Déposant : `depot_factures.user_id` → `user.name`.
- Saisie complète : aucune colonne dédiée. L’événement est l’envoi en validation, qui crée la facture. `dateSaisieCompletee` reprend `factures.created_at` seulement si le dépôt a un `facture_id` et n’est plus dans `DepotFacture::statutsStadeDepot()`. Sinon pas de seconde ligne. `analyse_at` est l’OCR, pas la saisie. `tasks.closed_at` de `completer_saisie_facture` n’existe que si un valideur a été désigné : non retenu.

Facture déjà réglée — source de la date « Paiement confirmé » avant ce lot : `factures.intacct_when_paid`, sinon date de validation du paiement effectif, sinon `updated_at` (`FactureController.php`, branche `payee` conservée pour les autres factures, lignes 1798-1806). L’acteur « Sage (automatique) » n’est posé que si `intacct_when_paid` est renseigné. Le « 09/09/2026 par Sage (automatique) » constaté sur la facture 2627 est donc cette colonne.

Date de règlement saisie : `depot_factures.date_reglement` (obligatoire à l’envoi si déjà réglée, `DepotFactureController.php` lignes 2284 et 2440). `depot_factures.date_paiement` est une copie sur le chemin historique (ligne 3059), non utilisée ici.

Requête lecture seule facture 2627 : connexion refusée (`SQLSTATE[HY000] [2002] 127.0.0.1:3306`, base `erp_immo`). Valeurs de colonnes non lues. Rien n’a été inventé.

## SURFACES

La frise visuelle n’est rendue que par `resources/js/Pages/Factures/Show.vue` (`workflow_view.steps`). Le super-admin réutilise ce même payload (`FactureSuperAdminAuditPresenter::enrichirWorkflowView`, libellés de popover). `DepotFactures/Show.vue` et `Admin/FacturesSuperadmin/Show.vue` ne dessinent pas cette frise. Les pastilles de liste (`resolveEtapeListe`) gardent la clé interne `analyse`.

## DÉPLOIEMENT-TEST

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

Pas de migration, pas de route nouvelle.

1. Facture 2627 : Facture (sa date) → Déposée 30/09/2026 par le déposant → … → Comptabilisée 30/09/2026 → Déjà réglée le (date de règlement saisie, sinon la date Sage).
2. Dépôt encore en saisie : Déposée sans seconde ligne. Après envoi : « complétée le » = date de création de la facture.
3. Acompte 1661 : mêmes étapes de paiement qu’avant, avec Facture et Déposée devant.
4. Largeur 1366 px : la frise reste dans la page (colonnes `minmax(0, 1fr)`, texte qui revient à la ligne). Pas de `overflow-x-hidden`.

## LEÇON

La date sous l’ancienne étape Analyse n’était ni la date du PDF ni la date du dépôt : c’était la création de la ligne facture. Ne pas la réutiliser comme date de dépôt. Pour une facture déjà réglée, `intacct_when_paid` déclenchait « par Sage (automatique) » même quand une date de règlement avait été saisie.
