# RF-MGN-004-005: Gestión de Facturas de Cliente

**Módulo:** MGN-004 - Financiero Básico
**Prioridad:** P0
**Story Points:** 13
**Estado:** Definido
**Fecha:** 2025-11-23

## Descripción

Sistema debe gestionar facturas de cliente con estados, líneas, impuestos y generación de asientos contables.

## Actores

- **Actor Principal:** Usuario Ventas, Contador
- **Actores Secundarios:** Sistema

## Precondiciones

1. Usuario debe estar autenticado
2. Tenant y empresa deben estar activos
3. Permisos necesarios deben estar asignados

## Flujo Principal

1. Usuario accede a módulo correspondiente
2. Usuario ejecuta acción principal del requerimiento
3. Sistema valida datos de entrada
4. Sistema procesa lógica de negocio
5. Sistema persiste cambios en base de datos
6. Sistema registra auditoría (MGN-014)
7. Sistema notifica a usuarios relevantes (si aplica)
8. Sistema retorna resultado exitoso

## Flujos Alternativos

### FA-1: Validación Fallida
1. Si datos de entrada son inválidos
2. Sistema retorna error 400 con detalles
3. Usuario corrige datos y reintenta

### FA-2: Sin Permisos
1. Si usuario no tiene permisos necesarios
2. Sistema retorna error 403
3. Sistema registra intento en audit log

### FA-3: Registro No Encontrado
1. Si registro solicitado no existe
2. Sistema retorna error 404

## Reglas de Negocio

- **RN-1:** Validaciones de integridad según modelo de datos
- **RN-2:** RLS filtra registros por tenant y empresa
- **RN-3:** Cambios quedan registrados en audit log
- **RN-4:** Notificaciones según configuración de usuario

## Criterios de Aceptación

- [ ] Usuario puede ejecutar funcionalidad principal
- [ ] Sistema valida datos correctamente
- [ ] Cambios persisten en base de datos
- [ ] RLS aplica filtros correctamente
- [ ] Permisos RBAC se validan
- [ ] Auditoría queda registrada
- [ ] Notificaciones se envían (si aplica)

## Entidades Involucradas

- **Principales:** financial.invoices, financial.invoice_lines
- **Relacionadas:** auth.users, core.companies

## Referencias

- [ALCANCE-POR-MODULO.md - MGN-004](../../01-definicion-modulos/ALCANCE-POR-MODULO.md#mgn-004)
- [Database Schema DDL](../database-design/schemas/)
- [Gap Analysis MGN-004](../../01-definicion-modulos/gaps/GAP-ANALYSIS-MGN-004.md)

## Notas Técnicas

- **Patrón Odoo:** Análisis de módulos equivalentes en Odoo
- **Backend:** NestJS Service + Repository Pattern
- **Frontend:** React Component + Hooks
- **Validación:** Class Validator + Custom Validators
- **Testing:** Unit tests + E2E tests

## Dependencias

- **RF Dependientes:**
  - RF-MGN-001-001 (Autenticación)
  - RF-MGN-001-002 (Roles y Permisos)
- **Bloqueante para:** Módulos que consumen esta funcionalidad
