This commit is contained in:
ocroguennec committed 2026-09-26 11:15:26 +02:00
1 parent 14cf4e5a19
commit 26197fc411
15 files changed
+1776 -29

No files matched your search

+34
View File
@@ -3490,4 +3490,38 @@ db.exec('CREATE INDEX IF NOT EXISTS idx_remb_invpe ON remboursements(investissem
}
}
// Chantier "Fiscalité PE" (20/09/26, demande Olivier) ───────────────────────────────────────
//
// 1) Troisième nature de distribution : 'plus_value' (plus-value réalisée, distribuée par le
// fonds au fil des cessions de son portefeuille sous-jacent — cf. échange avec Olivier :
// contrairement à un compte-titres classique où l'on "vend" soi-même sa position en un seul
// événement, un fonds PE (FCPR/FPCI) restitue le produit de ses propres cessions par
// distributions successives). Choix : rattacher la plus-value réalisée aux distributions
// existantes plutôt que de construire un événement "cession" séparé (option écartée) — colle
// au fonctionnement réel et réutilise le mécanisme déjà en place (montant saisi dans
// interets_bruts, comme 'interet_non_deploye', cf. RembFormModal.jsx / RemboursementsSimple.jsx).
// Aucune migration de schéma nécessaire : distribution_nature est un TEXT libre sans CHECK
// (cf. commentaire ci-dessus), donc 'plus_value' est déjà une valeur valide en base — seule
// la validation Zod (remboursements.js) et les libellés frontend doivent la reconnaître.
//
// 2) Pertes définitives PE : jusqu'ici investissements_pe.statut acceptait déjà la valeur
// 'perte_definitive' (cf. investissementsPe.js, Zod), mais rien ne permettait d'en tracer le
// montant/la date/le motif pour la fiscalité — contrairement au crowdlending
// (investissement_pertes, case 2TY). Table analogue, même structure, adaptée à
// investissements_pe (pas de notion "ancien_statut" en_retard/procedure côté PE : un deal PE
// passe directement de 'valide'/'cloture' à 'perte_definitive', jamais via un statut
// intermédiaire de recouvrement).
db.exec(`
CREATE TABLE IF NOT EXISTS investissement_pe_pertes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
investissement_pe_id INTEGER NOT NULL REFERENCES investissements_pe(id) ON DELETE CASCADE,
date_effet TEXT NOT NULL,
montant_perte REAL NOT NULL CHECK(montant_perte >= 0),
ancien_statut TEXT,
motif TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT (datetime('now'))
)
`);
db.exec('CREATE INDEX IF NOT EXISTS idx_pe_pertes_inv ON investissement_pe_pertes(investissement_pe_id)');
export default db;