Skip to content

fix(25-4-c): le rapprochement reconnaît le solde d'une facture réglée en partie (closes #420) - #483

Merged
guycorbaz merged 12 commits into
mainfrom
story/25-4-c-residuel-au-rapprochement
Sep 30, 2026
Merged

guycorbaz merged 12 commits into
mainfrom
story/25-4-c-residuel-au-rapprochement

Conversation

@guycorbaz

Copy link
Copy Markdown
Owner

Closes #420.

Le défaut

Une facture de 1 000.— TTC réglée de 400.— n'était même pas proposée pour un virement de 600.— — exactement ce que le client devait encore. Le filtre des candidates comparait le TTC (1 000 ∉ 600 ± 0.05) ; et une acceptation forcée échouait au re-score, avant la garde de trop-perçu. Défaut né des règlements multiples (24-2).

Ce qui change

  • Dépôt — find_unpaid_invoices_for_window filtre sur le reste dû par la forme jointe (amount_due_derived_joins() + INVOICE_AMOUNT_DUE_DERIVED_SQL), sur le brut, tolérance inchangée ; le candidat porte le reste dû et le TTC.
  • API — les propositions scorent et affichent le reste dû (invoiceAmount) ; nouveau champ invoiceTotalTtc, présent seulement si la facture est déjà réglée en partie. Le re-score à l'acceptation lit invoice_settlements::amount_due dans la transaction.
  • Écran — « 600, reste dû sur 1000 » ; libellé dans les 4 langues.
  • Manuel et brochure — le paragraphe du score réécrit sur le code réel : il annonçait un score gradué, un critère de date et des seuils 80/95 % qui n'existent pas. PDF régénérés et contrôlés.

Hors périmètre, par découpage : le verrou à l'acceptation (#480, Story 25-4-c2) et l'arrondi au centime (#476, Story 25-4-c3). Ouvertes pendant la story : #481 (trois autres passages faux du manuel), #482 (pas de garde de signe à l'acceptation, préexistant).

Validation et revue

  • Validation de spec en 5 passes, avec un découpage au milieu (sévérité P2 → P3 non décroissante).
  • Revue de code en 2 passes : P1 Sonnet ×3 (1 HIGH, 7 MEDIUM — corrigés, écartés ou reportés, chacun vérifié sur le code), P2 Haiku ×2 (0 > LOW après vérification).
  • Tests : +1 dépôt, +2 e2e API (dont une acceptation sur le seul score de montant), +1 Vitest, +1 Playwright ; quatre mutations tuées.

Gates locaux, au dernier commit, base remise à zéro

  • Backend : 2513/2513 (4 ignorés), fmt et clippy verts.
  • Frontend : check, lint-i18n-ownership, 836/836, build.
  • E2E complet : 226 passed / 19 skipped / 9 failed — les 9 à la liste de docs/testing.md § « Les échecs attendus » (7 KF-029, 2 KF-045 avant midi UTC).

🤖 Generated with Claude Code

guycorbaz and others added 12 commits September 29, 2026 08:35
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…refs #420, refs #476)

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… l'orchestrateur (refs #420)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… arbitrages en attente (refs #420)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#476) ; périmètre réduit au rapprochement (refs #420)

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>
… en partie (refs #420)

Le filtre des candidates, le score, le re-score à l'acceptation et le
montant affiché portent sur le reste dû (TTC − avoir − règlements), par
la forme jointe ; le TTC ne suit qu'en mention quand les deux diffèrent.
Manuel et brochure réécrits sur le score réel ; #481 ouverte pour le reste.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ues, Playwright départagé (refs #420)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@guycorbaz
guycorbaz merged commit eecf40c into main Sep 30, 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.

[BUG] Le score de rapprochement compare au TTC et non au résiduel — le virement du solde d'une facture partiellement réglée score 0

1 participant