RF65: Usuario consulta declaración anual
Descripción
Como usuario autenticado, quiero consultar el borrador de mi declaración anual generado por el sistema (RF63) para revisar mi estimación fiscal y el detalle de ingresos, gastos deducibles e impuestos.
Muestra el resultado consolidado con su descargo de responsabilidad. Solo el dueño puede consultarlo; los datos fiscales se descifran en memoria para mostrarse.
| Campo | Valor |
|---|---|
| Módulo | Accounting Module |
| Actor | Usuario autenticado |
| Endpoint | GET /accounting/annual-return/:fiscalYear |
| Precondiciones | Sesión activa; existe un borrador generado para el ejercicio |
| Prioridad | Baja (post-MVP) |
| Etapa | Por definirse |
| Requisitos relacionados | RF63, RF64, RF66 |
Reglas de negocio
- RN-65.1 — Solo el dueño (
user_iddel JWT) puede consultar su declaración (aislamiento de datos). - RN-65.2 — Se muestra el resumen (ingresos, deducciones, impuesto estimado) y el detalle por factura.
- RN-65.3 — Siempre se muestra el descargo de responsabilidad (borrador, no oficial).
- RN-65.4 — Si no existe borrador para el ejercicio, se ofrece generarlo (RF63).
Validaciones de entrada
| Campo | Reglas | Mensaje de error |
|---|---|---|
fiscalYear | Obligatorio. Año fiscal válido. | "Selecciona un ejercicio fiscal válido." |
Authorization | Bearer válido. | "Sesión no válida." (401) |
Criterios de aceptación
Escenario 1: Consulta exitosa
Dado que tengo un borrador generado para el ejercicio,
Cuando lo consulto,
Entonces el sistema lo descifra y muestra el resumen y el detalle,
Y responde 200 OK con el descargo de responsabilidad.
Escenario 2: Sin borrador para el ejercicio
Dado que aún no he generado la declaración del ejercicio, Cuando la consulto, Entonces el sistema ofrece generarla (RF63).
Escenario 3: Aislamiento de datos (seguridad)
Dado que se manipula la petición para ver la declaración de otro usuario,
Cuando el backend procesa,
Entonces usa el user_id del JWT y nunca devuelve datos ajenos.
Criterios no funcionales
- Datos fiscales descifrados solo en memoria; respuesta < 2 s.
- Comunicación TLS 1.2+.