Améliorations
This commit is contained in:
1 parent
7ee011de09
commit
6e03195d3a
2 files changed
+68
-6
No files matched your search
@@ -467,8 +467,14 @@ export default function DepotsRetraits() {
|
||||
const years = [...new Set(allRows.map(r => r.date_operation.slice(0,4)))].sort().reverse();
|
||||
|
||||
/* Données tableau Plateformes — filtrées par drPlatYear si actif */
|
||||
// Tri unique (alphabétique, détenteur en second critère) appliqué aux deux
|
||||
// branches de drPlatData — évite que l'ordre des plateformes change selon le
|
||||
// filtre année sélectionné.
|
||||
const sortPlatAlpha = (a, b) =>
|
||||
a.nom.localeCompare(b.nom, 'fr') || (a.detenteur_nom ?? '').localeCompare(b.detenteur_nom ?? '', 'fr');
|
||||
|
||||
const drPlatData = useMemo(() => {
|
||||
if (!drPlatYear) return dashData?.cashByPlatform ?? [];
|
||||
if (!drPlatYear) return [...(dashData?.cashByPlatform ?? [])].sort(sortPlatAlpha);
|
||||
|
||||
// Mouvements de l'année sélectionnée (dépôts/retraits de l'année)
|
||||
const src = allRows.filter(r => r.date_operation.slice(0, 4) === drPlatYear);
|
||||
@@ -480,6 +486,22 @@ export default function DepotsRetraits() {
|
||||
else map[key].retraits += r.montant;
|
||||
}
|
||||
|
||||
// Une plateforme sans dépôt/retrait cette année-là (ex. uniquement des
|
||||
// remboursements ou un réinvestissement) doit quand même apparaître dans le
|
||||
// tableau — sinon elle disparaît alors qu'elle a eu de vrais mouvements.
|
||||
for (const r of allRemb) {
|
||||
if (!r.date_remb || r.date_remb.slice(0, 4) !== drPlatYear || !r.plateforme_id) continue;
|
||||
const key = String(r.plateforme_id);
|
||||
if (!map[key]) map[key] = { plateforme_id: r.plateforme_id, nom: r.plateforme_nom, detenteur_nom: r.plateforme_detenteur_nom || null, depots: 0, retraits: 0, solde_net: 0, solde_portefeuille: 0 };
|
||||
}
|
||||
for (const rv of allReinvests) {
|
||||
if (!rv.date_reinvestissement || rv.date_reinvestissement.slice(0, 4) !== drPlatYear) continue;
|
||||
const inv = allInv.find(i => i.id === rv.investissement_id);
|
||||
if (!inv?.plateforme_id) continue;
|
||||
const key = String(inv.plateforme_id);
|
||||
if (!map[key]) map[key] = { plateforme_id: inv.plateforme_id, nom: inv.plateforme_nom, detenteur_nom: inv.plateforme_detenteur_nom || null, depots: 0, retraits: 0, solde_net: 0, solde_portefeuille: 0 };
|
||||
}
|
||||
|
||||
// Solde porte-monnaie = cumul jusqu'au 31/12 de l'année sélectionnée, calculé
|
||||
// côté backend (GET /dashboard?asOf=) pour rester la même formule que le solde
|
||||
// "live" — bonus, intérêts plateforme et corrections de solde inclus.
|
||||
@@ -492,8 +514,8 @@ export default function DepotsRetraits() {
|
||||
p.solde_net = p.depots - p.retraits;
|
||||
p.solde_portefeuille = soldeMap[String(p.plateforme_id)] ?? 0;
|
||||
return p;
|
||||
}).sort((a, b) => b.solde_net - a.solde_net);
|
||||
}, [allRows, dashDataAsOf, drPlatYear]);
|
||||
}).sort(sortPlatAlpha);
|
||||
}, [allRows, allRemb, allInv, allReinvests, dashDataAsOf, drPlatYear]);
|
||||
|
||||
const drPlatTotals = useMemo(() =>
|
||||
drPlatData.reduce((acc, p) => {
|
||||
|
||||
Reference in new issue
Block a user