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

    1. Change icomment to:
      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. Change login to "bohwaz"
    3. Change mimetype to "text/x-fossil-plain"
    4. Change severity to "Minor"
    5. Change status to "Open"
    6. Change title to "Compta: ajout option "inaltérabilité""
    7. Change type to "Feature_Request"
  2. Ticket change [6ad6b2fa22] (rid 4918) by bohwaz on 2017-07-14 03:29:55:

    1. Change icomment to:
      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. Change login to "bohwaz"
    3. Change mimetype to "text/x-fossil-plain"
    4. Change priority to "Immediate"
    5. Change resolution to "Open"
    6. Change title to:
      Compta: ajout option "inaltérabilité" (signature de chaîne)