fix
This commit is contained in:
1 parent
b18ffc63ee
commit
add66a9310
3 files changed
+20
-5
No files matched your search
@@ -842,20 +842,32 @@ router.post('/exports/:filename/restore', async (req, res, next) => {
|
||||
|
||||
/** Liste les valeurs `banque` distinctes non reliées à institution_id, avec suggestion */
|
||||
router.get('/comptes-orphelins', (_req, res) => {
|
||||
// Groupé par (banque, user_id, investisseur_id) : `user_id` est le compte de connexion
|
||||
// (potentiellement partagé par toute une famille — cf. `investisseurs`), `investisseur_id`
|
||||
// le détenteur réel du compte bancaire (Olivier, Marine, Clément...). Sans ce second niveau,
|
||||
// tous les comptes d'une même famille apparaissent à tort sous le seul nom du titulaire du
|
||||
// compte de connexion (constaté par Olivier le 26/09/26).
|
||||
const rows = db.prepare(`
|
||||
SELECT c.banque, u.id AS user_id, u.email AS user_email, u.display_name AS user_display_name, COUNT(*) AS nb
|
||||
SELECT c.banque, u.id AS user_id, u.email AS user_email, u.display_name AS user_display_name,
|
||||
c.investisseur_id, i.nom AS investisseur_nom,
|
||||
COUNT(*) AS nb
|
||||
FROM comptes c
|
||||
JOIN users u ON u.id = c.user_id
|
||||
LEFT JOIN investisseurs i ON i.id = c.investisseur_id
|
||||
WHERE c.institution_id IS NULL AND c.banque IS NOT NULL AND TRIM(c.banque) != ''
|
||||
GROUP BY c.banque, u.id
|
||||
ORDER BY c.banque, u.email
|
||||
GROUP BY c.banque, u.id, c.investisseur_id
|
||||
ORDER BY c.banque, i.nom, u.email
|
||||
`).all();
|
||||
|
||||
const byBanque = {};
|
||||
for (const r of rows) {
|
||||
if (!byBanque[r.banque]) byBanque[r.banque] = { banque: r.banque, total: 0, users: [] };
|
||||
byBanque[r.banque].total += r.nb;
|
||||
byBanque[r.banque].users.push({ id: r.user_id, email: r.user_email, display_name: r.user_display_name, nb: r.nb });
|
||||
byBanque[r.banque].users.push({
|
||||
id: r.user_id, email: r.user_email, display_name: r.user_display_name,
|
||||
investisseur_id: r.investisseur_id, investisseur_nom: r.investisseur_nom,
|
||||
nb: r.nb,
|
||||
});
|
||||
}
|
||||
|
||||
const refs = db.prepare('SELECT id, nom FROM institutions_referentiel ORDER BY nom').all();
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 9.0 KiB |
@@ -811,7 +811,10 @@ function ComptesOrphelinsSection() {
|
||||
)}
|
||||
</td>
|
||||
<td style={{ padding: '10px 8px', color: 'var(--text-muted)', fontSize: 12 }}>
|
||||
{row.total} compte{row.total > 1 ? 's' : ''} — {row.users.map(u => u.display_name || u.email).join(', ')}
|
||||
{row.total} compte{row.total > 1 ? 's' : ''} — {row.users.map(u => {
|
||||
const label = u.investisseur_nom || 'Non attribué';
|
||||
return u.nb > 1 ? `${label} (${u.nb})` : label;
|
||||
}).join(', ')}
|
||||
</td>
|
||||
<td style={{ padding: '10px 8px' }}>
|
||||
<select
|
||||
|
||||
Reference in new issue
Block a user