# US-MGN-008-002-002: Gestionar Jerarquía de Cuentas Analíticas

**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:** 2
**Sprint:** Sprint 18
**Estado:** Ready for Development
**Fecha:** 2025-11-24

---

## User Story
**Como** contador, **Quiero** organizar cuentas analíticas en jerarquías (padre-hijo), **Para** consolidar análisis por niveles.

## Descripción Detallada
Jerarquía permite:
- Proyecto → Subproyectos → Tareas
- Departamento → Sub-departamentos
- Consolidación automática de cifras

Ejemplo:
```
Proyecto A (parent)
├── Subproy A.1 (child)
└── Subproy A.2 (child)
```

## Criterios de Aceptación

### Escenario 1: Crear cuenta con parent
**Dado que** cuenta "Proyecto A" existe,
**Cuando** creo cuenta "Subproy A.1" con parent_id="Proyecto A",
**Entonces** sistema crea jerarquía padre-hijo.

### Escenario 2: No permitir ciclos
**Dado que** Cuenta A es hijo de B,
**Cuando** intento hacer B hijo de A,
**Entonces** error 400 "Ciclo detectado en jerarquía".

### Escenario 3: Consolidar totales
**Dado que** Subproy A.1 tiene $1000, A.2 tiene $500,
**Cuando** consulto Proyecto A,
**Entonces** total consolidado = $1500.

## Reglas de Negocio
- **RN-1:** parent_id debe ser del mismo plan.
- **RN-2:** No se permiten ciclos.
- **RN-3:** Consolidación automática en reportes.

## Tareas Técnicas

### Backend
- [ ] Validar parent_id mismo plan
- [ ] Validar no ciclos (recursión)
- [ ] Service: `AnalyticalAccountService.getHierarchy(accountId)`
- [ ] Service: `AnalyticalAccountService.getConsolidated(accountId)`

### Frontend
- [ ] Componente: `AccountHierarchyTree.tsx` (árbol visual)
- [ ] Drag & drop para reasignar padres
- [ ] Vista consolidada

### Database
- [ ] Self-FK: parent_id → accounts.id
- [ ] Check constraint: parent_id != id

## Estimación Detallada
| Tarea | Horas |
|-------|-------|
| Backend | 1 |
| Frontend | 1 |
| Testing | 0.5 |
| **TOTAL** | **2.5 horas = 2 SP** |

## Definition of Done
- [ ] Jerarquía funcional
- [ ] No ciclos validados
- [ ] Consolidación correcta
- [ ] QA/PO aprobado

## Referencias
- [RF-MGN-008-001](../../02-modelado/requerimientos-funcionales/mgn-008/RF-MGN-008-001-gestión-de-cuentas-analíticas.md)
