# US-MGN-008-001-002: Configurar Dimensiones Multi-nivel **RF Asociado:** [RF-MGN-008-001](../../02-modelado/requerimientos-funcionales/mgn-008/RF-MGN-008-001-gestión-de-cuentas-analíticas.md) **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 --- ## Referencias - [RF-MGN-008-001](../../02-modelado/requerimientos-funcionales/mgn-008/RF-MGN-008-001-gestión-de-cuentas-analíticas.md) - [Traceability](../../02-modelado/trazabilidad/TRACEABILITY-MGN-008.yaml)