3.3 KiB
US-MGN-008-001-002: Configurar Dimensiones Multi-nivel
RF Asociado: RF-MGN-008-001 Módulo: MGN-008 - Contabilidad Analítica Epic: Cuentas Analíticas Prioridad: P1 Story Points: 5 Sprint: Sprint 18 Estado: Ready for Development Fecha: 2025-11-24
User Story
Como contador, Quiero configurar distribuciones analíticas con múltiples dimensiones simultáneas, Para analizar transacciones por proyecto × departamento × categoría en paralelo.
Descripción Detallada
Permite asignar múltiples planes analíticos a una misma transacción:
- Proyecto: "Desarrollo App Mobile"
- Departamento: "IT"
- Categoría: "Desarrollo"
Cada asiento contable puede tener distribución en N dimensiones simultáneas.
Criterios de Aceptación
Escenario 1: Asignar múltiples dimensiones a transacción
Dado que asiento contable tiene línea con amount=1000, Cuando asigno distribución: plan_proyectos=Proj-A (100%), plan_departamentos=IT (100%), Entonces sistema crea 2 líneas analíticas independientes.
Escenario 2: Validar porcentajes suman 100% por plan
Dado que línea tiene plan_proyectos con Proj-A (60%), Proj-B (30%), Cuando intento guardar, Entonces sistema retorna error 400 "Distribución del plan Proyectos debe sumar 100% (actualmente 90%)".
Escenario 3: Distribución automática por defecto
Dado que cuenta contable tiene configuración: "plan_departamentos=IT por defecto", Cuando creo asiento en esa cuenta sin especificar dimensión, Entonces sistema aplica IT automáticamente.
Escenario 4: Reporte multi-dimensional
Dado que transacciones tienen 2 dimensiones (Proyecto × Departamento), Cuando genero reporte P&L por Proyecto × Departamento, Entonces veo matriz: proyectos en filas, departamentos en columnas.
Reglas de Negocio
- RN-1: Una transacción puede tener N planes analíticos.
- RN-2: Cada plan debe sumar 100% de distribución.
- RN-3: Planes son independientes entre sí.
- RN-4: Configuración por defecto en cuenta contable.
Tareas Técnicas
Backend
- Service:
AnalyticalDistributionService.validate(lines, amount) - Service:
AnalyticalDistributionService.apply DefaultDistribution(account) - Validar suma 100% por plan
- Unit tests (>80%)
- Integration tests
Frontend
- Componente:
MultiDimensionalDistributionForm.tsx - Tabla: Plan × Cuenta × Percentage
- Validación en tiempo real
- Component tests
Database
- Tabla:
analytics.distribution_lines(plan_id, account_id, percentage) - Check constraint: percentage <= 100
Estimación Detallada
| Tarea | Horas |
|---|---|
| Backend | 2.5 |
| Frontend | 2.5 |
| Testing | 1.5 |
| TOTAL | 6.5 horas = 5 SP |
Definition of Done
- Multi-dimensión funcional
- Validaciones correctas
- Tests pasando (>80%)
- QA validado
- PO aprobado