Improved history or report of changes

What I am missing sometimes is an improved history or report of changes.

You can see in /societe/info.php?socid=xxx when the record was created and last edited and by whom. But which data has been changed or deleted?

For example: if someone has edited the name or address of a company, there is no way to recognize these changes. Or to look back in the past. Even if there was a change of tax numbers or similar…

Running into the same problem. Technical records sometimes need to be preserved. The challange is to keep track on former versions: what has changed.
Currently I see two options:

1) Duplication of objects with versioning

  • Extra field for version (int)
  • Extra field for modification (text)
  • The original object is canceled and set into a mode where it can be viewed but not altered.
  • The original object gets cloned and all the changes are written into the modification field, version is increased by 1
    Problem: I think the framework doesn’t support this. In lists and statistics the old objects will still be taken into account and the old objects may still be altered.
    Advantage: No extra fields required other than version and modifications.

2) Add one (1) extra field for every field that needs a history

  • Extra field for version (int)
  • Extra field for modification (text)
  • One extra field for every field where a history is required (field_name_OLD)
  • Once an object is validated the fields are compared and where they are different it is written into the field. The version is increased by one.
  • The report of this object is printed with ‘revX’ appended to the file name, where X is the version. The report also has the modification-field printed.

For both cases it is possible to use triggers and the Event-Log to keep track on all changes on an object.

I would prefere option 1 since it is done with less effort - if it would be supported by Dolibarr. I don’t see this so I have to go for option 2.
Trying to implement this here: LIMS for Dolibarr

Any other ideas? Recommendations?