2.8 KiB
US-MGN-008-003-001: Asignar Distribuciones Analíticas a Transacciones
RF Asociado: RF-MGN-008-002 Módulo: MGN-008 - Contabilidad Analítica Epic: Distribuciones Analíticas Prioridad: P0 Story Points: 5 Sprint: Sprint 19 Estado: Ready for Development Fecha: 2025-11-24
User Story
Como contador, Quiero asignar distribuciones analíticas a líneas de asientos contables, Para trackear costos/ingresos por dimensiones.
Descripción Detallada
Al crear asiento contable, cada línea puede tener distribución analítica:
- Línea: Cuenta 6.1.01 (Gastos), Monto $1000
- Distribución: Proyecto A (60%), Proyecto B (40%)
- Resultado: $600 a Proy-A, $400 a Proy-B
Criterios de Aceptación
Escenario 1: Asignar distribución simple
Dado que línea contable tiene amount=1000, Cuando asigno Proyecto-A (100%), Entonces sistema crea analytical_line con account_id=Proyecto-A, amount=1000.
Escenario 2: Distribución múltiple
Dado que línea tiene amount=1000, Cuando asigno Proyecto-A (60%), Proyecto-B (40%), Entonces sistema crea 2 analytical_lines: $600 y $400.
Escenario 3: Validar suma 100%
Dado que asigno Proyecto-A (60%), Proyecto-B (30%), Cuando intento guardar, Entonces error 400 "Distribución debe sumar 100%".
Escenario 4: Distribución obligatoria según config
Dado que cuenta contable tiene "analytical_required=true", Cuando intento guardar línea sin distribución, Entonces error 400 "Distribución analítica obligatoria".
Reglas de Negocio
- RN-1: Suma de porcentajes debe ser 100%.
- RN-2: Puede ser obligatoria según configuración de cuenta.
- RN-3: Se replica en cada plan configurado.
Tareas Técnicas
Backend
- Service:
AnalyticalLineService.create(journalLine, distributions) - Validar suma 100%
- Validar obligatoriedad
- Unit tests
Frontend
- Componente:
AnalyticalDistributionInput.tsx - Selector de cuentas analíticas
- Slider/input para porcentajes
- Validación en tiempo real
Database
- Tabla:
analytics.lines(journal_line_id, account_id, amount, percentage) - FK: journal_line_id, account_id
Estimación Detallada
| Tarea | Horas |
|---|---|
| Backend | 2 |
| Frontend | 2 |
| Testing | 2 |
| TOTAL | 6 horas = 5 SP |
Definition of Done
- Distribución funcional
- Validaciones correctas
- Tests >80%
- QA/PO aprobado