erp-core/docs/05-user-stories/mgn-008/US-MGN-008-002-002-gestionar-jerarquia-cuentas-analiticas.md

2.4 KiB

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

RF Asociado: RF-MGN-008-001 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