Skip to content

fix(15-6b): un règlement ne vise pas le compte qu'il solde — garde serveur, lots, rapprochement, écrans (refs #474) - #580

Merged
guycorbaz merged 8 commits into
mainfrom
story/15-6b-contrepartie-distincte-de-la-creance
Oct 9, 2026
Merged

guycorbaz merged 8 commits into
mainfrom
story/15-6b-contrepartie-distincte-de-la-creance

Conversation

@guycorbaz

Copy link
Copy Markdown
Owner

refs #474 : c'est la 15-6c (configuration) qui fermera l'issue.

Ce qui change

Le refus. Un règlement ne peut plus viser le compte même qu'il solde. Le refus porte le code SETTLEMENT_COUNTERPARTY_IS_CLAIM_ACCOUNT (400), et details.role nomme le rôle du compte en cause. Il s'applique à tous les chemins qui soldent une créance ou une dette par une contrepartie :

  • règlement client et règlement fournisseur, dans leurs deux modes ;
  • solde du reste : nature, arrondi, TVA due ;
  • rapprochement bancaire, où le refus va dans failed[] ;
  • lots de paiement pain.001 : refus par facture à la création, puis refus atomique et contextualisé à la confirmation.

Les écrans. Ils ne proposent plus le compte soldé, ni un compte bancaire qui lui est lié.

Documentation à jour : manuels FR (texte et PDF), api-external.md, README.md et CHANGELOG.

Gate

Exécuté localement sur l'état rebasé sur 200f5e79 :

Revues

🤖 Generated with Claude Code

guycorbaz and others added 8 commits October 9, 2026 06:50
…erveur, lots, rapprochement (refs #474)

- DbError::SettlementCounterpartyIsClaimAccount (claim, role, batch), code
  SETTLEMENT_COUNTERPARTY_IS_CLAIM_ACCOUNT, 400 ; six clés plates, quatre locales.
- Helper commun (invoice_settlements) : comparaison pure, refus construit à
  l'échec (numéro lu), details partagés ; refuse_if_claim_account (C-15-6b-1),
  GapAccountRole (C-15-6b-2).
- Gardes : settle_invoice (contrepartie, arrondi), write_off_invoice (nature,
  reste d'arrondi, TVA due), pay_in_tx (lecteur soeur purchase_payable_line),
  création de lot (failed[] par facture, écriture d'achat malformée),
  confirmation contextualisée, accept_one_invoice (b bis, c-bis).
- 21 tests d'intégration neufs (19 rouges avant les gardes, les tests 3 et 9
  de non-régression verts avant comme après) et 8 tests unitaires ;
  trois mutations jouées et constatées rouges.
- T0 au Change Log de la fiche.

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

- account-options : accountIdsWithRole, withoutAccountIds,
  bankAccountsNotLinkedTo (ids sur la liste reçue, avant active && postable).
- SettleInvoiceDialog : 1100 et comptes bancaires liés au 1100 écartés ;
  présélection dans un effet distinct (la saisie survit à l'arrivée de
  accounts) ; message de liste vide si le filtre a écarté un compte.
- Fiche fournisseur : idem pour le 2000.
- failedItemLabel des lots : deux codes neufs (six → huit) ; libellé
  failed[] du rapprochement à deux cas selon details.role (26 → 27 codes).
- Six clés d'écran, quatre locales ; sitesTotal 1915 → 1921 (+6) ;
  CLES_RELEVEES 210 → 213 (+3 nommées).
- Tests 17-20 et AC7 ; hôte SettleInvoiceDialogHost.test.svelte (rerender
  change toutes les props) ; deux mutations jouées et constatées rouges.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…teurs, manuels, CHANGELOG (refs #474)

- api-external : phrase de refus de POST …/settlements (hors table
  d'annulation), ligne de la table du solde, phrase de POST …/pay avec les
  deux routes de lot, refus par proposition du rapprochement.
- Manuel utilisateur : règlement client (« tout autre compte » corrigé,
  deux remèdes), solde du reste, règlement fournisseur (« libre » corrigé),
  pain.001 (refus à la création, deux issues à la confirmation), puce
  Accepter, balance âgée (règlement antérieur à 0.13.0).
- Manuel d'administration : solde du reste refusé, et « devenu le compte
  débiteurs » au paiement avec écart. PDF régénérés et contrôlés aplatis.
- README (Fonctionnalités) et CHANGELOG [0.13.0] / Corrigé.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Gate backend 2958/2958 (4 ignorés), frontend 1110/1110 + build, E2E 247
passés / 9 échecs tous à la liste (KF-029 ×7, KF-045 ×2 avant midi UTC).

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ar HTTP, ids avant le filtre, réouverture du dialogue, condition du filtre au manuel ; dettes écrites (refs #474)

Revue de code P1 (Sonnet ×3) : 0 au-dessus de LOW, 20 LOW. Remédiation sans
aucune ligne de code exécutable : tests (4 backend, 4 frontend, mutations
constatées rouges), commentaires et doc-comments, italien à l'infinitif,
manuel et PDF, fiche (tâches, AC1 amendé, angles morts) et sprint-status.
B-1, B-2 = E2, B-4 et B-6 écrits en dette (C-15-6b-3).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… l'état rebasé — statut done (refs #474)

Backend 2984/2984, Vitest 1118/1118 + build, E2E 247 passés / 9 attendus
(7 KF-029, 2 KF-045 avant 12:00 UTC).

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

Backend 3006/3006, Vitest 1118/1118 + build, E2E 247 passés / 9 attendus
(7 KF-029, 2 KF-045 avant 12:00 UTC).

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