Fix
This commit is contained in:
1 parent
d5792fb3e2
commit
4cd4cbce71
4 files changed
+79
-12
No files matched your search
@@ -3360,6 +3360,39 @@ if (!invPeValCols.includes('plus_value_latente')) {
|
||||
db.exec('ALTER TABLE investissements_pe_valorisations ADD COLUMN plus_value_latente REAL');
|
||||
}
|
||||
|
||||
// Migration : capital investissable (18/09/26, demande Olivier — bug remonté : le "capital non
|
||||
// déployé" d'une valorisation détaillée était calculé sur montant_investi (le montant souscrit
|
||||
// BRUT), alors qu'une partie a pu être immédiatement prélevée en frais "à la source" à la
|
||||
// souscription (cf. syncValorisationInitiale, InvestissementsPe.jsx) — le capital réellement
|
||||
// disponible à déployer est montant_investi − ces frais, jamais le montant brut. Colonne
|
||||
// nullable, calculée et fournie par le front à chaque sauvegarde du deal (POST/PUT
|
||||
// /investissements-pe) à partir des frais "à la source" saisis à l'étape "Frais" de la modale ;
|
||||
// NULL = deal sans frais à la source connus, auquel cas montant_investi fait référence partout
|
||||
// où capital_investissable est utilisé (cf. investissementsPe.js).
|
||||
const invPeCols = db.prepare('PRAGMA table_info(investissements_pe)').all().map(c => c.name);
|
||||
if (!invPeCols.includes('capital_investissable')) {
|
||||
db.exec('ALTER TABLE investissements_pe ADD COLUMN capital_investissable REAL');
|
||||
// Backfill : pour tout deal ayant déjà une "Valorisation initiale" auto-générée (créée par
|
||||
// syncValorisationInitiale AVANT cette migration, donc déjà nette des frais à la source), son
|
||||
// montant EST la définition de capital_investissable — évite d'obliger Olivier à rouvrir et
|
||||
// ré-enregistrer chaque deal existant pour que le calcul se corrige. Les libellés doivent
|
||||
// rester synchronisés avec AUTO_VAL_NOTE / AUTO_VAL_NOTE_LEGACY (InvestissementsPe.jsx).
|
||||
db.exec(`
|
||||
UPDATE investissements_pe
|
||||
SET capital_investissable = (
|
||||
SELECT v.valorisation_nette FROM investissements_pe_valorisations v
|
||||
WHERE v.investissement_pe_id = investissements_pe.id
|
||||
AND v.notes IN ('Valorisation initiale (souscription)', 'Valorisation initiale (frais de souscription)')
|
||||
ORDER BY v.date_valorisation ASC, v.id ASC LIMIT 1
|
||||
)
|
||||
WHERE EXISTS (
|
||||
SELECT 1 FROM investissements_pe_valorisations v
|
||||
WHERE v.investissement_pe_id = investissements_pe.id
|
||||
AND v.notes IN ('Valorisation initiale (souscription)', 'Valorisation initiale (frais de souscription)')
|
||||
)
|
||||
`);
|
||||
}
|
||||
|
||||
// Lien optionnel remboursement → deal PE (17/09/26) : une distribution (retour
|
||||
// de capital, plus-value) perçue sur un deal PE est saisie comme un
|
||||
// remboursement bonus_plateforme/interets_plateforme, comme demandé par
|
||||
|
||||
Reference in new issue
Block a user