48 lines
2.4 KiB
Python
48 lines
2.4 KiB
Python
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))
|