---
name: project_compte_id_remboursements
description: FK compte_id sur investissements et remboursements — liaison aux comptes bancaires du détenteur
metadata: 
  node_type: memory
  type: project
  originSessionId: bf0e3a7b-9629-4ce8-81a7-96943a703cfc
---

Colonne `compte_id` (FK nullable → `comptes.id`, ON DELETE SET NULL) ajoutée sur `investissements` et `remboursements`.

**DB** : migrations dans `backend/src/db/index.js` (guard PRAGMA table_info).

**Backend `investissements.js`** : Schema Zod, GET (join comptes → compte_id/compte_nom/compte_type), POST INSERT, PUT UPDATE. Route `GET /investissements/comptes-par-investisseur/:investisseur_id` : liste les comptes d'un investisseur (pour les selects frontend).

**Backend `remboursements.js`** : Schema Zod, INSERT et UPDATE (nullifié si methode ≠ compte_courant). GET / retourne `compte_nom` via LEFT JOIN comptes. Route `POST /remboursements/backfill-comptes` : lie les remboursements sans compte_id à l'investissement ou au premier compte_courant du détenteur (accessible depuis MonCompte → Nettoyage).

**Cascade compte_id** : PUT investissements met à jour les remboursements avec `methode=compte_courant AND compte_id IS NOT NULL`. Les remboursements redirigés manuellement vers portefeuille sont protégés.

**Frontend — 4 formulaires mis à jour :**
- `Investissements.jsx` openEdit + openNew : `resolvedMethode` depuis la plateforme si méthode fixée
- `InvestissementDetail.jsx` openEdit investissement : idem
- `InvestissementDetail.jsx` formulaire remboursement : `comptesRembInvestisseur` chargé après déclaration useState (éviter TDZ), méthode toujours éditable (override possible vers portefeuille)
- `Remboursements.jsx` : comptes chargés au changement d'investissement_id, hérite `inv.compte_id` en priorité

**Règles UX :**
- Méthode dans formulaire remboursement = toujours éditable (pas de champ readOnly) — permet forçage hors cascade
- Auto-sélection : `inv.compte_id` en priorité, sinon premier compte de type `compte_courant`
- `resolvedMethode` dans openEdit : lire la methode de la plateforme si ≠ `choix_investisseur`

**Page Remboursements — colonne Versement :**
- Remplace colonne "Type" ; affiche nom du compte courant (avec tooltip) ou "Porte-monnaie" (grisé)
- Deux boutons icônes (porte-monnaie + compte-courant) dans le header du bloc pour filtrer ; dépendances useMemo incluses
- Corrections de solde masquées quand filtre porte-monnaie désactivé

**Why:** Permettre de tracer sur quel compte bancaire arrivent les remboursements, pour rapprochement bancaire futur.

**How to apply:** Tout nouveau formulaire affichant methode_remboursement doit suivre ce même pattern. Voir [[project_methode_remboursement_investissement]].
