---
suivi: 1444
date: 2026-09-04
sujet: Facture — rétablir Voir le doublon dans le bandeau
chantier: factures
type: fix
statut: poussé
hash: 6c81449d
fichiers:
  - resources/js/Pages/DepotFactures/DepotFactureSaisieForm.vue
  - resources/js/Pages/Factures/Show.vue
  - app/Http/Controllers/DepotFactureController.php
  - tests/Unit/FactureDoublonVoirBouton1444SourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1444_fix_bouton_voir_doublon.md
---

# SUIVI #1444 — Rétablir « Voir le doublon »

## PROMPT ENVOYÉ

Régression comptabilité (Sabrina BARTOLI) : le bouton « Voir le doublon » a disparu
de l’onglet Information de la fiche facture (panneau droit montants/dates), alors
qu’un doublon est bien détecté. Suspect #1413 (`67454fc5`). Établir la cause par
le code avant toute correction. Rétablir un accès DIRECT qui coexiste avec la
case #1413 et le cadenas #1410–#1412. Ne pas toucher à la détection, aux colonnes
`doublon_controle*`, au verrou, à la liste #1418, à la boîte #1407. Pas de
`overflow-x-hidden`. Pas de migration.

## FICHES LUES

- `SUIVI_1413` — a AJOUTÉ la case à côté de « Ouvrir le doublon » / « Comparer »,
  sans les supprimer. Le bandeau reste après contrôle. Layout passé en
  `flex` + `flex-1 min-w-0` pour la case. C’est la cause, pas un remplacement.
- `SUIVI_1412` — cadenas sur `Factures/Show.vue` (header identité), props
  `can_verrouiller`. Non modifié.
- `SUIVI_1410` — colonnes `verrouille*` et `FactureVerrou`. Non modifié.
- `SUIVI_1418` — liste `/factures`. Non modifié. Écarté.

## ÉTAPE 0 — CAUSE (ÉTABLIE PAR LE CODE)

### 0.1 Localisation

Deux écrans, un bandeau chacun :

1. **Écran Sabrina** — onglet Information, panneau droit montants/dates :
   `Factures/Comptabilisation/Index.vue` colonne 3 (L640–717, classes
   `overflow-x-hidden`) qui embarque `DepotFactureSaisieForm.vue`. Le bandeau
   est dans le formulaire, L8217–8283, **au-dessus** des onglets Comptabilité /
   Informations (`showComptaInformationsTab` L8349). Donc visible aussi sur
   l’onglet Information.
2. **Fiche facture** `Factures/Show.vue` L1155–1225 : bandeau « Doublon détecté »
   + bouton « Comparer » (modal). Le cadenas #1412 est dans le header identité
   (L1331–1356), pas dans le même nœud DOM.

### 0.2 Le bouton existe toujours

Il n’a pas été supprimé. Conditions d’affichage **avant** ce lot :

- Bandeau : `v-if="depot.doublon_detecte"` (saisie) / `v-if="doublonDetecte"` (fiche).
- Lien/bouton : `v-if="doublonsPotentiels.length"` — indépendant de
  `doublon_controle`. Si la liste live est vide, le bandeau peut rester
  (flag stocké) sans bouton.

### 0.3 #1413 n’a PAS remplacé le bouton par la case

`git show 67454fc5` : la case est **ajoutée à côté**. Le bouton
« Ouvrir le doublon » (saisie) et « Comparer » (fiche) restent.

Saisie : layout passé de texte + bouton inline à
`flex flex-wrap justify-between` avec la case dans `flex-1 min-w-0` et le
bouton **sans** `shrink-0`.

### 0.4 `doublon_controle`

N’entre pas dans le `v-if` du bouton. Après contrôle, le bandeau reste
(texte « Doublon vérifié par… ») et le bouton aussi (sévérité secondary).

### 0.5 `doublon_de_id`

`DepotFactureDoublonPayload::doublonsPotentiels` recalcule les matches et
unshift le dépôt lié si `doublon_de_id` est renseigné. `fiche_href` est
toujours posé dès qu’un dépôt/facture lié est sérialisable. Si
`doublon_de_id` est nul **et** aucun match live → pas de cible.

Mesure à lancer par Robin (base prod) : voir livrable.

### 0.6 Conclusion

**ÉTABLI PAR LE CODE.** Cause = layout #1413 dans une colonne étroite déjà
couverte par `overflow-x-hidden` (#1271, `Comptabilisation/Index.vue` L642,
L671, L675). Le bouton « Ouvrir le doublon » est compressé / clippé : le
bandeau (détection) reste, l’accès direct disparaît visuellement.

Ce n’est **pas** une suppression du bouton, **pas** un masquage par
`doublon_controle`, **pas** #1410/#1411/#1412/#1418.

Correctif : empiler le bandeau (`flex-col`), `shrink-0` sur les actions,
lien réel `fiche_href` libellé « Voir le doublon » (nouvel onglet) **en plus**
de Comparer / modal, mention si aucun href. On ne touche pas à
`overflow-x-hidden` de la colonne compta.

## SYNTHÈSE

- Saisie + fiche : bouton « Voir le doublon » (`target=_blank` sur `fiche_href`)
  + case #1413 + Comparer. Après contrôle, les deux restent.
- Sans href : mention, pas de bouton mort.
- Payload saisie : `doublon_de_id` exposé (cast int|null).
- Journal : mise à jour de l’entrée `facture-doublon-controle-1413-2026-09-02`
  (même `code`, règle #1406).
- Test source `FactureDoublonVoirBouton1444SourceTest`. #1413 source test vert.

## DÉPLOIEMENT-TEST

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

Pas de migrate. Cas Magali COLLIN / CLEAN COMPAGNIE ids 1564–1569.

## LEÇON

Ajouter une case dans un `flex` horizontal à côté d’un lien, dans une
colonne déjà en `overflow-x-hidden`, fait disparaître le lien sans le
supprimer du code. Empiler (`flex-col`) + `shrink-0` plutôt que d’ajouter
un overflow. Un bandeau visible ne prouve pas que le bouton frère l’est :
deux `v-if` distincts (`doublon_detecte` vs `doublonsPotentiels.length`).
