Artifacts Associated With Ticket 5470b2e56b1726762db222d5a018ce2bddf39801

  1. Ticket change [d3e6558d7c] (rid 4178) by bohwaz on 2016-10-09 23:37:17:

    1. icomment:
      En compta normalement on doit respecter le principe d'inaltérabilité des comptes, c'est à dire qu'on ne modifie ou ne supprime pas une opération existante mais on crée une nouvelle opération "corrective".
      
      Ce principe est un peu ridicule à l'ère du logiciel, où on sait que tout est modifiable facilement par n'importe qui, mais la loi française l'exige désormais pour les logiciels de compta pro. Voir : https://listes.april.org/wws/arc/comptabilite/2016-08/msg00000.html
      
      Et le BOI : http://bofip.impots.gouv.fr/bofip/10691-PGP.html
      
      Par défaut Garradin permet de modifier et supprimer des écritures, car son fonctionnement est destiné aux petites assos qui travaillent souvent en recettes/dépenses, dans ce cas Garradin n'est pas très différent d'un simple tableau Excel, et empêcher la modification/suppression d'écritures est trop lourd pour les novices.
      
      Mais pour les assos qui veulent suivre un modèle comptable plus "classique" il faut permettre de suivre le principe d'inaltérabilité. Pour cela il faudrait :
      
      - Avoir un bouton "activer l'inaltérabilité" dans la configuration de l'exercice en cours
      - Une fois le bouton activé (avec confirmation) il n'est plus possible de le désactiver
      - A l'activation, une signature cryptographique (HMAC?) de chaque écriture est stockée dans dans la table compta_operations.
      - A l'activation, ajout de triggers pour empêcher toute modification des données de la table operations (DELETE ou UPDATE): https://stackoverflow.com/questions/12911947/read-only-fields-in-sqlite3-database-table
      - Après activation, chaque opération est signée
      - Ajouter un bouton "Corriger" sur la page d'une opération, en plus de "Modifier" et "Supprimer" (ou à la place de, si "activer l'inaltérabilité" est coché) qui pré-remplirait un formulaire de saisie pour inverser l'opération.
      
    2. login: "bohwaz"
    3. mimetype: "text/x-fossil-plain"
    4. severity initialized to: "Minor"
    5. status initialized to: "Open"
    6. title initialized to: "Compta: ajout option "inaltérabilité""
    7. type initialized to: "Feature_Request"
  2. Ticket change [6ad6b2fa22] (rid 4918) by bohwaz on 2017-07-14 03:29:55:

    1. icomment:
      Dépends de [c20546bb90] : stockage de monnaie en integer et de la possibilité de valider les écritures (par défaut non validées).
      
      Voir aussi comme idées pour la signature de chaîne : Chronicle de ParagonIE [https://paragonie.com/blog/2017/07/chronicle-will-make-you-question-need-for-blockchain-technology]
      
      Code : [https://github.com/paragonie/chronicle/blob/master/src/Chronicle/Chronicle.php]
      
      Qui utilise Blakechain : [https://github.com/paragonie/blakechain/blob/master/src/Verifier.php]
      
      L'idée intéressante est que chaque ligne de la base de données comprend :
      - hash(row.join())
      - hash(previous_line_hash . current_line_hash)
      - summary hash (hash of all the previous lines)
      - summary hash state (??)
      - signature of the current line, using a public key
      - public key
      
    2. login: "bohwaz"
    3. mimetype: "text/x-fossil-plain"
    4. priority changed to: "Immediate"
    5. resolution changed to: "Open"
    6. title changed to:
      Compta: ajout option "inaltérabilité" (signature de chaîne)
      
  3. Ticket change [b446efd804] (rid 22377) by bohwaz on 2023-02-12 23:30:20:

    1. icomment:
      Fait dans la branche dev via le blocage d'écriture.
      
    2. login: "bohwaz"
    3. mimetype: "text/x-markdown"
    4. resolution changed to: "Fixed"
    5. severity changed to: "Critique"
    6. status changed to: "Fixed"
    7. type changed to: "Bug"