Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
11cf3c9
docs(25-4-c): story créée — le résiduel au rapprochement (refs #420)
guycorbaz Sep 27, 2026
1db610a
docs(25-4-c): arbitrages Q1–Q3 retenus par défaut, rebase sur la b2 (…
guycorbaz Sep 29, 2026
36f9ce3
docs(25-4-c): validation P1 — 3 HIGH, 2 MED, 1 LOW remédiés (refs #42…
guycorbaz Sep 29, 2026
4ba1d29
docs(25-4-c): validation P2 — 0 finding sans preuve, 2 MED repris par…
guycorbaz Sep 29, 2026
73ea2b0
docs(25-4-c): références de lignes du verrou recontrôlées (refs #420)
guycorbaz Sep 29, 2026
de2057a
docs(25-4-c): validation P3 consignée — 1 CRIT / 3 HIGH, découpage et…
guycorbaz Sep 29, 2026
5d74361
docs(25-4-c): découpée — verrou en 25-4-c2 (#480), arrondi en 25-4-c3…
guycorbaz Sep 29, 2026
08646df
docs(25-4-c): validation P4 — 1 MED, 1 LOW remédiés (refs #420)
guycorbaz Sep 29, 2026
7aa56d2
docs(25-4-c): validation P5 ciblée — close, 0 > LOW (refs #420)
guycorbaz Sep 29, 2026
63a6d6a
fix(25-4-c): le rapprochement reconnaît le solde d'une facture réglée…
guycorbaz Sep 30, 2026
8d33460
fix(25-4-c): revue de code P1 — CHANGELOG replacé, traductions univoq…
guycorbaz Sep 30, 2026
4c36ac9
docs(25-4-c): revue de code P2 — close, 0 > LOW ; story done (refs #420)
guycorbaz Sep 30, 2026
b90d0d2
docs(25-4-c2): story créée — l'invariant de version au règlement, et …
guycorbaz Sep 30, 2026
cc79287
docs(25-4-c2): validation P1 — 1 HIGH, 2 MED, 2 LOW remédiés (refs #480)
guycorbaz Sep 30, 2026
6810cd9
docs(25-4-c2): validation P2 — close, 0 > LOW (refs #480)
guycorbaz Sep 30, 2026
177135f
fix(25-4-c2): un règlement partiel marque la facture, et l'acceptatio…
guycorbaz Sep 30, 2026
b3a740a
fix(25-4-c2): revue de code P1 — gardes rows_affected, RELEASE SAVEPO…
guycorbaz Sep 30, 2026
3de67e6
docs(25-4-c2): revue de code P2 ciblée — close, 0 > LOW ; story done …
guycorbaz Sep 30, 2026
de7a340
merge main (#483 squashé, arbre identique à 4c36ac99) dans 25-4-c2
guycorbaz Sep 30, 2026
5d7b1b3
chore(25-4-c3): arbitrage de Guy — l'écart d'arrondi passe en écritur…
guycorbaz Sep 30, 2026
7e98ca7
docs(25-4-c3): découpée en a1 / a2 / b ; story c3-a1 créée — le régla…
guycorbaz Sep 30, 2026
06c075b
docs(25-4-c3-a1): validation P1 — 2 MED remédiés (refs #476)
guycorbaz Sep 30, 2026
e52cde9
docs(25-4-c3-a1): validation P2 ciblée — close, 0 > LOW (refs #476)
guycorbaz Sep 30, 2026
42c1ca4
merge main (#485 squashé, arbre identique à de7a3406) dans 25-4-c3
guycorbaz Sep 30, 2026
55d9855
feat(25-4-c3-a1): désigner le compte de différences d'arrondi dans le…
guycorbaz Sep 30, 2026
aa76eb2
fix(25-4-c3-a1): revue de code P1 — compte d'arrondi validé seulement…
guycorbaz Sep 30, 2026
c5c5beb
docs(25-4-c3-a1): revue de code P2 ciblée — close, 0 > LOW ; story do…
guycorbaz Sep 30, 2026
02dac05
docs(25-4-c3-a2): story créée — le compte de différences d'arrondi da…
guycorbaz Sep 30, 2026
983843c
docs(25-4-c3-a2): validation P1 — 3 MED, 2 LOW remédiés ; #488 ouvert…
guycorbaz Sep 30, 2026
74c6cc0
docs(25-4-c3-a2): validation P2 ciblée — close, 0 > LOW ; dev démarré…
guycorbaz Sep 30, 2026
07661e8
feat(25-4-c3-a2): le compte 6940 Différences d'arrondi dans les plans…
guycorbaz Sep 30, 2026
a1da814
fix(25-4-c3-a2): revue de code P1 — marqueur sans rôle, erreur de pla…
guycorbaz Sep 30, 2026
0bfa6e5
docs(25-4-c3-a2): revue de code P2 ciblée — close, 0 finding ; story …
guycorbaz Sep 30, 2026
7ddbed0
merge main (#487 squashé, arbre identique à c5c5bebc) dans 25-4-c3-a2
guycorbaz Sep 30, 2026
e44b2b1
docs(25-4-c3-b): story créée — l'arrondi au centime et l'écart en écr…
guycorbaz Sep 30, 2026
aee52a8
docs(25-4-c3-b): validation P1 — double borne brut/arrondi, échelle d…
guycorbaz Sep 30, 2026
5893856
docs(25-4-c3-b): validation P2 — échelle normalisée, contrôle client …
guycorbaz Sep 30, 2026
4d6262b
docs(25-4-c3-b): prompt de la validation P3 ciblée (refs #476)
guycorbaz Sep 30, 2026
b1853bb
docs(25-4-c3-b): validation P3 ciblée — montant reçu tel quel, décima…
guycorbaz Sep 30, 2026
62a83d7
docs(25-4-c3-b): prompt de la validation P4 ciblée (refs #476)
guycorbaz Sep 30, 2026
262100d
docs(25-4-c3-b): validation P4 ciblée — 0 finding, boucle close (refs…
guycorbaz Sep 30, 2026
e4a9419
feat(25-4-c3-b): solder au centime, l'écart d'arrondi en troisième li…
guycorbaz Sep 30, 2026
cb7c495
docs(25-4-c3-b): prompt de la revue de code P1 (refs #476)
guycorbaz Sep 30, 2026
1e1aaeb
fix(25-4-c3-b): revue de code P1 — invariant tracé au rapprochement, …
guycorbaz Sep 30, 2026
4d8dca2
docs(25-4-c3-b): prompt de la revue de code P2 ciblée (refs #476)
guycorbaz Sep 30, 2026
0d880db
docs(25-4-c3-b): revue de code P2 ciblée — close, aucune correction d…
guycorbaz Sep 30, 2026
e39b08f
merge main (#489 squashé, arbre identique à 7ddbed01) dans 25-4-c3-b
guycorbaz Oct 1, 2026
fe984db
Merge remote-tracking branch 'origin/main' into story/25-4-c3-b-arron…
guycorbaz Oct 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ Le contenu est rédigé en français à destination des **fiduciaires, PME, ind

- **Un rapprochement et un règlement manuel enregistrés au même moment pouvaient régler deux fois la même facture ([#480](https://github.com/guycorbaz/kesh/issues/480)).** Un règlement manuel **partiel** ne marquait pas la facture comme modifiée : une acceptation de rapprochement en cours, qui avait lu le reste dû juste avant, l'encaissait une seconde fois — une facture de 1 000.— finissait réglée 1 400.—, et le compte clients devenait créditeur sans que rien ne le signale. Chaque règlement marque désormais la facture, et l'acceptation qui arrive trop tard est refusée sans rien écrire (« la facture a changé ») : il suffit de relire les propositions. Un interblocage entre deux opérations simultanées, qui rendait une erreur interne, est maintenant rejoué par le serveur.

- **Une facture dont le total a plus de deux décimales ne pouvait pas être soldée au centime ([#476](https://github.com/guycorbaz/kesh/issues/476)).** Une ligne à prix ou quantité fractionnaire donne un reste dû comme 10.0050, alors que la QR-facture, les rappels et le dialogue de règlement réclament 10.01. Ce virement de 10.01 n'était pas proposé au rapprochement (score de montant nul), et, saisi à la main, il était **refusé comme trop-perçu** — le dialogue refusait le montant qu'il venait de proposer. Un paiement de 10.00 laissait la facture « partiellement réglée » pour un demi-centime. Désormais, toute comparaison se fait **au centime** ; un paiement égal au reste arrondi **solde** la facture, le règlement est enregistré au reste exact, et l'écart passe en **troisième ligne** d'écriture sur le compte de différences d'arrondi — la créance se ferme à zéro. Sans compte utilisable désigné, ce paiement est **refusé sans rien écrire** (`ROUNDING_ACCOUNT_NOT_CONFIGURED`, 400 au règlement manuel, refus par proposition au rapprochement). Un règlement manuel à plus de deux décimales est refusé (`VALIDATION_ERROR`). ⚠️ Reste ouvert : un reste exact inférieur au demi-centime (avoir de 10.00 sur 10.004) ne peut toujours pas être soldé ([#490](https://github.com/guycorbaz/kesh/issues/490)).

### Changed

- **`invoices.csv` de l'export de souveraineté gagne trois colonnes** — `pdf_sha256`, `pdf_frozen_at`, `pdf_language`, l'empreinte, la date et la langue du PDF émis ([#387](https://github.com/guycorbaz/kesh/issues/387)). Elles s'insèrent **avant** `version`, `created_at` et `updated_at` : un outil qui lit ce fichier par position de colonne doit être ajusté. Le PDF lui-même n'est pas dans l'archive. L'API expose `pdfFrozenAt` et `pdfLanguage` sur la facture, et une route d'administration `POST /api/v1/invoices/{id}/pdf/refreeze` refige un document dont le fichier a disparu.
Expand Down Expand Up @@ -90,7 +92,7 @@ Le contenu est rédigé en français à destination des **fiduciaires, PME, ind

### Added

- **Désigner le compte de différences d'arrondi dans les paramètres ([#476](https://github.com/guycorbaz/kesh/issues/476)).** *Paramètres → Facturation* porte une nouvelle section, *Différences d'arrondi* : le compte — charge ou produit, actif et imputable — qui recevra l'écart d'un demi-centime au plus qu'un paiement arrondi au centime laisse sur une facture dont le total a plus de deux décimales. Les plans livrés (PME, indépendant, association) le proposent — **6940 *Différences d'arrondi***, une charge — et le **désignent d'office** à la création d'une société ; une société créée auparavant le crée dans le plan comptable, puis le choisit ici. Le réglage n'est encore lu par aucune écriture : le passage des écarts en écriture suit. *(API : `defaultRoundingAccountId` dans `GET` et `PUT /company/invoice-settings` ; absent du corps d'un `PUT`, il est préservé ; à `null`, effacé.)*
- **Désigner le compte de différences d'arrondi dans les paramètres ([#476](https://github.com/guycorbaz/kesh/issues/476)).** *Paramètres → Facturation* porte une nouvelle section, *Différences d'arrondi* : le compte — charge ou produit, actif et imputable — qui recevra l'écart d'un demi-centime au plus qu'un paiement arrondi au centime laisse sur une facture dont le total a plus de deux décimales. Les plans livrés (PME, indépendant, association) le proposent — **6940 *Différences d'arrondi***, une charge — et le **désignent d'office** à la création d'une société ; une société créée auparavant le crée dans le plan comptable, puis le choisit ici. L'écart y passe en écriture (cf. *Fixed*, même issue). *(API : `defaultRoundingAccountId` dans `GET` et `PUT /company/invoice-settings` ; absent du corps d'un `PUT`, il est préservé ; à `null`, effacé.)*

- **Consulter le journal d'audit à l'écran.** La trace de chaque opération qui modifie les livres se lisait depuis la v0.12.0 par l'interface de programmation seulement, ce qui supposait un outil technique. Elle se consulte désormais dans l'application — *Administration → Journal d'audit*, pour les comptables et les administrateurs : filtres par période, type d'entité, numéro et action, actions et types traduits dans la langue de l'installation, détail de chaque entrée, export CSV. ⚠️ Les dates filtrent sur des **jours UTC** ; le tableau affiche l'heure locale. ([#378](https://github.com/guycorbaz/kesh/issues/378))

Expand Down
Loading
Loading