---
suivi: 1258
date: 2026-08-07
sujet: Fix ambiguïté SQL facture_id / latestOfMany (Validations + avoirs)
chantier: factures / validations / eloquent
type: hotfix
statut: poussé
hash: a7506134
fichiers:
  - app/Http/Controllers/ValidationController.php
  - app/Services/ApplicationAvoirDepotService.php
  - tools/diag/verif_fix_ambiguite_1258.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1258_fix_ambiguite_facture_id.md
---

# SUIVI #1258 — FIX ambiguïté `facture_id` (latestOfMany)

## PROMPT ENVOYÉ

PHASE 2 après diag #1257. Qualifier `depot_factures.*` sur 3 sites
(ValidationController:221 et :243, ApplicationAvoirDepotService:232). Forme
imposée = #148-FIX / #864 / #156-FIX. Preuve prod via script lecture seule.
Aucun .vue, aucune migration, pas de toucher à `Facture::depotFacture()`.

## FICHES LUES

- `#1257` — repro 1052 ; forme qualifiée OK ; équivalence dépôt
  `[1091,1092,1199,1203,1208,1209,1213,1245,1253,1338]` ; site 232 signalé hors
  périmètre → **réintégré** ici.
- `#1240` — signalement ValidationController non corrigé.
- Correctifs historiques : #148-FIX, #156-FIX, #864 (+ FactureController `c5280c53`).

## CINQ OCCURRENCES HISTORIQUES DU DÉFAUT

1. **#148-FIX** — `FactureSuperAdminCorrectionService` (liste super-admin)
2. **#156-FIX** — `MarcheRapprocherFactureService` (candidats rapprochement)
3. **#864** — `ApplicationAvoirDepotService:43` (avoirs proposables)
4. **FactureController** (`c5280c53`) — sélections show / valider / réattribuer
5. **#1240 / #1257** — `ValidationController` (écran Validations) + résidu `:232`

## SYNTHÈSE

Trois `with('depotFacture:…')` non qualifiés → closure + `select('depot_factures.id',
'depot_factures.facture_id', …)` avec commentaire `#1258`. Site 3 conserve les
4 colonnes d’origine. `facture_id` jamais retiré.

## LEÇON

Quand un diag classe un site « hors périmètre » alors qu’il est la copie exacte
du bug dans le même fichier qu’un correctif déjà présent (#864 vs :232), le
réintégrer dans le lot de fix — sinon sixième récurrence garantie.

## DÉPLOIEMENT / TEST

```
git pull origin main
php artisan optimize:clear
php artisan view:clear
php -d display_errors=1 tools/diag/verif_fix_ambiguite_1258.php
```

Attendu : `VERDICT=OK` et `IDENTIQUE_*=oui`. Puis `GET /validations` avec ≥1
facture en attente → plus de 1052.
