2.5 KiB
US-MGN-008-005-001: CRUD Presupuestos Analíticos
RF Asociado: RF-MGN-008-001 Módulo: MGN-008 - Contabilidad Analítica Epic: Presupuestos Analíticos Prioridad: P1 Story Points: 3 Sprint: Sprint 19 Estado: Ready for Development Fecha: 2025-11-24
User Story
Como gerente, Quiero crear presupuestos para cuentas analíticas, Para controlar gastos/ingresos proyectados vs reales.
Descripción Detallada
Presupuesto analítico define montos proyectados por:
- Cuenta analítica (ej: Proyecto A)
- Período (mensual, trimestral, anual)
- Tipo (ingresos, gastos)
Ejemplo:
- Proyecto A, Q1-2024: Presupuesto Ingresos $100K, Gastos $60K
Criterios de Aceptación
Escenario 1: Crear presupuesto
Dado que Proyecto A existe, Cuando creo presupuesto: account_id=Proyecto-A, period=Q1-2024, budget_revenue=100K, budget_expense=60K, Entonces sistema crea presupuesto exitosamente.
Escenario 2: Presupuesto único por cuenta/período
Dado que ya existe presupuesto para Proyecto-A Q1-2024, Cuando intento crear otro, Entonces error 400 "Ya existe presupuesto para esta cuenta y período".
Escenario 3: Actualizar presupuesto
Dado que presupuesto existe, Cuando actualizo budget_expense=70K, Entonces sistema actualiza y registra en audit_log.
Reglas de Negocio
- RN-1: Presupuesto único por cuenta + período.
- RN-2: Puede ser por mes, trimestre o año.
- RN-3: budget_revenue y budget_expense son opcionales (pueden ser 0).
Tareas Técnicas
Backend
- Endpoint: POST/GET/PUT/DELETE
/api/v1/analytics/budgets - Service:
AnalyticalBudgetService(CRUD) - Validar unicidad cuenta+período
- Unit tests
Frontend
- Página:
AnalyticalBudgetsPage.tsx - Formulario CRUD
- Selector de período
- Component tests
Database
- Tabla:
analytics.budgets(account_id, period_start, period_end, budget_revenue, budget_expense) - Constraint: unique(account_id, period_start, period_end)
Estimación Detallada
| Tarea | Horas |
|---|---|
| Backend | 1.5 |
| Frontend | 1.5 |
| Testing | 1 |
| TOTAL | 4 horas = 3 SP |
Definition of Done
- CRUD completo
- Validaciones aplicadas
- Tests >80%
- QA/PO aprobado