Indépendance et intégrité d'un document

57 views
Skip to first unread message

Fabien Castarède

unread,
Jan 21, 2016, 4:30:52 AM1/21/16
to tryton-fr
Bonjour,

Je souhaitais avoir votre avis sur la nécessité ou pas que les données d'un document soient indépendantes des relations de ce document, une fois que ce document a été validé. Par exemple, une facture dont l'état est "Validée", "Postée", ou "Payée". Ou une vente qui a été validée. Aujourd'hui je remarque que je n'ai pas la possibilité de supprimer une adresse d'un tiers qui a été utilisée dans une vente ou une facture (normal puisqu'elle est liée à ces documents). Par contre, je peux la modifier et lorsque j'ouvre une facture qui a utilisé cette adresse, l'adresse affichée comporte la modification (normal puisque c'est l'adresse liée). En revanche le rapport qui a été généré avant la modification n'est pas altéré.

Il me semble qu'un document, une fois validé, ne devrait plus pouvoir être altéré. Cela permettrait également de supprimer ou modifier des informations qui ne sont plus à jour dans des entités d'origine liées à ce document. Par exemple, une adresse qui n'est plus utilisée par un tiers, on aurait la possibilité de la supprimer (ou de la modifier), au lieu d'en créer une nouvelle et de garder l'ancienne qui n'est plus valide, sans altérer les documents qui ont utilisé cette adresse (qui était valide à ce moment là).

Qu'en pensez-vous ?

Cédric Krier

unread,
Jan 21, 2016, 5:10:05 AM1/21/16
to tryton-fr
C'est une problématique qui a déjà été discutée sur Tryton.
La solution proposée est:

Pour la suppression d'enregistrement, on utilise la suppression
logique (champs active) qui simule la suppression de celui-ci tout
en le gardant dans la base de données pour les clés étrangères.

Pour la modification d'enregistrement après validation, on utilise
l'« historisation » des enregistrements. C'est à dire que Tryton
fait une copie dans une table '__history' des enregistrement avant
modification. Ensuite on peut aller lire avec l'API standard les
enregistrement à une date définie dans le context '_datetime'.
Le module "account_invoice_history" implémente cette technique pour
les factures.

Ces solutions ont l'avantage de limiter les copies et peuvent être
implémentées de façon modulaire sur n'importe quel modèle sans que
celui-ci ne doive être conçu pour.

--
Cédric Krier - B2CK SPRL
Email/Jabber: cedric...@b2ck.com
Tel: +32 472 54 46 59
Website: http://www.b2ck.com/

Fabien Castarède

unread,
Jan 22, 2016, 1:00:13 PM1/22/16
to tryton-fr
Ok, donc on n'utilise pas la fonction de suppression d'un enregistrement, mais on le rend "inactif" en décochant le champ "Actif". Ça marche
 

    Pour la modification d'enregistrement après validation, on utilise
    l'« historisation » des enregistrements. C'est à dire que Tryton
    fait une copie dans une table '__history' des enregistrement avant
    modification. Ensuite on peut aller lire avec l'API standard les
    enregistrement à une date définie dans le context '_datetime'.
    Le module "account_invoice_history" implémente cette technique pour
    les factures.  

Ces solutions ont l'avantage de limiter les copies et peuvent être
implémentées de façon modulaire sur n'importe quel modèle sans que
celui-ci ne doive être conçu pour.

Merci pour ta réponse. Excellent.
Reply all
Reply to author
Forward
0 new messages