# US-MGN-008-002-001: CRUD Cuentas Analíticas por Plan

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

---

## User Story
**Como** contador, **Quiero** crear cuentas analíticas dentro de cada plan, **Para** registrar transacciones en dimensiones específicas.

## Descripción Detallada
Cuenta analítica representa un elemento dentro de un plan:
- Plan "Proyectos" → Cuentas: "Proyecto A", "Proyecto B"
- Plan "Departamentos" → Cuentas: "IT", "Ventas", "Marketing"

Cada cuenta tiene: código, nombre, plan_id, activo, parent_id (jerarquía opcional).

## Criterios de Aceptación

### Escenario 1: Crear cuenta analítica
**Dado que** plan id=1 existe,
**Cuando** creo cuenta con code="PROJ-A", name="Proyecto A", plan_id=1,
**Entonces** sistema crea cuenta exitosamente.

### Escenario 2: Código único por plan
**Dado que** cuenta "PROJ-A" existe en plan_id=1,
**Cuando** intento crear otra con mismo código en plan_id=1,
**Entonces** error 400 "Código ya existe en este plan".

### Escenario 3: Mismo código en diferente plan (permitido)
**Dado que** cuenta "IT" existe en plan="Departamentos",
**Cuando** creo cuenta "IT" en plan="Categorías",
**Entonces** sistema permite (códigos independientes por plan).

## Reglas de Negocio
- **RN-1:** Código único por plan.
- **RN-2:** Cuenta pertenece a un solo plan.
- **RN-3:** Cuenta puede tener parent_id (jerarquía).

## Tareas Técnicas

### Backend
- [ ] Endpoint: POST/GET/PUT/DELETE `/api/v1/analytics/accounts`
- [ ] Service: `AnalyticalAccountService` (CRUD)
- [ ] Validar code único por plan
- [ ] Unit/Integration tests

### Frontend
- [ ] Página: `AnalyticalAccountsPage.tsx`
- [ ] Formulario CRUD
- [ ] Filtro por plan
- [ ] Component tests

### Database
- [ ] Tabla: `analytics.accounts` (id, plan_id, code, name, parent_id, active)
- [ ] Constraint: unique(plan_id, code)
- [ ] FK: plan_id, parent_id

## Estimación Detallada
| Tarea | Horas |
|-------|-------|
| Backend | 1.5 |
| Frontend | 1.5 |
| Testing | 1 |
| **TOTAL** | **4 horas = 3 SP** |

## Definition of Done
- [ ] CRUD completo
- [ ] Tests >80%
- [ ] Validaciones aplicadas
- [ ] 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)
- [Traceability](../../02-modelado/trazabilidad/TRACEABILITY-MGN-008.yaml)
