---
suivi: 1264
date: 2026-08-11
sujet: Refonte présentation écran dépôt facture
chantier: depot-factures
type: front
statut: poussé
hash: 79febc7b
fichiers:
  - resources/js/Pages/DepotFactures/DepotFactureSaisieForm.vue
  - resources/js/Components/Programmes/ProgrammeSearchSelect.vue
  - resources/js/Components/DepotFactures/DocumentsJointsPanel.vue
  - tests/Unit/DepotDestinationProjetsRefuseTest.php
  - tools/diag/diag_refonte_depot_1264.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
---

# SUIVI #1264 — Refonte présentation dépôt facture

## PROMPT ENVOYÉ

Refonte de présentation (« trop fouilli ») : déplacer / regrouper / aligner sans changer la logique. Après #1268 CIE et #1269 URL.

## OBJET 1 — Vérifications lecture seule

### (a) Situation
| Emplacement | Type | Branché saisie dépôt ? |
|---|---|---|
| `factures.numero_situation` | string nullable | **Non** (FactureController / Marches only) |
| `situations.numero` | unsignedSmallInteger | Table marché historique ; pas le formulaire dépôt |
| `ocr_raw.saisie.numero_situation` | — | **Aucune clé** dans le code dépôt |
| `depot_factures.numero_facture` | string | Oui — **détournement utilisateur** (ex. dépôt 1230 = « 6 ») |

**Clause d’arrêt** : pas de stockage dépôt → champ Situation **affichage seul désactivé** (si marché), **aucune migration**. Compte Num Facture 1–3 chiffres : script `tools/diag/diag_refonte_depot_1264.php` (à jouer en prod ; MySQL local indisponible au lot).

### (b) Type facture / DGD
`TypeFacture::LIBELLES_SAISIE` = FACTURE, DGD, RG, CIE, PRORATA, AVOIR, DEVIS.
Saisie dépôt excluait déjà RG/DEVIS/CIE/PRORATA du select (sauf courant).
**DGD** : catalogue + validation back ; pas de branche calcul dédiée « si DGD alors… » hors résolution de type. **Conservé** dans Options avancées.
Comptes par type : même script diag (prod).

### (c) Libellé Intacct
Règle serveur : `nullable|string|max:4000` — **non requis**.
Auto-rempli côté client depuis Notes si vide (`appliquerLibelleIntacctDepuisNotesSiVide`) — **transmis tel quel à Sage** via `saisie.libelle_intacct`. **Masqué en saisie**, conservé en comptabilisation ; valeur toujours postée (pas d’effacement silencieux).

## Mapping toggle FACTURE / AVOIR

| Libellé affiché | Valeur postée | Libellé back |
|---|---|---|
| FACTURE | `FACTURE` | `TypeFacture` libellé FACTURE |
| AVOIR | `AVOIR` | `TypeFacture` libellé AVOIR |
| (aucune position) | valeur inchangée ex. `DGD` | Options avancées — Select `form.type_facture` |

Dépôt déjà DGD : toggle neutre + bandeau + Options ouvertes par défaut.

## Boutons d’action (objet 2)

| Bouton | Condition AVANT | Condition APRES | Identique |
|---|---|---|---|
| Barre sticky + ActionBar variants | `showStickySaisieHeader` / `saisieActionBarVariant` | inchangé | **oui** |
| Overflow menu (payé/archiver…) | `showSaisieOverflowMenu` | inchangé | **oui** |
| Bloquer workflow | `canBlockWorkflow` | inchangé | **oui** |
| Indicateur dirty / doublon / Admin ERP | existants | conservés | **oui** |

## Déplacé sans logique
Destination (+ PROJETS grisé) ; Programme (sans compteur) ; Marché + reste + œil ; Poste ; Société (cadenas) ; Fournisseur → bulle Rattachement.
Toggle type ; Num+Situation ; 3 dates ; notes placeholder ; docs compact → Facture.
DGD/types avancés → Options avancées.
Libellé Intacct → masqué saisie.
Montant / Retenues / CIE #1268 : **non touchés**.

## Serveur PROJETS
`Rule::in(['PROGRAMMES','FRAIS_GENERAUX'])` déjà en place. Preuve : `tests/Unit/DepotDestinationProjetsRefuseTest` — PASS.

## Responsive
Seuil `sm` (640px) : libellé au-dessus, champ en dessous ; `lg` pour les 3 dates.

## DÉPLOIEMENT
```
git pull origin main
php artisan optimize:clear && php artisan view:clear && php artisan journal:sync
php -d display_errors=1 tools/diag/diag_refonte_depot_1264.php
```
Pas de migrate.

## LEÇON
Ne pas inventer une colonne Situation sur le dépôt : `factures.numero_situation` ≠ saisie dépôt. Masquer Intacct seulement si non requis **et** valeur toujours postée.
