From bce89d81124f06f5d97a5e75851c9b748d445e3a Mon Sep 17 00:00:00 2001 From: Olivier Date: Mon, 28 Sep 2026 08:24:16 +0200 Subject: [PATCH] Maj --- backend/src/db/index.js | 118 +++++++ backend/src/routes/comptes.js | 19 +- backend/src/routes/emprunts.js | 96 ++++++ backend/src/routes/enveloppesReferentiel.js | 23 +- .../src/routes/enveloppesReferentielPublic.js | 46 +++ backend/src/server.js | 4 + design/icones institutions/AMUN.PA.svg | 1 + design/icones institutions/AXA_Logo.svg.webp | Bin 0 -> 2102 bytes .../Abeille assurances.png | Bin 0 -> 31657 bytes .../allianz-logo-transparent-free-png.webp | Bin 0 -> 21166 bytes design/icones institutions/allianz.png | Bin 0 -> 38434 bytes design/icones institutions/nickel-logo.jpg | Bin 0 -> 27232 bytes design/icones institutions/traderepublic.webp | Bin 0 -> 1304 bytes design/icones institutions/wise.webp | Bin 0 -> 2470 bytes frontend/src/pages/AdminEnveloppes.jsx | 24 +- frontend/src/pages/Settings.jsx | 4 + .../src/pages/settings/ComptesSection.jsx | 51 ++- .../src/pages/settings/EmpruntsSection.jsx | 305 ++++++++++++++++++ 18 files changed, 663 insertions(+), 28 deletions(-) create mode 100644 backend/src/routes/emprunts.js create mode 100644 backend/src/routes/enveloppesReferentielPublic.js create mode 100644 design/icones institutions/AMUN.PA.svg create mode 100644 design/icones institutions/AXA_Logo.svg.webp create mode 100644 design/icones institutions/Abeille assurances.png create mode 100644 design/icones institutions/allianz-logo-transparent-free-png.webp create mode 100644 design/icones institutions/allianz.png create mode 100644 design/icones institutions/nickel-logo.jpg create mode 100644 design/icones institutions/traderepublic.webp create mode 100644 design/icones institutions/wise.webp create mode 100644 frontend/src/pages/settings/EmpruntsSection.jsx diff --git a/backend/src/db/index.js b/backend/src/db/index.js index a5de225..3a2c945 100644 --- a/backend/src/db/index.js +++ b/backend/src/db/index.js @@ -4086,4 +4086,122 @@ db.prepare(` // stade, la suppression est donc sans risque de perte de données utilisateur. db.prepare("DELETE FROM supports_referentiel WHERE nom = 'Gestion pilotée / mandat'").run(); + +// ── Migration : eligible_compte sur enveloppes_referentiel (Phase 3a, 28/09/26, demande +// Olivier — chantier "rattacher Mes comptes courants au référentiel") ──────────────────── +// Distingue les enveloppes qui ont le profil d'un vrai "compte" (banque/courtier/assureur — +// Livret A, PEA, Assurance-vie, CTO, Compte crypto exchange...) de celles qui n'en ont pas +// (immobilier physique, objets de collection, wallets crypto auto-conservés, placements via +// plateforme déjà couverts par le mécanisme plateformes_referentiel...). Sert à filtrer le +// sélecteur "Enveloppe" de Paramètres > Mes comptes (cf. comptes.enveloppe_id ci-dessous) — +// cadrage validé par Olivier via AskUserQuestion (28/09/26) : sous-ensemble "compte financier", +// pas tout le référentiel. Colonne booléenne plutôt que catégorie existante réutilisée : la +// classification ne suit aucune des 15 catégories actuelles (ex. "Actifs numériques" contient +// à la fois Compte crypto exchange, éligible, et les wallets auto-conservés, non éligibles). +{ + const cols = db.prepare('PRAGMA table_info(enveloppes_referentiel)').all().map(c => c.name); + if (!cols.includes('eligible_compte')) { + db.exec("ALTER TABLE enveloppes_referentiel ADD COLUMN eligible_compte INTEGER NOT NULL DEFAULT 0"); + // Backfill exécuté une seule fois (dans cette même garde de colonne) : classification + // initiale par nom, jamais retouchée ensuite même si l'admin édite ce flag à la main. + const ELIGIBLE_COMPTE_NOMS = [ + // Comptes courants + 'Compte courant non rémunéré', 'Compte courant rémunéré', 'Compte rémunéré nouvelle génération (fintech)', + // Épargne réglementée + 'Livret A', 'LDDS', 'LEP', 'Livret Jeune', 'CEL', 'PEL', + // Épargne bancaire non réglementée + 'Livret bancaire non réglementé', 'Compte à terme (CAT)', + // Assurance-vie et assimilés + 'Assurance-vie monosupport (fonds euros)', 'Assurance-vie multisupport', + 'Contrat de capitalisation', 'Assurance-vie luxembourgeoise', + // Épargne retraite + 'PER individuel', 'PER collectif / obligatoire (PERCOL, article 83)', + // Épargne salariale + 'PEE', + // Enveloppes titres / marchés financiers + 'PEA', 'PEA-PME', 'Compte-titres ordinaire (CTO)', + // Actifs numériques — seul le compte sur exchange a une institution (l'exchange + // lui-même) ; les wallets auto-conservés/conservés par un tiers restent hors périmètre. + 'Compte crypto (exchange)', + // Épargne solidaire + 'Livret solidaire', + ]; + const setEligible = db.prepare('UPDATE enveloppes_referentiel SET eligible_compte = 1 WHERE nom = ?'); + db.transaction(() => { for (const nom of ELIGIBLE_COMPTE_NOMS) setEligible.run(nom); })(); + } +} + +// ── Migration : enveloppe_id sur comptes (Phase 3a, 28/09/26, demande Olivier) ──────────── +// Rattache un compte au référentiel enveloppes_referentiel — nullable, non-destructif, sur le +// même principe que comptes.institution_id (Phase 2, cf. plan de déploiement Institutions +// financières) : le champ `type` existant (compte_courant/pea_pme) reste en base tel quel et +// continue de piloter la logique de remboursement/frais déjà en place (de nombreux écrans +// investissement/remboursement font comptes.find(c => c.type === 'compte_courant') pour +// proposer un compte de règlement par défaut) — enveloppe_id est un enrichissement PUREMENT +// descriptif, ajouté à côté du champ type, jamais en remplacement, pour ne rien casser de cette +// logique existante. Restreint aux enveloppes "compte financier" (eligible_compte = 1) côté +// sélecteur frontend uniquement — pas de contrainte CHECK en base, pour rester simple. +{ + const cols = db.prepare('PRAGMA table_info(comptes)').all().map(c => c.name); + if (!cols.includes('enveloppe_id')) { + db.exec('ALTER TABLE comptes ADD COLUMN enveloppe_id INTEGER REFERENCES enveloppes_referentiel(id) ON DELETE SET NULL'); + } +} + +// ── Extension du 28/09/26 (Phase 3a) — catégorie "Gestion de trésorerie" + Spiko / Regular +// Finance ────────────────────────────────────────────────────────────────────────────────── +// Identifiés pendant le chantier "Référentiel Enveloppes & Supports d'épargne" (cf. "Extension +// du 29/09/26 (suite) — support Fonds monétaires" dans le plan de déploiement dédié) : Spiko et +// Regular Finance ne sont pas des enveloppes mais des plateformes/institutions donnant accès à +// un fonds monétaire (OPCVM monétaire, y compris tokenisé sur blockchain chez Spiko) — elles ont +// vocation à rejoindre institutions_referentiel, pas enveloppes_referentiel. Toujours exécuté, +// INSERT OR IGNORE sur des clés UNIQUE(nom) — s'ajoute sans jamais dupliquer ni écraser le +// référentiel déjà seedé (Phase 1), même principe que les extensions "EXTRA" du chantier +// enveloppes. +{ + db.prepare('INSERT OR IGNORE INTO categories_institutions (nom) VALUES (?)').run('Gestion de trésorerie'); + const insInst = db.prepare('INSERT OR IGNORE INTO institutions_referentiel (nom) VALUES (?)'); + const getInst = db.prepare('SELECT id FROM institutions_referentiel WHERE nom = ?'); + const getCat = db.prepare('SELECT id FROM categories_institutions WHERE nom = ?'); + const linkCat = db.prepare('INSERT OR IGNORE INTO referentiel_categories_institutions (institution_id, categorie_id) VALUES (?, ?)'); + db.transaction(() => { + for (const nom of ['Spiko', 'Regular Finance']) { + insInst.run(nom); + const inst = getInst.get(nom); + const cat = getCat.get('Gestion de trésorerie'); + if (inst && cat) linkCat.run(inst.id, cat.id); + } + })(); +} + +// ── Chantier "Passif — Emprunts" (Phase 3c, 28/09/26, demande Olivier) ─────────────────────── +// Objet séparé de enveloppes_referentiel : un emprunt est structurellement différent d'un actif +// (le capital restant dû DIMINUE avec le temps, porte un taux et un échéancier fixés à la +// souscription) — cf. "Réflexion prospective" du plan de déploiement Enveloppes & Supports (doc +// projet), point 3 ("un passif, pas un actif"). Table dédiée plutôt qu'un champ sur comptes, +// pour la même raison qu'un compte n'est jamais une "enveloppe" : structure et cycle de vie +// différents (un compte se crédite/débite librement, un emprunt s'amortit). Rattachement +// institution optionnel (établissement prêteur) via institutions_referentiel, sur le même +// principe que comptes.institution_id — nullable, non contraignant. +db.exec(` + CREATE TABLE IF NOT EXISTS emprunts ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + investisseur_id INTEGER REFERENCES investisseurs(id) ON DELETE SET NULL, + institution_id INTEGER REFERENCES institutions_referentiel(id) ON DELETE SET NULL, + nom TEXT NOT NULL, + montant_emprunte REAL NOT NULL, + capital_restant_du REAL NOT NULL, + taux_nominal REAL, + date_debut TEXT, + duree_mois INTEGER, + mensualite REAL, + notes TEXT, + created_at TEXT NOT NULL DEFAULT (datetime('now')), + updated_at TEXT + ) +`); +db.exec('CREATE INDEX IF NOT EXISTS idx_emprunts_user ON emprunts(user_id)'); +db.exec('CREATE INDEX IF NOT EXISTS idx_emprunts_inv ON emprunts(investisseur_id)'); + export default db; diff --git a/backend/src/routes/comptes.js b/backend/src/routes/comptes.js index a0614a8..fc1bebc 100644 --- a/backend/src/routes/comptes.js +++ b/backend/src/routes/comptes.js @@ -11,19 +11,26 @@ const Schema = z.object({ investisseur_id: z.number().int().positive().nullable().optional(), banque: z.string().nullable().optional(), institution_id: z.number().int().positive().nullable().optional(), + // Phase 3a (28/09/26) — rattachement au référentiel enveloppes_referentiel, purement + // descriptif et non-destructif (cf. commentaire de migration dans db/index.js) : n'a aucune + // incidence sur `type`, qui reste le champ utilisé par la logique de remboursement/frais + // existante. Non contraint à eligible_compte=1 côté Zod — le filtrage se fait côté frontend. + enveloppe_id: z.number().int().positive().nullable().optional(), exoneration_fiscale: z.enum(['aucune', 'pfnl_5ans']).default('aucune'), }); router.get('/', (req, res) => { const rows = db.prepare(` - SELECT c.id, c.nom, c.type, c.banque, c.institution_id, c.exoneration_fiscale, c.investisseur_id, c.created_at, + SELECT c.id, c.nom, c.type, c.banque, c.institution_id, c.enveloppe_id, c.exoneration_fiscale, c.investisseur_id, c.created_at, inv.nom AS investisseur_nom, inv.prenom AS investisseur_prenom, inv.type AS investisseur_type, inv.type_fiscal AS investisseur_type_fiscal, ir.nom AS institution_nom, ir.domiciliation AS institution_domiciliation, - ir.logo_filename AS institution_logo_filename, ir.icone_filename AS institution_icone_filename + ir.logo_filename AS institution_logo_filename, ir.icone_filename AS institution_icone_filename, + er.nom AS enveloppe_nom FROM comptes c LEFT JOIN investisseurs inv ON inv.id = c.investisseur_id LEFT JOIN institutions_referentiel ir ON ir.id = c.institution_id + LEFT JOIN enveloppes_referentiel er ON er.id = c.enveloppe_id WHERE c.user_id = ? ORDER BY c.nom `).all(req.user.id); @@ -34,8 +41,8 @@ router.post('/', (req, res, next) => { try { const body = Schema.parse(req.body); const r = db.prepare( - 'INSERT INTO comptes (user_id, nom, type, banque, institution_id, investisseur_id, exoneration_fiscale) VALUES (?,?,?,?,?,?,?)' - ).run(req.user.id, body.nom, body.type, body.banque || null, body.institution_id ?? null, body.investisseur_id ?? null, body.exoneration_fiscale ?? 'aucune'); + 'INSERT INTO comptes (user_id, nom, type, banque, institution_id, enveloppe_id, investisseur_id, exoneration_fiscale) VALUES (?,?,?,?,?,?,?,?)' + ).run(req.user.id, body.nom, body.type, body.banque || null, body.institution_id ?? null, body.enveloppe_id ?? null, body.investisseur_id ?? null, body.exoneration_fiscale ?? 'aucune'); res.status(201).json({ id: r.lastInsertRowid, ...body }); } catch (e) { next(e); } }); @@ -44,8 +51,8 @@ router.put('/:id', (req, res, next) => { try { const body = Schema.parse(req.body); const r = db.prepare( - `UPDATE comptes SET nom=?, type=?, banque=?, institution_id=?, investisseur_id=?, exoneration_fiscale=?, updated_at=datetime('now') WHERE id=? AND user_id=?` - ).run(body.nom, body.type, body.banque || null, body.institution_id ?? null, body.investisseur_id ?? null, body.exoneration_fiscale ?? 'aucune', req.params.id, req.user.id); + `UPDATE comptes SET nom=?, type=?, banque=?, institution_id=?, enveloppe_id=?, investisseur_id=?, exoneration_fiscale=?, updated_at=datetime('now') WHERE id=? AND user_id=?` + ).run(body.nom, body.type, body.banque || null, body.institution_id ?? null, body.enveloppe_id ?? null, body.investisseur_id ?? null, body.exoneration_fiscale ?? 'aucune', req.params.id, req.user.id); if (r.changes === 0) throw new HttpError(404, 'Not found'); res.json({ id: Number(req.params.id), ...body }); } catch (e) { next(e); } diff --git a/backend/src/routes/emprunts.js b/backend/src/routes/emprunts.js new file mode 100644 index 0000000..b89aa1d --- /dev/null +++ b/backend/src/routes/emprunts.js @@ -0,0 +1,96 @@ +import { Router } from 'express'; +import { z } from 'zod'; +import db from '../db/index.js'; +import { HttpError } from '../middleware/errorHandler.js'; + +/** + * routes/emprunts.js — Passif patrimonial (Phase 3c, 28/09/26, demande Olivier). Objet séparé + * de comptes/enveloppes_referentiel : un emprunt est structurellement différent d'un actif (le + * capital restant dû diminue avec le temps, porte un taux et un échéancier fixés à la + * souscription) — cf. "Réflexion prospective" du plan de déploiement Enveloppes & Supports (doc + * projet), point 3. Mêmes conventions que comptes.js : scope par user_id, détenteur + * (investisseur_id) et établissement prêteur (institution_id) optionnels et nullables. + */ + +const router = Router(); + +const Schema = z.object({ + nom: z.string().min(1), + investisseur_id: z.number().int().positive().nullable().optional(), + institution_id: z.number().int().positive().nullable().optional(), + montant_emprunte: z.number().positive(), + capital_restant_du: z.number().nonnegative(), + taux_nominal: z.number().nullable().optional(), + date_debut: z.string().nullable().optional(), + duree_mois: z.number().int().positive().nullable().optional(), + mensualite: z.number().nullable().optional(), + notes: z.string().nullable().optional(), +}); + +router.get('/', (req, res) => { + const rows = db.prepare(` + SELECT e.id, e.nom, e.investisseur_id, e.institution_id, e.montant_emprunte, e.capital_restant_du, + e.taux_nominal, e.date_debut, e.duree_mois, e.mensualite, e.notes, e.created_at, + inv.nom AS investisseur_nom, inv.prenom AS investisseur_prenom, + inv.type AS investisseur_type, inv.type_fiscal AS investisseur_type_fiscal, + ir.nom AS institution_nom, ir.domiciliation AS institution_domiciliation, + ir.logo_filename AS institution_logo_filename, ir.icone_filename AS institution_icone_filename + FROM emprunts e + LEFT JOIN investisseurs inv ON inv.id = e.investisseur_id + LEFT JOIN institutions_referentiel ir ON ir.id = e.institution_id + WHERE e.user_id = ? + ORDER BY e.nom + `).all(req.user.id); + res.json(rows); +}); + +router.post('/', (req, res, next) => { + try { + const body = Schema.parse(req.body); + if (body.capital_restant_du > body.montant_emprunte) { + throw new HttpError(400, 'Le capital restant dû ne peut pas dépasser le montant emprunté'); + } + const r = db.prepare(` + INSERT INTO emprunts (user_id, nom, investisseur_id, institution_id, montant_emprunte, capital_restant_du, taux_nominal, date_debut, duree_mois, mensualite, notes) + VALUES (?,?,?,?,?,?,?,?,?,?,?) + `).run( + req.user.id, body.nom, body.investisseur_id ?? null, body.institution_id ?? null, + body.montant_emprunte, body.capital_restant_du, body.taux_nominal ?? null, + body.date_debut || null, body.duree_mois ?? null, body.mensualite ?? null, body.notes || null, + ); + res.status(201).json({ id: r.lastInsertRowid, ...body }); + } catch (e) { next(e); } +}); + +router.put('/:id', (req, res, next) => { + try { + const body = Schema.parse(req.body); + if (body.capital_restant_du > body.montant_emprunte) { + throw new HttpError(400, 'Le capital restant dû ne peut pas dépasser le montant emprunté'); + } + const r = db.prepare(` + UPDATE emprunts + SET nom=?, investisseur_id=?, institution_id=?, montant_emprunte=?, capital_restant_du=?, + taux_nominal=?, date_debut=?, duree_mois=?, mensualite=?, notes=?, updated_at=datetime('now') + WHERE id=? AND user_id=? + `).run( + body.nom, body.investisseur_id ?? null, body.institution_id ?? null, + body.montant_emprunte, body.capital_restant_du, body.taux_nominal ?? null, + body.date_debut || null, body.duree_mois ?? null, body.mensualite ?? null, body.notes || null, + req.params.id, req.user.id, + ); + if (r.changes === 0) throw new HttpError(404, 'Not found'); + res.json({ id: Number(req.params.id), ...body }); + } catch (e) { next(e); } +}); + +router.delete('/:id', (req, res, next) => { + try { + const r = db.prepare('DELETE FROM emprunts WHERE id=? AND user_id=?') + .run(req.params.id, req.user.id); + if (r.changes === 0) throw new HttpError(404, 'Not found'); + res.status(204).end(); + } catch (e) { next(e); } +}); + +export default router; diff --git a/backend/src/routes/enveloppesReferentiel.js b/backend/src/routes/enveloppesReferentiel.js index 73d78c0..52a0e84 100644 --- a/backend/src/routes/enveloppesReferentiel.js +++ b/backend/src/routes/enveloppesReferentiel.js @@ -25,12 +25,13 @@ const router = Router(); // Toutes ces routes sont montées sous requireAdmin dans server.js const Schema = z.object({ - nom: z.string().min(1).max(200), - description: z.string().nullable().optional(), - plafond_eur: z.number().positive().nullable().optional(), - regime_fiscal: z.string().nullable().optional(), - categories_ids: z.array(z.number().int()).optional().default([]), - supports_ids: z.array(z.number().int()).optional().default([]), + nom: z.string().min(1).max(200), + description: z.string().nullable().optional(), + plafond_eur: z.number().positive().nullable().optional(), + regime_fiscal: z.string().nullable().optional(), + eligible_compte: z.boolean().optional().default(false), + categories_ids: z.array(z.number().int()).optional().default([]), + supports_ids: z.array(z.number().int()).optional().default([]), }); // ── Helpers ──────────────────────────────────────────────────────────────── @@ -114,9 +115,9 @@ router.post('/', (req, res, next) => { if (existing) throw new HttpError(409, `Une enveloppe "${data.nom}" existe déjà`); const r = db.prepare(` - INSERT INTO enveloppes_referentiel (nom, description, plafond_eur, regime_fiscal, updated_at) - VALUES (?,?,?,?, datetime('now')) - `).run(data.nom, data.description || null, data.plafond_eur ?? null, data.regime_fiscal || null); + INSERT INTO enveloppes_referentiel (nom, description, plafond_eur, regime_fiscal, eligible_compte, updated_at) + VALUES (?,?,?,?,?, datetime('now')) + `).run(data.nom, data.description || null, data.plafond_eur ?? null, data.regime_fiscal || null, data.eligible_compte ? 1 : 0); const enveloppeId = r.lastInsertRowid; db.transaction(() => { @@ -144,9 +145,9 @@ router.put('/:id', (req, res, next) => { db.prepare(` UPDATE enveloppes_referentiel - SET nom=?, description=?, plafond_eur=?, regime_fiscal=?, updated_at=datetime('now') + SET nom=?, description=?, plafond_eur=?, regime_fiscal=?, eligible_compte=?, updated_at=datetime('now') WHERE id=? - `).run(data.nom, data.description || null, data.plafond_eur ?? null, data.regime_fiscal || null, row.id); + `).run(data.nom, data.description || null, data.plafond_eur ?? null, data.regime_fiscal || null, data.eligible_compte ? 1 : 0, row.id); db.transaction(() => { saveCategories(row.id, data.categories_ids); diff --git a/backend/src/routes/enveloppesReferentielPublic.js b/backend/src/routes/enveloppesReferentielPublic.js new file mode 100644 index 0000000..6566d65 --- /dev/null +++ b/backend/src/routes/enveloppesReferentielPublic.js @@ -0,0 +1,46 @@ +import { Router } from 'express'; +import db from '../db/index.js'; + +/** + * routes/enveloppesReferentielPublic.js — lecture seule du référentiel "Enveloppes & Supports + * d'épargne" pour tous les utilisateurs authentifiés (pas requireAdmin), sur le modèle de + * institutionsReferentielPublic.js. Catalogue transverse : on expose ici une LISTE complète + * (avec catégories, pour regroupement par familles côté frontend), utilisée par le sélecteur + * "Enveloppe" de Paramètres > Mes comptes (Phase 3a, cf. plan de déploiement Enveloppes & + * Supports). Le champ `eligible_compte` permet au frontend de ne proposer, dans ce sélecteur, + * que le sous-ensemble "compte financier" — cadrage validé par Olivier via AskUserQuestion + * (28/09/26) — sans empêcher un futur écran (Phase 3b) de consommer la liste complète. + */ + +const router = Router(); +// Monté sous requireAuth (sans requireAdmin) — lecture seule. + +function attachCategories(rows) { + if (rows.length === 0) return rows; + const ids = rows.map(r => r.id); + const links = db.prepare(` + SELECT rc.enveloppe_id, c.id, c.nom + FROM referentiel_categories_enveloppes rc + JOIN categories_enveloppes c ON c.id = rc.categorie_id + WHERE rc.enveloppe_id IN (${ids.map(() => '?').join(',')}) + ORDER BY c.nom + `).all(...ids); + const map = {}; + for (const l of links) { + if (!map[l.enveloppe_id]) map[l.enveloppe_id] = []; + map[l.enveloppe_id].push({ id: l.id, nom: l.nom }); + } + return rows.map(r => ({ ...r, categories: map[r.id] || [] })); +} + +/* GET /api/enveloppes-referentiel-public — liste complète (lecture seule) */ +router.get('/', (_req, res) => { + const rows = db.prepare(` + SELECT id, nom, eligible_compte + FROM enveloppes_referentiel + ORDER BY nom + `).all(); + res.json(attachCategories(rows)); +}); + +export default router; diff --git a/backend/src/server.js b/backend/src/server.js index c35dbff..71e49fc 100644 --- a/backend/src/server.js +++ b/backend/src/server.js @@ -54,7 +54,9 @@ import institutionsReferentielRouter from './routes/institutionsReferentiel.js'; import institutionsReferentielPublicRouter from './routes/institutionsReferentielPublic.js'; import refCategoriesInstitutionsRouter from './routes/ref-categories-institutions.js'; import enveloppesReferentielRouter from './routes/enveloppesReferentiel.js'; +import enveloppesReferentielPublicRouter from './routes/enveloppesReferentielPublic.js'; import supportsReferentielRouter from './routes/supportsReferentiel.js'; +import empruntsRouter from './routes/emprunts.js'; import refCategoriesEnveloppesRouter from './routes/ref-categories-enveloppes.js'; import refCategoriesRouter from './routes/ref-categories.js'; import refSecteursRouter from './routes/ref-secteurs.js'; @@ -161,6 +163,7 @@ app.use('/api/reinvestissements', requireAuth, reinvestissementsRouter); app.use('/api/frais-operations', requireAuth, fraisOperationsRouter); app.use('/api/corrections', requireAuth, correctionsRouter); app.use('/api/comptes', requireAuth, comptesRouter); +app.use('/api/emprunts', requireAuth, empruntsRouter); app.use('/api/preferences', requireAuth, preferencesRouter); app.use('/api/icons', requireAuth, iconsRouter); app.use('/api/admin', requireAuth, requireAdmin, adminRouter); @@ -183,6 +186,7 @@ app.use('/api/ref-categories-institutions', requireAuth, requireAdmin, refCateg // catalogue admin transverse aux workspaces, catalogue seul pour l'instant (pas de // rattachement à l'existant), cf. enveloppesReferentiel.js. app.use('/api/enveloppes-referentiel', requireAuth, requireAdmin, enveloppesReferentielRouter); +app.use('/api/enveloppes-referentiel-public', requireAuth, enveloppesReferentielPublicRouter); app.use('/api/supports-referentiel', requireAuth, requireAdmin, supportsReferentielRouter); app.use('/api/ref-categories-enveloppes', requireAuth, requireAdmin, refCategoriesEnveloppesRouter); app.use('/api/ref-categories', requireAuth, requireAdmin, refCategoriesRouter); diff --git a/design/icones institutions/AMUN.PA.svg b/design/icones institutions/AMUN.PA.svg new file mode 100644 index 0000000..9d6aa1d --- /dev/null +++ b/design/icones institutions/AMUN.PA.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/design/icones institutions/AXA_Logo.svg.webp b/design/icones institutions/AXA_Logo.svg.webp new file mode 100644 index 0000000000000000000000000000000000000000..421381912b884cfd252cc4ed5db6594514a005ca GIT binary patch literal 2102 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ʕwuOJ*2_7Rr7^7e{bs+byp&%BLlm@pII?? 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 literal 0 HcmV?d00001 diff --git a/design/icones institutions/allianz-logo-transparent-free-png.webp b/design/icones institutions/allianz-logo-transparent-free-png.webp new file mode 100644 index 0000000000000000000000000000000000000000..e779ba3006d0023e80c9b8398cf317415170e37c GIT binary patch literal 21166 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⁡L;zFyZL`)vmgmfroHgN#qc(AUDPa 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
    PuS@tg)r%E4X(W9$S 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 literal 0 HcmV?d00001 diff --git a/design/icones institutions/nickel-logo.jpg b/design/icones institutions/nickel-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c7ff61373f252fa11b68de03fa04fbdc4fd33af6 GIT binary patch literal 27232 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 r|8zs|CzFntpGud{rL#hR%9(L0O(a@+p`gs)10 literal 0 HcmV?d00001 diff --git a/design/icones institutions/traderepublic.webp b/design/icones institutions/traderepublic.webp new file mode 100644 index 0000000000000000000000000000000000000000..82e7249c31d102a1d8369ecb7d092be153752628 GIT binary patch literal 1304 zcmWIYbaNA6Wnc(*bqWXzu!!JdU|`??;{RX-6j6|4VPLqR$}pEvi-D1W(Jt3)wx^1+ z(n94xkAw!^&dj`rrGe6)^FN1wx_9CKq&lO|U*^qz?EhS@rGCzRu7AdVi{IL(hF{^n z9N$@A^_cn4d9In)>SzA-`oj2S`iAMB?!T&Ed;cDDSB!uVlY<8*qk;-c!vtJRc3rrkqW3)iJ)hYf z!(&Bud1si{zvnaN6JRtgnYc#$d*;(Z&3}`w969(_u7a;&U&rY*C*uZ(U6JcgH{o_R z!w!aj{}($jFl_x`t&pLx+wv`w$EL^ezUwzx3)=aVl=jHG49LH*2qf7%;tHw!0Q_4?&uw&K~>C4bFVDB&Q~-4YQlQoSaFVP zPbx#cWO;4q&9aHSxcQXl-V@fZFPyF{{i9^M#=OJe%f0r34G&EpESb5lhRH;9@}97L zT+EJ98G<*ag_n46p3$5?K}7nzA3G+kI_r_5H=~?RJ;R zHl~}ZBuW^PY>T}KE?EAO4!W5%UOG+8xqx5Nk13e zc38K=<>$(Zd;djLjQeG}SY7HpUs_!=sxiKvkR$l;ib3(~pVk}Y0_VQ`J6%5O`Z~7> zQnHc%|2u4(V*P*JbD520t`&O@E&SO%P5vYM*6BZ@Mzm{iyv% z8OPn05Qe@}TN5{_JLD_t{$$erZJqypZ}(+)-zDPjcciT;vOX?+ESAA*;qQyUj21zDrMbb^h@Dys7|&B;+c)%-4!!u-e%yRx+Jyz zeRtot?=E#m%|CZ966(4hw8GYHYfqNe^@LY#hM$tU_MhMj*lB-aZJ%SJ_Yu$J`phoZ zlZhJL7tgG|W9Gc@#XG?rCofL;^i`zQA@Ml(`2;PG^-(h<->h%s&rKDbdoA@(`J)Yj z5z8L!is(Fd_~?@ja{hAOD`fA!dY#4C-=FnwVSPfC+)1$$`=s62Z2M0=XWPE;Y69cg znRk|46Wh~1zeQNBdG6WG<#zu9PV2=?m))jawXnnK{f(+wj^U607r&GI9lq!)SH)Lg z+6DpF2v4^&Ai5$mje)__Qwv;zurmlTG6RbY1~8UlWChbnK)y7TodslTK-Dk-*@lcv z3~WHU2#AH55PCD)S-^TLfZ`zF0mLA4VRTZOLzy8+=LB{JU}42zU}R{(I1$2T1e(LJ e04i>1V8FNlV(x!n0mrleVlK!qW+XPy2nGPdpc452 literal 0 HcmV?d00001 diff --git a/design/icones institutions/wise.webp b/design/icones institutions/wise.webp new file mode 100644 index 0000000000000000000000000000000000000000..b30e191d917764b3512b18e4c58dcc7472a4c2c7 GIT binary patch literal 2470 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 literal 0 HcmV?d00001 diff --git a/frontend/src/pages/AdminEnveloppes.jsx b/frontend/src/pages/AdminEnveloppes.jsx index 087d58b..1708e2e 100644 --- a/frontend/src/pages/AdminEnveloppes.jsx +++ b/frontend/src/pages/AdminEnveloppes.jsx @@ -64,6 +64,7 @@ function EnveloppeModal({ row, onClose, onSaved }) { description: row?.description || '', plafond_eur: row?.plafond_eur != null ? String(row.plafond_eur) : '', regime_fiscal: row?.regime_fiscal || '', + eligible_compte: !!row?.eligible_compte, categories_ids: (row?.categories || []).map(c => c.id), supports_ids: (row?.supports || []).map(s => s.id), }); @@ -87,6 +88,7 @@ function EnveloppeModal({ row, onClose, onSaved }) { description: form.description.trim() || null, plafond_eur: plafond, regime_fiscal: form.regime_fiscal.trim() || null, + eligible_compte: !!form.eligible_compte, categories_ids: form.categories_ids || [], supports_ids: form.supports_ids || [], }; @@ -128,6 +130,18 @@ function EnveloppeModal({ row, onClose, onSaved }) { set('regime_fiscal', e.target.value)} placeholder="Ex : Exonéré IR/PS, Flat tax 30%…" /> +
    + +

    + À cocher pour les enveloppes qui ont le profil d'un vrai compte financier (banque, + courtier, assureur…) — pas pour les actifs détenus en direct (immobilier, crypto + auto-conservée, objets de collection…). +

    +
    @@ -302,7 +316,15 @@ function EnveloppesSection() { onMouseEnter={e => e.currentTarget.style.background = 'var(--surface-2)'} onMouseLeave={e => e.currentTarget.style.background = 'none'}> -
    {row.nom}
    +
    + {row.nom} + {!!row.eligible_compte && ( + + Compte + + )} +
    {row.description &&
    {row.description}
    } {eur(row.plafond_eur)} diff --git a/frontend/src/pages/Settings.jsx b/frontend/src/pages/Settings.jsx index 43e913a..3abee7b 100644 --- a/frontend/src/pages/Settings.jsx +++ b/frontend/src/pages/Settings.jsx @@ -5,6 +5,7 @@ import PlateformesSection from './settings/PlateformesSection.jsx'; import CategoriesInvSection from './settings/CategoriesInvSection.jsx'; import SecteursInvSection from './settings/SecteursInvSection.jsx'; import ComptesSection from './settings/ComptesSection.jsx'; +import EmpruntsSection from './settings/EmpruntsSection.jsx'; import MaFiscaliteSection from './settings/MaFiscaliteSection.jsx'; import ObjectifsSection from './settings/ObjectifsSection.jsx'; import DataCleanupSection from './settings/DataCleanupSection.jsx'; @@ -16,6 +17,7 @@ function IconFamily() { return ; } function IconServer() { return ; } function IconWallet() { return ; } +function IconLoan() { return ; } function IconTag() { return ; } function IconLayers() { return ; } function IconGrid() { return ; } @@ -44,6 +46,7 @@ const NAV = [ { id: 'membres', label: 'Mes membres & entreprises', icon: }, { id: 'plateformes', label: 'Mes plateformes', icon: }, { id: 'comptes', label: 'Mes comptes courants', icon: }, + { id: 'emprunts', label: 'Mes emprunts', icon: }, { id: 'ma-fiscalite', label: 'Ma fiscalité', icon: }, { id: 'objectifs', label: 'Fixation des objectifs', icon: }, ], @@ -97,6 +100,7 @@ export default function Settings() { {section === 'membres' && } {section === 'plateformes' && } {section === 'comptes' && } + {section === 'emprunts' && } {section === 'ma-fiscalite' && } {section === 'objectifs' && } {section === 'categories-inv' && } diff --git a/frontend/src/pages/settings/ComptesSection.jsx b/frontend/src/pages/settings/ComptesSection.jsx index 069b7f3..d5daa5c 100644 --- a/frontend/src/pages/settings/ComptesSection.jsx +++ b/frontend/src/pages/settings/ComptesSection.jsx @@ -14,7 +14,7 @@ const TYPE_COMPTE_LABELS = { pea_pme: 'PEA-PME', }; -const EMPTY_COMPTE = { nom: '', type: 'compte_courant', investisseur_id: null, institution_id: null, banque: '', exoneration_fiscale: 'aucune' }; +const EMPTY_COMPTE = { nom: '', type: 'compte_courant', investisseur_id: null, institution_id: null, banque: '', enveloppe_id: null, exoneration_fiscale: 'aucune' }; // Référentiel institutions financières (Phase 2, 26/09/26) — logos servis au même endroit // que ceux des plateformes (/api/logos/:filename), cf. institutionsReferentiel.js. @@ -28,8 +28,15 @@ function compteInvestisseur(c) { return { id: c.investisseur_id, nom: c.investisseur_nom, prenom: c.investisseur_prenom, type: c.investisseur_type, type_fiscal: c.investisseur_type_fiscal }; } -function CompteFormFields({ state, setter, investisseurs, institutions }) { +function CompteFormFields({ state, setter, investisseurs, institutions, enveloppes }) { const isAutre = !state.institution_id; + // Regroupement par catégorie pour le setter({ ...state, enveloppe_id: e.target.value ? Number(e.target.value) : null })}> + + {Object.entries(enveloppesParCategorie).map(([cat, envs]) => ( + + {envs.map(env => )} + + ))} + +

    + Rattachement au référentiel (Admin > Enveloppes & supports) — informatif, sans effet sur le champ Type ci-dessus. +

    +
    setter({ ...state, nom: e.target.value })} + placeholder="ex. Crédit immobilier résidence principale" /> +
    +
    +
    + + setter({ ...state, montant_emprunte: e.target.value })} placeholder="ex. 250000" /> +
    +
    + + setter({ ...state, capital_restant_du: e.target.value })} placeholder="ex. 230000" /> +
    +
    +
    +
    + + setter({ ...state, taux_nominal: e.target.value })} placeholder="ex. 3.2" /> +
    +
    + + setter({ ...state, date_debut: e.target.value })} /> +
    +
    + + setter({ ...state, duree_mois: e.target.value })} placeholder="ex. 240" /> +
    +
    +
    +
    + + setter({ ...state, mensualite: e.target.value })} placeholder="ex. 1400" /> +
    +
    + + +
    +
    +
    + + +
    +
    + +