Oleada UX 6: Reportes agrupados en familias con rango global persistente y favoritos; Configuracion con auditoria de cambios y simulador de comisiones
This commit is contained in:
60
odoo-addons/skeen_whatsapp/models/config_audit.py
Normal file
60
odoo-addons/skeen_whatsapp/models/config_audit.py
Normal file
@@ -0,0 +1,60 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class SkeenConfigAudit(models.Model):
|
||||
"""Bitácora de cambios en la configuración sensible de la clínica.
|
||||
|
||||
Se escribe desde los endpoints de configuración del frontend (comisiones,
|
||||
tipo de cambio, metas, horarios, roles/permisos, usuarios, catálogos) y
|
||||
registra quién, qué entidad, qué campo y los valores anterior/nuevo.
|
||||
"""
|
||||
_name = 'skeen.config.audit'
|
||||
_description = 'Auditoría de configuración SKEEN'
|
||||
_order = 'date desc, id desc'
|
||||
|
||||
date = fields.Datetime(string='Fecha', default=fields.Datetime.now, index=True)
|
||||
user_login = fields.Char(string='Usuario', index=True)
|
||||
user_name = fields.Char(string='Nombre del usuario')
|
||||
user_role = fields.Char(string='Rol')
|
||||
|
||||
module = fields.Selection([
|
||||
('comisiones', 'Comisiones'),
|
||||
('tipo_cambio', 'Tipo de cambio'),
|
||||
('metas', 'Metas'),
|
||||
('horarios', 'Horarios'),
|
||||
('roles', 'Roles y permisos'),
|
||||
('usuarios', 'Usuarios'),
|
||||
('catalogos', 'Catálogos'),
|
||||
('clinica', 'Clínica'),
|
||||
], string='Módulo', required=True, index=True)
|
||||
|
||||
entity = fields.Char(string='Entidad', index=True,
|
||||
help='Identificador de lo modificado (p. ej. doctor:24, usuario:5)')
|
||||
entity_label = fields.Char(string='Descripción')
|
||||
field = fields.Char(string='Campo')
|
||||
old_value = fields.Text(string='Valor anterior')
|
||||
new_value = fields.Text(string='Valor nuevo')
|
||||
notes = fields.Char(string='Nota')
|
||||
|
||||
@api.model
|
||||
def log_change(self, module, entity, field, old_value=None, new_value=None,
|
||||
entity_label='', notes='', user=None):
|
||||
"""Registra un cambio. `user` es el skeen.frontend.user que lo hizo."""
|
||||
vals = {
|
||||
'module': module,
|
||||
'entity': entity or '',
|
||||
'entity_label': entity_label or '',
|
||||
'field': field or '',
|
||||
'old_value': '' if old_value is None else str(old_value),
|
||||
'new_value': '' if new_value is None else str(new_value),
|
||||
'notes': notes or '',
|
||||
}
|
||||
if user is not None:
|
||||
vals.update({
|
||||
'user_login': getattr(user, 'login', '') or '',
|
||||
'user_name': getattr(user, 'name', '') or '',
|
||||
'user_role': getattr(user, 'role', '') or '',
|
||||
})
|
||||
return self.sudo().create(vals)
|
||||
Reference in New Issue
Block a user