This commit is contained in:
ocroguennec committed 2026-09-27 15:09:18 +02:00
1 parent 1e3994f17f
commit 624d32ff7c
17 files changed
+2192 -1

No files matched your search

+47
View File
@@ -0,0 +1,47 @@
path = "backend/src/db/index.js"
with open(path, "r", encoding="utf-8") as f:
content = f.read()
anchor = "\nexport default db;\n"
assert content.count(anchor) == 1, f"anchor count={content.count(anchor)}"
block = '''
// Extension du 29/09/26 (suite) — support "ETC" (demande Olivier, à partir d'une capture d'écran
// d'un contrat d'assurance-vie distinguant "+200 ETF & 22 ETC" parmi ses supports) : un Exchange
// Traded Commodity (ETC) est un instrument coté qui réplique le cours d'une matière première
// (or, pétrole...), proche d'un ETF dans sa mécanique de cotation mais sans statut UCITS/OPCVM —
// distinct du support "ETF / trackers" (fonds indiciels UCITS) et de "Matières premières / métaux
// précieux" (autre modalité d'exposition aux matières premières, ex. en unités de compte
// d'assurance-vie). Rattaché aux mêmes enveloppes que "Fonds monétaires" ci-dessus (menu de
// supports déjà large) ; PEA/PEA-PME exclus, comme en pratique un ETC matières premières
// physiques n'est pas éligible au PEA. Toujours exécuté (INSERT OR IGNORE, clés UNIQUE sur nom).
{
db.prepare("INSERT OR IGNORE INTO supports_referentiel (nom, description) VALUES (?, ?)").run(
'ETC (Exchange Traded Commodities)',
"Tracker coté sur une matière première (or, pétrole, panier de matières premières...) — proche de l'ETF dans sa mécanique de cotation, mais sans statut UCITS/OPCVM ; distinct du support « ETF / trackers » et de « Matières premières / métaux précieux »."
);
const getSuppRefIdEtc = db.prepare('SELECT id FROM supports_referentiel WHERE nom = ?');
const suppEtc = getSuppRefIdEtc.get('ETC (Exchange Traded Commodities)');
if (suppEtc) {
const getEnvRefIdEtc = db.prepare('SELECT id FROM enveloppes_referentiel WHERE nom = ?');
const linkEnvSuppEtc = db.prepare('INSERT OR IGNORE INTO enveloppes_supports_disponibles (enveloppe_id, support_id) VALUES (?, ?)');
for (const envNom of [
'Compte-titres ordinaire (CTO)', 'Assurance-vie multisupport', 'PER individuel',
'PER collectif / obligatoire (PERCOL, article 83)', 'Contrat de capitalisation',
'Assurance-vie luxembourgeoise',
]) {
const env = getEnvRefIdEtc.get(envNom);
if (env) linkEnvSuppEtc.run(env.id, suppEtc.id);
}
}
}
export default db;
'''
content = content.replace(anchor, block, 1)
with open(path, "w", encoding="utf-8") as f:
f.write(content)
print("Support ETC inserted OK, new length:", len(content))