Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
bc4fee4
docs(25-1c-b1, 25-1c-b2): reprise des spécifications validées le 2026…
guycorbaz Sep 26, 2026
6358639
docs(25-1c-b1, 25-1c-b2): revalidation R5 « dérive » — b1 corrigée, b…
guycorbaz Sep 26, 2026
739de92
docs(25-1c-b1): revalidation R6 ciblée à zéro — fiche revalidée sur m…
guycorbaz Sep 26, 2026
6c169e0
feat(25-1c-b1): l'écran de consultation du journal d'audit (refs #378)
guycorbaz Sep 26, 2026
f7838a9
docs(25-1c-b1): prompt de la passe 1 de revue (refs #378)
guycorbaz Sep 26, 2026
576464d
fix(25-1c-b1): revue P1 — identifiant vidé à tout changement de type,…
guycorbaz Sep 26, 2026
cbccafc
docs(25-1c-b1): prompt de la passe 2 de revue (refs #378)
guycorbaz Sep 26, 2026
6cdc662
docs(25-1c-b1): revue P2 close (0 au-dessus de LOW) (refs #378)
guycorbaz Sep 26, 2026
ecaeadb
docs(25-1c-b2): fiche réécrite contre le texte actuel (T0) — la déval…
guycorbaz Sep 26, 2026
ef57575
docs(25-1c-b2): prompt de la revalidation R6 (refs #378)
guycorbaz Sep 26, 2026
5291c69
docs(25-1c-b2): revalidation R6 — inventaire refermé sur son grep, ré…
guycorbaz Sep 26, 2026
b97612d
docs(25-1c-b1): entrées du Change Log remontées hors d'un tableau (re…
guycorbaz Sep 26, 2026
a548241
docs(25-1c-b2): prompt de la revalidation R7 ciblée (refs #378)
guycorbaz Sep 26, 2026
ac0a2fc
docs(25-1c-b2): revalidation R7 ciblée à zéro — fiche validée, dev en…
guycorbaz Sep 26, 2026
cd865a1
docs(25-1c-b2): les manuels, le README et le vocabulaire disent l'écr…
guycorbaz Sep 26, 2026
2354d86
docs(25-1c-b2): prompt de la revue de code P1 (refs #378)
guycorbaz Sep 26, 2026
c493cdc
fix(25-1c-b2): revue P1 — quatre résidus de vocabulaire hors inventai…
guycorbaz Sep 26, 2026
894f53c
docs(25-1c-b2): prompt de la revue de code P2 (refs #378)
guycorbaz Sep 26, 2026
fbcd2d8
docs(25-1c-b2): revue P2 à zéro au-dessus de LOW, vérifiée — boucle c…
guycorbaz Sep 26, 2026
61c5e26
Merge remote-tracking branch 'origin/main' into story/25-1c-b1-journa…
guycorbaz Sep 26, 2026
62b1211
Merge remote-tracking branch 'origin/main' into story/25-1c-b1-journa…
guycorbaz Sep 26, 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
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ Le contenu est rédigé en français à destination des **fiduciaires, PME, ind

### Added

- **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))

- **Annuler un règlement client.** Un règlement enregistré par erreur était jusqu'ici **définitivement incorrigible** : la contre-passation directe de son écriture était refusée, et la seule sortie — une écriture manuelle — laissait la facture se dire réglée quand le grand livre disait le contraire. La fiche facture liste désormais ses règlements, et chacun s'**annule par contre-passation** : une écriture inverse **datée du jour**, le règlement retiré de la facture, le montant redevenu dû. Les deux écritures restent visibles au grand livre.

Le bouton est remplacé par la raison quand l'annulation n'est pas possible : facture **créditée** (le règlement est alors un paiement à lettrer), exercice du règlement **clôturé** (un administrateur doit le rouvrir), règlement **rapproché** d'une transaction bancaire (annulez d'abord le rapprochement — le bouton est à côté du motif), compte **archivé**, ou aucun exercice ouvert pour la date du jour.
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

## Fonctionnalités

- **Comptabilité en partie double** — plan comptable suisse, écritures validées, audit log
- **Comptabilité en partie double** — plan comptable suisse, écritures validées, journal d'audit consultable à l'écran
- **Carnet d'adresses & catalogue produits** — contacts, conditions de paiement, TVA
- **Facturation QR Bill 2.2** — génération PDF conforme au standard suisse, **adresses structurées (type S)** conformes à l'exigence SIX en vigueur (rue / n° / NPA / localité séparés) ✓
- **Ventilation du chiffre d'affaires par ligne de facture** — chaque ligne peut porter son propre **compte de produit** (honoraires, marchandises, prestations…), sélectionnable dans le formulaire ; une ligne laissée vide suit le compte par défaut de la société, affiché explicitement. L'écriture comptable ventile le crédit sur les bons comptes dès la validation, avoirs compris — compte de résultat exploitable sans reclassement manuel ✓
Expand Down Expand Up @@ -217,7 +217,7 @@ Le projet suit une approche **BMAD** (Breakthrough Method of Agile AI-driven Dev
| v0.11.0 | **E23 Dette i18n** (#316, #283) — les écrans réclamaient des libellés que **aucun** des quatre catalogues ne contenait : Kesh servait alors du **français correct** à un germanophone, sans erreur ni avertissement. **1600 messages écrits** — 358 libellés français neufs et 414 dans chacune des trois autres langues, les quatre catalogues portant désormais **les mêmes 1630 clés** —, et **six garde-fous** posés pour que le défaut ne puisse plus revenir en silence — le principal étant devenu **inconditionnel** : une clé sans traduction ne peut plus être tolérée, elle fait rougir le gate | ✅ Done |
| v0.11.1 (hotfix) | **Trois défauts qui ne disaient rien** — l'**écran d'import bancaire se vidait** dès qu'on y déposait un fichier CAMT.053, rendant la fonction inutilisable ; un **compte de facturation pouvait s'effacer tout seul** après être devenu non imputable, faisant échouer la facturation suivante sur une erreur qui ne nommait pas la cause ; le **filtre Statut des factures** rendait une liste vide trompeuse depuis la page 2. Plus un en-tête de colonne sans nom pour les lecteurs d'écran | ✅ Done |
| v0.12.0 | **E24 « Les livres justes »** — première vague de correction issue d'un **audit par trois experts** (comptable, fiscaliste, directeur financier) mené le 2026-08-26 sur l'ensemble du logiciel. ⚠️ **Le défaut fondateur** : l'encaissement d'une facture client ne produisait **aucune écriture comptable** — le compte débiteurs accumulait des débits jamais crédités, la banque était sous-évaluée, et **le rapprochement bancaire était impossible**. Le mode d'échec est silencieux : le bilan reste équilibré, aucun contrôle ne rougit. Cette vague livre l'**écriture d'encaissement**, le **grand livre** (l'extrait de compte, qui n'existait pas — « l'instrument qui rend les autres défauts visibles »), la **contre-passation d'une écriture** — corriger sans effacer, l'écriture inverse laissant l'origine intacte, comme l'exige l'art. 958f CO : *l'exigence n'est pas qu'on ne se trompe jamais, c'est que la correction soit apparente* —, le **gel** qui la rend obligatoire (une écriture enregistrée n'est plus ni modifiable ni supprimable, par personne), le **verrou de période** — arrêter les livres à une date, pour qu'un trimestre TVA déjà déclaré ne bouge plus dans le dos de personne —, et la correction des comptes de clôture. ⚠️ **L'epic est clos, la vague ne l'est pas** : le jalon [Vague 1](https://github.com/guycorbaz/kesh/milestone/3) compte encore une quinzaine d'issues ouvertes — le journal d'audit n'est consultable par aucun écran et la Balance ne concorde pas avec le Bilan. **Publiée le 2026-09-21**, cette version emporte aussi les premières stories de l'E25 — piste de contrôle inaltérable, quatorze routes tracées, consultation du journal d'audit par l'API, retypage d'un compte mouvementé, numérotation des écritures par compteur, verrou de période à la suppression. ⚠️ **Elle n'est pas encore destinée à tenir une comptabilité réelle** : plusieurs fonctions d'un exercice complet manquent, et l'export de sauvegarde est incomplet ([#386], corrigé depuis — à paraître en v0.12.1). | ✅ Publiée |
| v0.12.1 | **E25 « Vague 1, la suite »** — l'Epic 24 s'appelait « vague 1 » et **n'en avait livré que le quart** ; cet epic-ci ne se clôt qu'avec le jalon [Vague 1](https://github.com/guycorbaz/kesh/milestone/3) **à zéro issue ouverte**. Livré à ce jour : la **piste de contrôle survit désormais à l'import d'une sauvegarde** ([#376]) — les entrées de l'archive sont *fusionnées* avec les vôtres au lieu de les remplacer, et chacune porte le nom de son auteur **au moment de l'écriture**, un instantané qui survit au remplacement des comptes utilisateurs. ⚠️ **Le motif n'est pas théorique** : effacer ses traces en important un backup était un scénario de blanchiment, relevé au III.3 de l'audit du 2026-08-26. La **réinitialisation des données de démonstration** exige désormais le rôle d'administrateur ([#377]) — *sa seule protection était un état, pas un droit*. S'y ajoute le **comblement des trous d'alimentation** ([#379]) : la gestion des utilisateurs, la modification de la société, les personnes de contact et les pièces importées laissent désormais une trace — **quatorze routes** qui n'en écrivaient aucune, dont le **changement de rôle**, qui porte son propre libellé pour qu'une promotion au droit d'écrire dans les livres ne se noie pas parmi les activations. ⚠️ **L'effacement d'une adresse par omission est tracé** lui aussi : sur ces écrans, un champ laissé vide efface, et détruire le canal de recouvrement d'un compte ne laissait jusqu'ici aucune trace. Enfin, **un numéro d'écriture n'est plus jamais réattribué** ([#381]) : supprimer la dernière écriture d'un exercice rendait son numéro à la suivante, au contenu différent, sans que rien ne le signale ; il vient désormais d'un compteur qui ne redescend pas. Le trou, lui, reste possible — mais il se voit, et le journal d'audit l'explique. Et le **verrou de période tient aussi contre la suppression** ([#443]) : faire disparaître une facture validée emportait son écriture même datée d'un trimestre déjà déclaré. Et **supprimer une facture validée n'est plus possible — il faut la « dévalider »** ([#440]) : jusqu'ici, le bouton *Supprimer* effaçait la facture **et son écriture comptable** d'un seul geste, si bien que la destruction d'une écriture était un **effet de bord du mot « supprimer »**. Le geste porte désormais son nom, il repasse la facture en brouillon en **conservant son numéro** — la revalidation reprend *le même* —, et **huit motifs** peuvent le refuser, chacun nommé. *Le cas le plus fréquent, l'erreur de saisie repérée après validation, se corrige donc sans émettre un avoir qui ne correspondrait à aucune réalité commerciale.* ⚠️ **Restent ouverts** : l'**écran** de consultation ([#378]) — la piste de contrôle se lit désormais par l'**API**, filtrable et exportable en CSV dans la langue de l'installation, mais aucune page ne la rend lisible depuis l'application —, la séquence d'**installation** ([#434]) et les **gestes de session** ([#435]) — ces deux dernières découvertes en comblant les premières, et **inscrites au registre des routes** que la story a posé, avec le numéro de l'issue qui les suit. | 🚧 En cours |
| v0.12.1 | **E25 « Vague 1, la suite »** — l'Epic 24 s'appelait « vague 1 » et **n'en avait livré que le quart** ; cet epic-ci ne se clôt qu'avec le jalon [Vague 1](https://github.com/guycorbaz/kesh/milestone/3) **à zéro issue ouverte**. Livré à ce jour : le **journal d'audit survit désormais à l'import d'une sauvegarde** ([#376]) — les entrées de l'archive sont *fusionnées* avec les vôtres au lieu de les remplacer, et chacune porte le nom de son auteur **au moment de l'écriture**, un instantané qui survit au remplacement des comptes utilisateurs. ⚠️ **Le motif n'est pas théorique** : effacer ses traces en important un backup était un scénario de blanchiment, relevé au III.3 de l'audit du 2026-08-26. La **réinitialisation des données de démonstration** exige désormais le rôle d'administrateur ([#377]) — *sa seule protection était un état, pas un droit*. S'y ajoute le **comblement des trous d'alimentation** ([#379]) : la gestion des utilisateurs, la modification de la société, les personnes de contact et les pièces importées laissent désormais une trace — **quatorze routes** qui n'en écrivaient aucune, dont le **changement de rôle**, qui porte son propre libellé pour qu'une promotion au droit d'écrire dans les livres ne se noie pas parmi les activations. ⚠️ **L'effacement d'une adresse par omission est tracé** lui aussi : sur ces écrans, un champ laissé vide efface, et détruire le canal de recouvrement d'un compte ne laissait jusqu'ici aucune trace. Enfin, **un numéro d'écriture n'est plus jamais réattribué** ([#381]) : supprimer la dernière écriture d'un exercice rendait son numéro à la suivante, au contenu différent, sans que rien ne le signale ; il vient désormais d'un compteur qui ne redescend pas. Le trou, lui, reste possible — mais il se voit, et le journal d'audit l'explique. Et le **verrou de période tient aussi contre la suppression** ([#443]) : faire disparaître une facture validée emportait son écriture même datée d'un trimestre déjà déclaré. Et **supprimer une facture validée n'est plus possible — il faut la « dévalider »** ([#440]) : jusqu'ici, le bouton *Supprimer* effaçait la facture **et son écriture comptable** d'un seul geste, si bien que la destruction d'une écriture était un **effet de bord du mot « supprimer »**. Le geste porte désormais son nom, il repasse la facture en brouillon en **conservant son numéro** — la revalidation reprend *le même* —, et **huit motifs** peuvent le refuser, chacun nommé. *Le cas le plus fréquent, l'erreur de saisie repérée après validation, se corrige donc sans émettre un avoir qui ne correspondrait à aucune réalité commerciale.* Le journal d'audit se **consulte enfin à l'écran** ([#378]) — *Administration → Journal d'audit*, pour les comptables et les administrateurs, filtrable et exportable en CSV dans la langue de l'installation. ⚠️ **Restent ouverts** : la séquence d'**installation** ([#434]) et les **gestes de session** ([#435]) — toutes deux découvertes en comblant les trous d'alimentation, et **inscrites au registre des routes** que la story a posé, avec le numéro de l'issue qui les suit. | 🚧 En cours |
| v0.13.0 (prévu) | **E15 Lettrage, justificatifs & compléments** — ✅ **dégelé le 2026-08-28** : le lettrage rapproche deux lignes d'un même compte, et une facture cliente réglée en a désormais deux — l'écriture d'encaissement livrée par l'E24 (#371) crédite le compte débiteurs que la vente avait débité. La spécification est faite — onze passes de revue, jugée comptablement juste — mais elle a été écrite **avant** ce changement de modèle : elle sera relue contre la table `invoice_settlements`, qui en est le substrat. | 📋 Backlog |
| v0.5+ (prévu) | **Tableau de bord & Comptabilité personnelle** — widgets configurables sur la page d'accueil (évolution du patrimoine fortune & dettes mois par mois [#164], donut de répartition des dépenses par compte/sous-compte [#165], comparatif recettes/dépenses mensuel [#166]) ; **Budgets** (E13 [#196]) + comparatif budget validé vs réalité [#197] | 📋 Backlog |

Expand Down
Loading
Loading