Skip to content

fix(25-4-b1): la balance âgée et l'échéancier comptent le reste dû, pas le TTC (refs #416) - #475

Merged
guycorbaz merged 35 commits into
mainfrom
story/25-4-b-residuel-aux-agregats
Sep 27, 2026
Merged

guycorbaz merged 35 commits into
mainfrom
story/25-4-b-residuel-aux-agregats

Conversation

@guycorbaz

Copy link
Copy Markdown
Owner

Ce que la PR corrige

Depuis le règlement partiel (Story 24-2), les agrégats sommaient le TTC : une facture de 1 081.— réglée de 900.— pesait 1 081.— dans la balance âgée et dans les totaux de l'échéancier. Ils portent désormais le reste dû (TTC − avoir − règlements), calculé par une forme jointe unique (amount_due_derived_joins), tenue à parité avec la forme scalaire de la fiche.

  • Balance âgée : chaque tranche somme le reste dû, toujours assise sur l'échéance (un règlement partiel ne rajeunit pas la créance). Invariant testé : total = solde du compte débiteurs au grand livre. Un contact reste listé dès qu'une de ses factures a un reste non nul — un trop-perçu hérité ne peut plus le faire disparaître par compensation.
  • Échéancier : colonne « Reste dû », totaux en reste dû, statut « Partiellement payée » partagé avec la fiche, dialogue de règlement pré-rempli au centime, même colonne à l'export CSV (4 locales).
  • T0 : la portée de l'état hérité « avoir après règlement partiel » rectifiée sur cinq sites.
  • Manuel utilisateur FR (+ PDF) et CHANGELOG [0.12.1] Fixed.

⚠️ Ne ferme pas #416 : la partie rappels (25-4-b2) le fera.

Revue

Validation de spec close en 5 passes ; revue de code close en 2 passes — passe 1 2M/1L (Sonnet ×3, corrigés), passe 2 0 au-dessus de LOW (Haiku ×3, protocole complet). Détail dans le story file 25-4-b1-residuel-aux-agregats.md.

Gates locaux (dernier commit de la boucle, base remise à zéro)

Branche empilée sur la 25-4-a : main (squash #472) y est intégré par un merge dont l'arbre est identique à celui qui a passé les gates.

🤖 Generated with Claude Code

guycorbaz and others added 30 commits September 26, 2026 23:48
…, refusé sur une facture réglée (refs #455, refs #456, refs #416, refs #420)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nt réglée, reste à payer dit au client (refs #416)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ce (refs #416)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pas la facture réémise (refs #416)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ligné sur « Dévalider », montage de monter (refs #455, refs #456)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…(refs #455, refs #456)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…x rappels (refs #416)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#416)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e comparé en Decimal, bouton sur facture payée (refs #455, refs #456)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…refs #455, refs #456)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#384 ramenée en 25-4-d (refs #384, refs #456)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…efs #455, refs #456)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ur une facture réglée (refs #455, refs #456)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… refs #456)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…a balance âgée et à l'échéancier (refs #416)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rand livre, quatre passages du manuel (refs #416)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…approchement par ventilation ou règle (refs #416)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…une règle ; #473 et #474 ouvertes (refs #416)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e-passations dans la règle (refs #416)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
guycorbaz and others added 5 commits September 27, 2026 15:14
#416)

Implémentation T0-T6 de la Story 25-4-b1. Gates backend (2491/2491) et
frontend (834/834) verts avant l'interruption ; gate E2E (T7) en attente.

Commit de sauvegarde après un crash de la station : l'intégrité des
fichiers a été vérifiée (git fsck, fins de fichiers, fmt, clippy, check).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nsé (refs #416)

Le HAVING porte sur les factures à reste dû non nul, plus sur le total
du contact : un trop-perçu hérité compensant une facture ouverte faisait
sortir le contact entier. Commentaire de get_invoice rectifié ; tests
du règlement annulé sur la balance âgée et l'échéancier.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…416)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
L'arbre de main est identique à celui de la tête de #472 (41e14e4),
ancêtre de cette branche : le résultat est l'arbre de la branche.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@guycorbaz
guycorbaz merged commit b10109b into main Sep 27, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant