Odoo tiene un log de auditoría que es bastante sencillo y limitado. Su uso es amigable con los usuarios y programadores, pero uno no puede esperar más de el. Entre sus limitaciones se cuentan
- los desarrolladores deben declarar en sus módulos que campos auditar
- los cambios auditados solo se pueden visualizar en el chatter, lo cual hace dificul su reporting a nivel global
Hay módulos de terceros, como por ejemplo auditlog de OCA que mejoran la situación pero no son de todo ideal. Quien les escribe piensa que la solución ideal pasa por desarrollar una herramienta de auditoría en Postgresql, o utilizar una de las ya existentes en la base de datos mencionada.
Ahora, volviendo a lo que brinda Odoo. Si queremos loguear los cambios a un campo en el chatter debemos agregarle el parametro tracking y aparte heredar el modelo de los modelos mail.thread y mail.activiy.mixin. Por ejemplo
class MiModelo(models.Model):
_name = 'mi.modelo'
_inherits = ['mail.thread','mail.activity.mixin']
state = fields.Char('Estado',tracking=True)
Entonces, cada vez que cambiemos el valor del campo state, se logueara el cambio en el chatter. Como podemos visualizar el chatter en el formulario (el unico lugar donde ver los cambios, por eso es una pesadilla hacer reportes sobre los cambios)? Agregando el chatter al formulario de la siguiente manera:
</sheet>
<chatter/>
</form>
Antes se agregaba de otra manera, pero Odoo cambio el chatter a un componente OWL que es mas sencillo de incorporar ahora.
El resultado de esto es cada vez que se cambia el registro, podemos notarlo de la siguiente forma: