# Gestión de aprobaciones

### Introducción

La funcionalidad de **Gestión de usuarios autorizados de aprobación** permite definir, desde **Administración**, qué usuarios pueden ejecutar acciones críticas, como puede ser, la aprobación en facturas.

La configuración permite definir los usuarios autorizados para los ámbitos:

* **Facturas de gasto** (company invoices).
* **Facturas de ingreso** (sale invoices).

Cada ámbito tiene su propia lista de usuarios autorizados. Lo que se configure en uno no afecta al otro.

### Qué problema resuelve

Con esta funcionalidad, el equipo administrativo puede:

* Centralizar quién está habilitado para aprobar o cancelar en cada tipo de factura.
* Aplicar una restricción adicional a permisos cuando hay usuarios configurados.

### Cómo funciona la regla principal

La lógica se basa en una regla simple por ámbito:

* **Lista vacía**: no hay restricción adicional por lista. Se aplican los permisos existentes y reglas de dominio habituales.
* **Lista con usuarios**: solo los usuarios incluidos en esa lista (y que además tengan permiso) pueden ejecutar acciones de aprobación del ámbito correspondiente.

### Acceso y permisos de la pantalla

La pantalla de configuración está disponible en **Administración > Gestión de aprobaciones**

Para operar sobre esta funcionalidad existen dos permisos:

* Permiso de **acceso/visualización**.
* Permiso de **edición** (alta y baja de usuarios autorizados).

Si un usuario no tiene permisos de configuración, no verá la pantalla ni podrá operar sobre estas listas.

### Configuración paso a paso

Flujo recomendado para configurar autorizados:

1. Entrar en **Administración > Gestión de aprobaciones**.
2. Seleccionar el ámbito lateral:
   * Facturas de gasto.
   * Facturas de ingreso.
3. Buscar usuario en el buscador global.
4. Añadir usuario a la lista de autorizados del ámbito seleccionado.
5. Revisar la cuadrícula de autorizados y eliminar los que ya no deban estar.

### Validaciones al añadir usuarios

Al intentar añadir un usuario, el sistema valida:

* Que el usuario existe en el entorno actual.
* Que el usuario está activo.
* Que no exista ya para el mismo ámbito (sin duplicados).

Si alguna validación falla, el alta se rechaza.

### Comportamiento en facturas de gasto

En facturas de gasto, la restricción por lista aplica especialmente al estado **Aprobado**:

* Si hay lista configurada, solo usuarios autorizados pueden llevar la factura a `Aprobada`.
* Un usuario no autorizado no puede seleccionar `Aprobada`.
* Si la factura ya está en `Aprobada`, un usuario no autorizado no puede moverla a otro estado (queda bloqueada para ese usuario).
* Un usuario autorizado sí puede sacarla de `Aprobada`; después vuelven a aplicar las reglas habituales para estados no aprobados.

### Comportamiento en facturas de ingreso

En facturas de ingreso, por diseño de la Ley Antifraude, la aprobación/cancelación se gestiona con acciones de cabecera (no con un selector genérico de estado):

* Las acciones de cabecera (por ejemplo aprobar/anular) respetan permisos + regla de lista por ámbito.
* Con lista vacía, manda el permiso.
* Con lista configurada, además del permiso el usuario debe estar en la lista.

### Persistencia y cambios de rol

La lista almacenada no se limpia automáticamente si:

* Un usuario pasa a inactivo.
* Un usuario pierde permisos por cambio de rol.

En tiempo real, el sistema sigue exigiendo permisos y reglas actuales. Estar en lista por sí solo no concede capacidad de acción si faltan permisos.

### Casos habituales

Escenarios típicos en operación:

* **“Nadie puede aprobar desde lista”**: revisar si el ámbito correcto está seleccionado y si la lista no está vacía con usuarios incorrectos.
* **“Antes podía aprobar y ahora no”**: comprobar permisos del usuario y pertenencia a la lista del ámbito.
* **“No veo la pantalla de administración”**: validar permisos de acceso y edición para Gestión de aprobaciones

### Recomendaciones de uso

* Mantener listas pequeñas y revisadas periódicamente.
* Separar claramente responsables de gasto e ingreso.
* Usar la lista como control adicional, no como sustituto de permisos.
* Verificar siempre el ámbito antes de añadir o quitar usuarios.

### Resultado esperado

Con esta funcionalidad:

* Se gobierna de forma explícita quién puede aprobar/anular por tipo de factura.
* Se reduce riesgo operativo al limitar acciones sensibles a usuarios autorizados.
