---
suivi: 1515
date: 2026-09-10
sujet: Enregistrer dépôt Projet à comptabiliser sans classe Sage
chantier: factures / depot / destination-projet
type: bugfix
statut: poussé
hash: 4ffcecc0
fichiers:
  - app/Http/Controllers/DepotFactureController.php
  - tests/Unit/DepotProjetAnalyticsEnregistrer1515SourceTest.php
  - tests/Unit/DepotProjetAnalyticsEnregistrer1515Test.php
  - docs/suivi/SUIVI_1515_enregistrer_projet_analytics_id.md
---

# SUIVI #1515 — Enregistrer d’un dépôt Projet à comptabiliser

## PROMPT ENVOYÉ

Fix serveur. Incident prod dépôt 1821 (`a_comptabiliser`, dest Projet) :
« Enregistrer » → `The analytics id field is required`. Classe Sage
« non renseignée » sans alerte (#1505). Cause : `depotSaisiePatchValidationRules`
bascule sur les règles comptables dès `estEligibleComptabilisation()`.
Pas de Vue. Push `origin/main`. Prompt reçu tronqué après la cause ;
fix aligné #347 / #1505 / #1513.

## BASE GIT

Rebasé sur `origin/main` = `8117bde3` (fiche #1514). HEAD de départ du
prompt (`f39f162a`, fiche #1513) périmé : #1514 déjà sur main (parcelles,
zone disjointe). `FoncierParcelleVisibiliteScope` /
`FoncierParcelleVisibiliteService` non touchés.

## FICHES LUES

- **#347** (`3ddd0bfb`, pas de fiche `docs/suivi/`) — Enregistrer / Valider
  en modification de dépôt engagé. Durcissement : règles comptables
  (`analytics_id` required). Conçu pour PROGRAMMES / FG. Conservé pour
  ces destinations.
- **#1505 LEÇON** — classe Sage affichée, absente = « non renseignée »,
  **sans alerte**. CLASSID = étape 5. Impact : ne pas exiger `analytics_id`
  à l’enregistrement Projet.
- **#1492 LEÇON** — gardes PROJET (`required_if` dossier/poste). Non
  retouchées.
- **#1513 LEÇON** — persistance dossier/poste à Valider. Helper unique
  conservé (6 appels). Ce lot ne touche pas l’écriture des FK.

## FIX

`depotSaisiePatchValidationRules` : si éligible compta **et** destination
≠ `PROJET` → règles comptables #347. Si `PROJET` → règles brouillon
(`analytics_id` / `mode_reglement` / `compte_bancaire_id` nullable).

Défense : `depotDraftSaisieComptabilisationValidationRules` laisse
`analytics_id` nullable si PROJET (au cas où ce jeu est appelé directement).

Destination lue depuis le request, sinon `ocr_raw.saisie.destination`.
`ComptabilisationController` inchangé (délègue déjà le PATCH).

Aucun `.vue`. Le front dépôt n’exige analytics que si `comptabilisationMode`
(inchangé). `cloturerSiValidationEnAttente` (#1489) et helper #1513 intacts.

## SIGNALEMENT AVAL (non traité)

Étape 5 CLASSID à la comptabilisation. La page Comptabilisation exige
encore analytics côté client (`validateComptabilisationChampsObligatoires`).
1821 / 1817 : reprise manuelle des FK (#1513), pas ce lot.

## JOURNAL

Aucune entrée (correctif : Enregistrer redevient possible).

## DÉPLOIEMENT-TEST

    git pull origin main
    php artisan optimize:clear
    php artisan view:clear

Pas de migrate. Pas de route:clear. Pas de journal:sync. Pas de npm.

Robin : dépôt 1821, dest Projet, Enregistrer **sans** classe Sage.
Attendu : 200, pas `analytics_id required`. Ne pas script de reprise.

## LEÇON

Un durcissement « file comptable » calé sur PROGRAMMES/FG casse Projet
dès que `estEligibleComptabilisation()` est vrai : le front dépôt n’a
pas les champs compta, et la classe dossier est volontairement optionnelle.
Exception nominale sur la destination, pas un assouplissement global du #347.
