analyse de résultat (revenus + résultat avant/après transferts) + défaut mois précédent #253
Labels
No labels
autopilot:pending-human
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-clarification
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/Simpl-Resultat#253
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
Le rapport « réel vs réel » (
ReportsComparePage) est aujourd'hui un rapport de DÉPENSES (WHERE amount < 0), prémisse figée dans #243. Feedback utilisateur (commentaire #243, 2026-07-05) : ce rapport est en réalité une analyse de résultat (le nom du produit) — il faut voir les REVENUS pour juger si on est en surplus/déficit (over/under). Le netting des transferts de #243 reste valide (livré v0.11.0, PR #248) ; ce ticket l'étend.Changement 1 — Réel-réel = analyse de résultat
Structure cible (sections + 2 lignes de résultat) :
reportService.tsCOMPARE_DELTA_SQL(~668-686) : élargir le WHERE et le CASE pour inclureincomeen SUM signé (comme transfer).WHERE (t.amount<0 OR type IN ('transfer','income')); CASE... IN ('transfer','income') THEN t.amount ELSE ABS(t.amount). Le reste du service (rowsToDeltas,buildCompareTree) est agnostique au type.ComparePeriodTable.tsx: la section Revenus existe déjà (labels + i18n en place) → apparaît dès que les données arrivent. Remplacer le grand total actuel (sumLeaves(rows), devenu faux car il mélange revenus + dépenses ABS) par les 2 lignes de résultat, calculées à partir des sous-totaux par type.Changement 2 — Mois précédent par défaut (compare)
Le compare ouvre par défaut sur décembre (année civile) à cause d'un effet de synchro dans
useCompare.ts(~125-132) qui écrase le mois de référence par letodeuseReportsPeriod.defaultReferencePeriod()(mois précédent) est déjà l'initialStatemais est écrasé. Corriger pour ouvrir sur le dernier mois complet. Portée : compare uniquement (Cartes/Highlights déjà OK ; Tendances/Répartition gardent la pleine année civile).Fichiers concernés
src/services/reportService.ts—COMPARE_DELTA_SQL(WHERE + CASE income)src/components/reports/ComparePeriodTable.tsx— 2 lignes de résultat + couleur inverséesrc/hooks/useCompare.ts— défaut mois précédent (effet de synchro)src/i18n/locales/{fr,en}.json—reports.compare.resultBeforeTransfers,resultNetsrc/services/reportService.test.ts— tests SQL (sous-chaînes), fixtures income,buildCompareTreeCHANGELOG.md/CHANGELOG.fr.md— ChangedSurface de test
reportService.test.ts: mettre à jour les tests asservissant les sous-chaînes SQL exactes (~530-552) ; ajouter fixturesincomedanscats(~675) ; netting inchangé ; test résultat avant/après transferts.ComparePeriodTable: pas de test existant → couvrir le calcul des 2 lignes de résultat.useCompare: test du défaut mois précédent.Critères d'acceptation
Complexité : Medium
Remplace la prémisse dépenses-only de #243 (netting conservé). Collapse/expand des sous-catégories = suivi séparé.
Livré dans
main(merge1360940, PR #255). Fermée manuellement — leResolves #253n'a pas auto-fermé car les commits préexistaient sur la branche feature.